{"id":37706579,"url":"https://github.com/jkeger/seagen","last_synced_at":"2026-01-16T13:09:18.101Z","repository":{"id":57465057,"uuid":"128828775","full_name":"jkeger/seagen","owner":"jkeger","description":"Stretched Equal Area (SEA) Generator - Make spherically symmetric arrangements of particles with accurate particle densities, e.g. for SPH initial conditions that precisely match an arbitrary density profile (Kegerreis et al. 2019, MNRAS 487:4, https://doi.org/10.1093/mnras/stz1606). See also https://github.com/srbonilla/WoMa for making the initial profiles, placing particles with SEAGen, and modifications for spinning planets!","archived":false,"fork":false,"pushed_at":"2024-04-20T22:42:27.000Z","size":146,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-30T17:35:24.851Z","etag":null,"topics":["arrangement","density","particles","python","shell","sph","sphere"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jkeger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-09T20:17:58.000Z","updated_at":"2024-09-02T11:34:12.000Z","dependencies_parsed_at":"2022-09-12T22:50:49.578Z","dependency_job_id":null,"html_url":"https://github.com/jkeger/seagen","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jkeger/seagen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkeger%2Fseagen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkeger%2Fseagen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkeger%2Fseagen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkeger%2Fseagen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkeger","download_url":"https://codeload.github.com/jkeger/seagen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkeger%2Fseagen/sbom","scorecard":{"id":522410,"data":{"date":"2025-08-11","repo":{"name":"github.com/jkeger/seagen","commit":"343361931e13e56095b716292196e3d37c385594"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-20T03:23:42.239Z","repository_id":57465057,"created_at":"2025-08-20T03:23:42.239Z","updated_at":"2025-08-20T03:23:42.239Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["arrangement","density","particles","python","shell","sph","sphere"],"created_at":"2026-01-16T13:09:17.961Z","updated_at":"2026-01-16T13:09:18.090Z","avatar_url":"https://github.com/jkeger.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"SEAGen\n======\n\nA python implementation of the stretched equal area (SEA) algorithm for\ngenerating spherically symmetric arrangements of particles with accurate\nparticle densities, e.g. for SPH initial conditions that precisely match an\narbitrary density profile, as presented in Kegerreis et al. (2019), MNRAS 487:4,\n5029-5040, https://doi.org/10.1093/mnras/stz1606.\n\nSee also https://github.com/srbonilla/WoMa for making input planetary profiles,\nplacing particles with SEAGen, and modifications for spinning bodies.\n\nJacob Kegerreis (2020) jacob.kegerreis@durham.ac.uk  \nJosh Borrow\n\nVisit https://github.com/jkeger/seagen to download the code including examples\nand for support.\n\nThis program has been tested for a wide range of cases but not exhaustively. If\nyou find any bugs, potential improvements, or features worth adding, then please\nlet us know!\n\n\nContents\n--------\n+ `seagen.py` The main program classes and functions.\n+ `examples.py` Examples to demonstrate how to use the SEAGen module.\n+ `setup.py`, `setup.cfg`, `__init__.py`, `MANIFEST.in` Python package files.\n+ `LICENSE.txt` GNU general public license v3+.\n\n\nBasic Usage\n-----------\n+ See the doc strings in `seagen.py` for all the details.\n+ Create a single shell of particles and print their positions:\n    ```python\n    import seagen\n    N = 100\n    r = 1\n\n    particles = seagen.GenShell(N, r)\n\n    print(particles.x, particles.y, particles.z)\n    ```\n+ Create a full sphere of particles on a simple density profile and print their\n    positions and masses:\n    ```python\n    import seagen\n    import numpy as np\n    N = 100000\n    radii = np.arange(0.01, 10, 0.01)\n    densities = np.ones(len(radii))     # e.g. constant density\n\n    particles = seagen.GenSphere(N, radii, densities)\n\n    print(particles.x, particles.y, particles.z, particles.m)\n    ```\n+ See `examples.py` for other working examples, e.g. an arbitrary density\n    profile with multiple layers and extra temperature information.\n\n\nInstallation\n------------\n+ `PyPI`: Automatically install the package with `pip install seagen`, see\n    https://pypi.org/project/seagen/\n+ Direct download: The single `seagen.py` file can be imported and used without\n    any extra installation, so you can just download this repository and place\n    the file in a local directory or wherever your python will look for modules.\n\n\nRequirements\n------------\n+ Python 3 (tested with 3.6.0).\n\n\nNotation etc.\n-------------\n+ Formatted with [black](https://github.com/psf/black).\n+ Arrays are explicitly labelled with a prefix `A1_`, or `An_` for an\n    `n`-dimensional array.\n+ Particle is abbreviated to `picle`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkeger%2Fseagen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkeger%2Fseagen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkeger%2Fseagen/lists"}