Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap #1

Open
18 of 24 tasks
leifdenby opened this issue May 1, 2024 · 2 comments
Open
18 of 24 tasks

Roadmap #1

leifdenby opened this issue May 1, 2024 · 2 comments

Comments

@leifdenby
Copy link
Member

leifdenby commented May 1, 2024

v0.3.0

  • add support for lat/lon coordinates
    Reviewer: @leifdenby
    • support for creating mesh from lat/lon grid coordinates by using a local equal area projection
    • add support for plotting on maps with cartopy when coordinates are lat/lon rather than cartesian
  • decoding mask option (which allows for a different set of nodes in input vs output of graph)
    Reviewer: @SimonKamuk

Other Issues

  • add optional support for faster graph backend, for example graph-tool with underlying routines written in c++. Should wrap graph-tool digraph representation in new class wmg.graphtool.WrappedDiGraph which behaves like a networkx.DiGraph for the operations we need
  • add 3D visualisation using the Plotly based routines in https://github.com/joeloskarsson/neural-lam/blob/main/plot_graph.py
    Reviewer: @joeloskarsson, @sadamov
  • remove the assumption that the input grid is regular (i.e. that the input coordinates have shape [2, nx, ny]) and instead make it so mesh node coordinates can be computed from bounding box of input coordinates (or something like that)
    • Implement a triangular mesh

Archive

v0.2.0

Reviewer: @SimonKamuk

  • allow for specifying rel_max_dist when connecting graphs using within_radius method.
  • change the refinement_factor argument into grid_refinement_factor and level_refinement_factor
  • in hierarchical graphs, make sure that the grid is only connected to the bottom level of the hierarchy when g2m and m2g are created.
  • change default archetypes to use new options and match the graph creation from neural-lam.
  • create different number of mesh nodes in x- and y-direction.
  • implement new method for graph creation called containing_rectangle

v0.1.0

  • graph creation
    • mesh creation
      • support for cartesian grid coordinates
    • graph archetypes
      • Keisler nearest-neighbour
      • GraphCast multi-range
      • Oscarsson hierarchical
  • graph visualisation
    • 2D using matplotlib+networkx with node and edge rendering with arched directed edges and colouring of edges and
      nodes by attribute value
  • graph splitting
    • split graph by attribute value
  • saving graphs
    • pytorch-geometric format for neural-lam (uses torch.pickle and specific splitting of graph and filename format)
    • pickle of networkx.DiGraph objects
  • readme
    • install instructions, detailing optional dependency on pytorch and pytorch geometric
    • background on graph-based weather models and design of package
    • package module overview
@leifdenby leifdenby pinned this issue May 1, 2024
@leifdenby
Copy link
Member Author

@joeloskarsson I am happy to revisit this roadmap to create a new release with just the PRs you have been working on. Maybe you could see if you would like to have a tagged release at some point and let me know? I can always push the functionality I mention above to later version numbers. I only made the roadmap to give an idea of features I would like to add and in what order

@joeloskarsson
Copy link
Contributor

joeloskarsson commented Sep 12, 2024

Yes it would probably be good to have the things I am working on / planning to work on in here. I don't have any strong opinions about the ordering of these things, or creating specific releases, so I'll let you plan that out. But I'll list here the things I have been doing and are planning to do, so you can add them to the roadmap:

Done / on the way

Planned (roughly in this order)

  • Create "better" strategy for m2g-connection than 4-nearest-neighbors, that is close to GraphCast strategy but for a quadrilateral LAM mesh graph. Specifically, find the "square" in the mesh containing the grid node and connect it to the four corner mesh nodes. Connect grid nodes outside the mesh bounding box only to the two closest neighbors. Add containing_rectangle graph connection method for m2g #28
  • (already on the roadmap) Remove the assumption that the input grid is regular Allow non-regularly gridded and lat-lon coordinates  #32
  • Triangular mesh graphs, by similar type of refinement as in GraphCast.

Maybe @TomasLandelius would want to also add an entry about the SOM-based graph creation discussed here: mllam/neural-lam#4 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants