{"id":19199815,"url":"https://github.com/Rose-STL-Lab/AtlasD","last_synced_at":"2025-06-12T02:10:23.283Z","repository":{"id":244840396,"uuid":"721481400","full_name":"Rose-STL-Lab/ATLAS","owner":"Rose-STL-Lab","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-26T19:38:48.000Z","size":4705,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T03:46:06.795Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rose-STL-Lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-21T06:37:31.000Z","updated_at":"2025-01-30T06:08:45.000Z","dependencies_parsed_at":"2024-06-17T20:27:35.751Z","dependency_job_id":"9b8346f7-9881-44c9-92f0-a4b3cc870bdd","html_url":"https://github.com/Rose-STL-Lab/ATLAS","commit_stats":null,"previous_names":["enigmurl/group-net","rose-stl-lab/group-net","rose-stl-lab/atlas"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rose-STL-Lab%2FATLAS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rose-STL-Lab%2FATLAS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rose-STL-Lab%2FATLAS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rose-STL-Lab%2FATLAS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rose-STL-Lab","download_url":"https://codeload.github.com/Rose-STL-Lab/ATLAS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249003938,"owners_count":21196794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T12:29:05.586Z","updated_at":"2025-06-12T02:10:23.276Z","avatar_url":"https://github.com/Rose-STL-Lab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AuTomatic LocAl Symmetry Discovery (AtlasD)\n\n![heat equation atlas equivariance](figures/heat_equation.png)\n\n## Installation\n\nAfter (optionally) setting up a virtual environment, run the following. Note that we ran our experiments using python3.11.\n```\npip install -r requirements.txt\n```\n\n## Running Experiments\nFor all experiments, if you already have a good predictor from a previous run, you can use the flag `--reuse_predictor` to avoid having to retrain a new one.\n\n### Top Tagging\n\nDownload dataset from [here](https://zenodo.org/record/2603256) to `data/top-tagging`.\n\nDiscover Lie algebra. You can optionally use the `--standard_basis` flag to report results in standard form. However, this sometimes produces duplicate generators.\n```\npython3 experiment_toptagging.py --task discover_algebra --epochs 10 --fixed_seed\n```\nexpected results: so(1, 3) basis with possibly an additional scaling generator.\n\nAfter discovering Lie algebra (and more importantly, having a good predictor), you can discover the various cosets.\n```\npython3 experiment_toptagging.py --task discover_cosets --epochs 3 --reuse_predictor --fixed_seed\n```\nexpected results: two reported cosets: identity and parity representatives.\n\nAlternatively, you can discover both in one go. The downside is that the epoch count is the same for both so the cosets portion may take a while.\n```\npython3 experiment_toptagging.py --task discover --epochs 10 --fixed_seed\n```\n\nTo run the downstream tasks, we refer to [LieGAN](https://github.com/Rose-STL-Lab/LieGAN).\n\n### PDE\nDataset is simulated on demand and nothing needs to be downloaded.\n\nDiscover algebra\n```\npython3 experiment_pde.py --task discover_algebra --epochs 10 --fixed_seed\n```\nexpected results: so2 generator.\n\nDiscover cosets\n```\npython3 experiment_pde.py --task discover_cosets --epochs 10 --fixed_seed\n```\nexpected results: 2 cosets: identity and reflection.\n\nBy default the first atlas (19 charts) is used. To use the second atlas (3 charts) instead, pass ```--atlas 2``` to either command.\n\n### MNIST\nDataset should be downloaded automatically upon first run.\n\nDiscover Lie algebra\n```\npython3 experiment_mnist.py --task discover --epochs 10 --fixed_seed\n```\nexpected results: generator of so(2).\n\nUse SO3LieGAN to attempt to discover global symmetry\n```\npython3 experiment_mnist.py --task liegan_discover --epochs 10 --fixed_seed\n```\nexpected results: either trivial group (i.e. low magnitude) or random rotation. Generally, we observe the output is sensitive to the initial condition.\n\nRun baseline CNN with no equivariance\n```\npython3 experiment_mnist.py --task downstream_baseline --epochs 100  --fixed_seed\n```\nexpected results: test accuracy of around ~70%.\n\nRun downstream CNN that uses the discovered atlas equivariance group\n```\npython3 experiment_mnist.py --task downstream_discovered --epochs 100  --fixed_seed\n```\nexpected results: test accuracy of around ~94%.\n\n### Climate\n\nDownload dataset from [here](https://portal.nersc.gov/project/ClimateNet/climatenet_new/). Put into `data/climate/{train,test}` directory\n\nDiscover Lie Algebra (optionally use `--standard_basis` flag)\n```\npython3 experiment_climate.py --task discover --epochs 30 --fixed_seed\n```\nexpected results: 4 dimensional Lie algebra with no major bias in any direction.\n\nRun baseline gauge equivariant CNN with SO(2) gauge group:\n```\npython3 experiment_climate.py --task downstream_baseline --epochs 20 --batch_size 4 --fixed_seed\n```\nexpected results: roughly 0.48 mean iou.\n\nRun downstream gauge equvariant CNN with GL+(2) gauge group (in reality it's not perfectly GL+(2), but instead uses uniform kernels, which is the closest one can get to GL+(2) steerable kernels):\n\n```\npython3 experiment_climate.py --task downstream_discovered --epochs 20 --batch_size 4 --fixed_seed\n```\nexpected results: roughly 0.48 mean iou (essentialy comparable performance to baseline, with 7x less parameters).\n\n### Custom Identity Component\nWhen discovering cosets, the model must use an already discovered Lie algebra to determine the identity component. In our work, this is hard coded based on a result the authors ran manually. If you would like to use your own discovered version, replace the appropriate tensors (lines 160 and 196/199 respectively) in ```experiment_toptagging.py``` and/or ```experiment_pde.py```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRose-STL-Lab%2FAtlasD","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRose-STL-Lab%2FAtlasD","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRose-STL-Lab%2FAtlasD/lists"}