{"id":16805963,"url":"https://github.com/pkgw/rimphony","last_synced_at":"2025-04-11T00:50:29.113Z","repository":{"id":38357188,"uuid":"103540512","full_name":"pkgw/rimphony","owner":"pkgw","description":"A polarimetric synchrotron radiative transfer coefficient calculator in Rust. Derived from Symphony.","archived":false,"fork":false,"pushed_at":"2025-01-28T03:36:51.000Z","size":1890,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T21:38:45.787Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pkgw.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}},"created_at":"2017-09-14T14:11:32.000Z","updated_at":"2025-01-28T03:36:47.000Z","dependencies_parsed_at":"2022-08-25T05:01:21.689Z","dependency_job_id":"32a0256a-b187-4bd2-9249-8a2b71f31a9b","html_url":"https://github.com/pkgw/rimphony","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgw%2Frimphony","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgw%2Frimphony/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgw%2Frimphony/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgw%2Frimphony/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pkgw","download_url":"https://codeload.github.com/pkgw/rimphony/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248322609,"owners_count":21084336,"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-10-13T09:49:46.008Z","updated_at":"2025-04-11T00:50:29.095Z","avatar_url":"https://github.com/pkgw.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rimphony\n\nRimphony is a tool to calculate the eight coefficients needed to do numerical\nradiative transfer of polarized synchrotron emission. Unlike some comparable\ntools, it supports particle distributions that are anisotropic in pitch angle,\nand can calculate Faraday rotation and conversion coefficients. And, of\ncourse, it’s fully open source!\n\nRimphony began life as an experimental reimplementation of the\n[Symphony](https://github.com/AFD-Illinois/symphony) synchrotron coefficient\ncode in the [Rust](https://rust-lang.org/) language. Symphony comes out of\nCharles Gammie's group and is primarily the work of Alex Pandya. Its\nalgorithms are described in\n[Pandya et al (2016)](https://dx.doi.org/10.3847/0004-637X/822/1/34) and\n[Leung et al (2011)](https://dx.doi.org/10.1088/0004-637X/737/1/21).\n\nRimphony has adapted the computational framework of Symphony and adds new\nroutines to calculate Faraday rotation and conversion coefficients using the\nformalism developed by\n[Heyvaerts et al (2013; DOI:10.1093/mnras/stt135)](https://dx.doi.org/10.1093/mnras/stt135).\nSome of the Symphony implementation details have also been altered to increase\nspeed and reliability in challenging corners of parameter space. While\nrimphony is not yet described in a refereed publication, based on the results\nof its built-in validation test suite and benchmarking, I\n([PKGW](https://newton.cx/~peter/)) feel comfortable recommending it for use\nin research projects.\n\nAs a side note, my overall takeaway is that Rust is an *excellent* language\nfor this kind of project. In my opinion, the code of Rimphony is substantially\nmore readable and extensible than that of Symphony, and the infrastructure of\nthe Rust language make compilation, testing, benchmarking, documentation, and\ndistribution all straightforward.\n\n\n## Compiling and running it\n\nYou need to have the Rust development tools installed.\n[Follow these easy instructions](https://www.rust-lang.org/install.html) if\nyou don’t.\n\nYou also need to have [GSL](https://www.gnu.org/software/gsl/) and its\ndevelopment files installed. This library is available on most OS’s and\nsoftware packaging systems.\n\nOnce Rust is available, hopefully all that is needed is to run\n\n```\ncargo build\n```\n\nand then\n\n```\ncargo test\n```\n\nto run the test programs. The command\n\n```\ncargo run --example one-powerlaw-direct\n```\n\nwill compile and run a test program.\n\nTo actually use this code for an application, you would need to write a\nprogram that depended on the Rimphony “crate” (a Rust term), used the relevant\nAPI calls, and did something with the results. For instance, the example\nprogram `crank-out-pitchypl` computes and prints coefficient values for random\ninput parameters. I use these as training data for a neural network that can\nquickly compute approximate synchrotron coefficients for arbitrary input\nparameters — the [neurosynchro](https://github.com/pkgw/neurosynchro/)\nproject.\n\n\n## Structure\n\nThe layout of the files in this repository follows standard Rust practices.\n\n- The `gsl-sys` subdirectory contains a subproject that implements some minimal\n  bindings to the [GSL](https://www.gnu.org/software/gsl/) numerics library.\n- The `leung-bessel` subdirectory contains a subproject that provides access\n  to the fast Bessel function evaluator described in Appendix B of\n  [Leung et al (2011)](https://dx.doi.org/10.1088/0004-637X/737/1/21).\n- The `src` subdirectory contains the main code.\n- The `tests` subdirectory contains some simple tests.\n- The `benches` subdirectory contains some minimal benchmarking code.\n- The `examples` subdirectory contains a few example programs that exercise\n  the library.\n\n\n## Credits\n\nAlex Pandya and Mani Chandra are the main authors of Symphony. Symphony builds\non Harmony, primarily written by Po Kin Leung. This Rust reimplementation is\nby Peter K. G. Williams. If using this code in research work, cite the papers\nmentioned above.\n\n\n## License and copyright\n\nThis code is copyright Peter Williams and collaborators, and is licensed under\nversion 3 of the GPL, like Symphony.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkgw%2Frimphony","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpkgw%2Frimphony","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkgw%2Frimphony/lists"}