{"id":37695249,"url":"https://github.com/ojdf/fast","last_synced_at":"2026-01-16T12:47:53.344Z","repository":{"id":122489103,"uuid":"470131210","full_name":"ojdf/fast","owner":"ojdf","description":"Simulation tool that utilises a Fourier domain adaptive optics model to enable rapid Monte Carlo characterisation of free space optical links between the Earth and satellites","archived":false,"fork":false,"pushed_at":"2025-10-07T10:54:53.000Z","size":558,"stargazers_count":15,"open_issues_count":0,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-07T11:41:41.815Z","etag":null,"topics":["adaptive-optics","free-space-optical-communiucation","simulation","turbulence"],"latest_commit_sha":null,"homepage":"https://ojdf.github.io/fast/","language":"Python","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/ojdf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-03-15T11:34:13.000Z","updated_at":"2025-10-07T10:40:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"dc3b3b6e-7d2b-4c12-aca4-55b9af78f3d9","html_url":"https://github.com/ojdf/fast","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/ojdf/fast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojdf%2Ffast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojdf%2Ffast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojdf%2Ffast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojdf%2Ffast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ojdf","download_url":"https://codeload.github.com/ojdf/fast/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojdf%2Ffast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478743,"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":["adaptive-optics","free-space-optical-communiucation","simulation","turbulence"],"created_at":"2026-01-16T12:47:53.229Z","updated_at":"2026-01-16T12:47:53.316Z","avatar_url":"https://github.com/ojdf.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FAST (Fourier domain Adaptive optics Simulation Tool)\n\n![](https://github.com/ojdf/fast/actions/workflows/unit_test.yml/badge.svg)\n[![codecov](https://codecov.io/gh/ojdf/fast/branch/main/graph/badge.svg?token=Z1U8JBPE48)](https://codecov.io/gh/ojdf/fast)\n\nFAST is a simulation tool that utilises a Fourier domain AO model to enable rapid Monte Carlo characterisation of free space optical links between the Earth and satellites. For more details, see the paper [https://doi.org/10.1364/OE.458659](https://doi.org/10.1364/OE.458659).\n\nDocumentation is hosted at [ojdf.github.io/fast](https://ojdf.github.io/fast).\n\nWARNING: FAST is under active development and the simulation API and configuration is not fixed. If you find a bug, or something is not working as you would expect, please email me or make an issue on GitHub, it's likely I've broken something! \n\n## Requirements\nSee `requirements.txt`\n\nIt is recommended to install [pyFFTW](https://pypi.org/project/pyFFTW/) to speed up FFTs. \n\n## Installation\n\n### PyPI\n`pip install fast-aosim`\n\n### From Source\n\nFor the latest developments, clone this repository run `pip install -r requirements.txt` to get the required dependencies. Then, ensure that the FAST directory is on your `PYTHONPATH`, or navigate to the directory and run\n\n`pip install .`\n\nTo confirm correct installation, try running \n\n`cd test \u0026\u0026 python test_script.py`\n\nin the FAST directory, which should run a short simulation. You can also run the unit tests with \n\n`pytest -v test/tests_pytest.py`\n\n## Configuration\nConfig is handled currently by python scripts, an example of which is shown in `test_params.py`. The config file should define a dictionary `p` which contains all of the configuration information required. If any values are missed, they will be replaced by defaults. \n\nTo start a simulation either in the python shell or in a script, you can either pass the filename of the script defining the config dictionary, or you can provide the dictionary itself, which can be useful if you are scanning through parameters. So\n```\nimport fast\nsim = fast.Fast(\"your_config_file.py\")\n```\nor \n```\nimport fast\np = {your config}\nsim = fast.Fast(p)\n```\n## Running the simulation \nThe simulation is run by calling the `run()` function on the sim object. This will compute the phase screens and log-amplitude values, and then compute the detected power or phase/amplitude for coherent detection. The results are stored in `sim.result` and are also returned from `run()`, i.e. `res = sim.run()`. Results in either dB or power units can be obtained from e.g. `sim.result.dB_rel` (for dB relative to the diffraction limit) or `sim.result.power`. See the documentation for more details.\n\nTo save the simulation results as a fits file with header information, use `sim.save(filename)`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fojdf%2Ffast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fojdf%2Ffast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fojdf%2Ffast/lists"}