{"id":32418097,"url":"https://github.com/atomtomate/equivalenceclassesconstructor.jl","last_synced_at":"2025-10-25T16:49:51.889Z","repository":{"id":43675557,"uuid":"312597876","full_name":"Atomtomate/EquivalenceClassesConstructor.jl","owner":"Atomtomate","description":"Construction of minimal set of representatives from a given set, under a number of equivalence relations. A mapping back to the original set is also computed.","archived":false,"fork":false,"pushed_at":"2025-05-27T14:03:45.000Z","size":282,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-27T15:20:54.946Z","etag":null,"topics":["auxiliary","numerics"],"latest_commit_sha":null,"homepage":"https://juliansbastelecke.com/EquivalenceClasses/Introduction","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Atomtomate.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2020-11-13T14:28:31.000Z","updated_at":"2025-05-27T14:04:00.000Z","dependencies_parsed_at":"2024-07-15T17:22:12.254Z","dependency_job_id":null,"html_url":"https://github.com/Atomtomate/EquivalenceClassesConstructor.jl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Atomtomate/EquivalenceClassesConstructor.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Atomtomate%2FEquivalenceClassesConstructor.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Atomtomate%2FEquivalenceClassesConstructor.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Atomtomate%2FEquivalenceClassesConstructor.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Atomtomate%2FEquivalenceClassesConstructor.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Atomtomate","download_url":"https://codeload.github.com/Atomtomate/EquivalenceClassesConstructor.jl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Atomtomate%2FEquivalenceClassesConstructor.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280987561,"owners_count":26425342,"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","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["auxiliary","numerics"],"created_at":"2025-10-25T16:49:50.943Z","updated_at":"2025-10-25T16:49:51.884Z","avatar_url":"https://github.com/Atomtomate.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"Equivalence Classes Constructor\n===========\n\nThis Project aims to provide a tool package that can construct equivalence classes from symmetry predicates over\na given set or mappings between elements.\nThe reason being that subsequent calculations may be sped up by only considering one representative of each\nequivalence class.\n\nThis code contains collection of methods that are able to construct mappings between full and reduced sets. \nSpecifically, for any indices `x, y` in some given set `vl` the known symmetries are given as input in the \nform of predicates, i.e. `p(x,y)` \u0026#8712; `{true, false}` or in form of mappings `m(x) = y`.\nThe latter greatly increases performance but may lead to unexpected behavior with non monotonic mappings\u003csup\u003e[1](#footnote1)\u003c/sup\u003e. \nAs result, the original set `vl` is supplemented with a reduced set `vl_red` and a mapping `expand_vl` which\ncan be used to expand subsequent calculations over the reduced set back to the full one.\n\n\n|     Build Status    |      Coverage      |  Documentation |      Social    |\n| ------------------- |:------------------:| :-------------:| :-------------:|\n| [![Build Status](https://github.com/Atomtomate/EquivalenceClassesConstructor.jl/workflows/CI/badge.svg)](https://github.com/Atomtomate/EquivalenceClassesConstructor.jl/actions) | [![Coverage](https://codecov.io/gh/Atomtomate/EquivalenceClassesConstructor.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/Atomtomate/EquivalenceClassesConstructor.jl) | [![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://Atomtomate.github.io/EquivalenceClassesConstructor.jl/stable) |[![Gitter](https://badges.gitter.im/JuliansBastelecke/EquivalenceClasses.svg)](https://gitter.im/JuliansBastelecke/EquivalenceClasses?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge) |\n\n\nSetup\n-----------\n\n\n\n\nBasic Usage\n-----------\n\nBy default, the constructor of the `EquivalenceClasses` will do the heavy lifting. You should therefore expect \nthis line of the code to use up substential amount of compute time for large inputs.\nThe first step is to define a seg `S` and a relationship between elements of `S`.\n\n```\nusing EquivalenceClassesConstructor\n\nS = -4:3\nm1 = Mapping(x -\u003e [-x])\np1 = Predicate((x,y) -\u003e x == -y)\n```\nIn cases where a mapping is known, it should be prefered over predicates since it requires substantially less evaluation time.\nOnce the relationships and grid are defined we can compute a minimal set of representatives from all equivalence classes of `S`\nunder `m1` or `p1`.\n```\neqc = EquivalenceClasses(m1, S)\neqc_2 = EquivalenceClasses(p1, S)\n```\nBoth computations should yield a minimal set and a mapping back to `S`.\nOrdering is not guaranteed, but can be forced by adding the optional parameter `sorted=true` to the `EquivalenceClasses`\nconstructor.\n\nSince the output is most likely part of a larger computation, the package provides some IO options. For example as fixed width\nhuman readable files.\n```\nopen(\"eqc_out.txt\", \"w\") do io\n    write_fixed_width(io, eqc)\nend;\n```\n\nExamples\n-----------\n\n`VertexReducedGrid.jl` constructs a minimal set for the input vertex of ['LadderDGA.jl'](https://github.com/Atomtomate/LadderDGA.jl). \n\n\n\u003ca name=\"footnote1\"\u003e1\u003c/a\u003e: The reason being, that `m(m(x))` may lie in `vl` but `m(x))` may not, forcing the algorithm to terminate.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomtomate%2Fequivalenceclassesconstructor.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatomtomate%2Fequivalenceclassesconstructor.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomtomate%2Fequivalenceclassesconstructor.jl/lists"}