Coder Social home page Coder Social logo

equationdisco's Introduction

🚧 🚧 M2LInES Equation discovery package. 🚧 🚧

This repo will house the M2LInES equation discovery repo, and is under construction.

Who is this package for?

TODO: Populate.

Authors and contributors

The code in this repository was originally developed by Andrew Ross and Pavel Perezhogin, in this repository, for use in the publication: Benchmarking of machine learning ocean parameterizations in an idealized model (published in JAMES, https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2022MS003258).

It is currently being worked on by Jim Denholm and Andrew Ross, along with other members of the ICCS and M2LInES.

License

The work is available under an MIT License; see the license.

equationdisco's People

Contributors

jdenholm avatar asross avatar

Watchers

Dominic Orchard avatar Ben Orchard avatar Alistair Adcroft avatar

Forkers

willychap

equationdisco's Issues

Breaking the pyqg dependency

The utils.py currently depends on the pyqg repository, but Laure says she would like this equation discovery repository to be completely independent of pyqg .

  • Is dropping the pyqg dependency definitely what we want to achieve?
  • How can we refactor/redesign this repository such that it is standalone with no pyqg dependency?

Review CI

Would you mind taking a look at the basic GitHub workflows and checking they are okay, please? If so I will create a dev branch.

Distribution of this repository

How should we distribute this repository?

Options:

  • Should we release it as a PyPI package?
  • Should we release it on a conda channel?
  • Should is just stay in a git repo with clear instructions on how to install it?

Refactoring and code quality

After moving the required modules—hybrid_symbolic.py and utils.py—across from pyqg_parameterization_benchmarks, the first useful thing we can do is add some basic pythonic code quality measures:

  • Docstrings: make it clear to a general user what each function does and the arguments it requires.
  • Type-hinting: allows us to lint the code with mypy in order to make sure we don't pass arguments of the wrong type to any functions.
  • Apply Pylint: this means the code will comply with most up-to-date python encouraged practises PEP8, and will present in a standard and readable way.
  • Apply black: black is perhaps the most-used Python code formatter and will standardise the code's appearance across the entire repo, making it conform to a standard.
  • Apply pydocstyle with numpy convention.

Get demo notebook working

When we are finished refactoring the code ported over from the original repo, the next step will be to get the demo notebook working.

Minimal Testing

The original https://github.com/m2lines/pyqg_parameterization_benchmarks repo does not contain unit tests for the equation discovery module.

A minimal test could be defined to simply import the refactored module and ensure no errors occur.

A secondary functional test could be created by considering the Hybrid Symbolic notebook and using a statistical check to ensure that given the example input used in the notebook an expected value is produced. This would require codifying the check against the visual outputs that are produced in the notebook example.

Addition of some minimal testing would allow the development of more advanced unit tests at a later date and would ensure that a minimal set of tests exists to build a CI pipeline. Eg. #1

Review license

Would you mind taking a look at the license and checking it's okay, please? I'm happy to make any changes you'd like.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.