{"id":32176070,"url":"https://github.com/pyfstat/pyfstat","last_synced_at":"2026-02-22T19:03:38.079Z","repository":{"id":38241118,"uuid":"236690092","full_name":"PyFstat/PyFstat","owner":"PyFstat","description":"a python package for gravitational wave analysis with the F-statistic","archived":false,"fork":false,"pushed_at":"2026-01-30T22:09:05.000Z","size":26704,"stargazers_count":53,"open_issues_count":47,"forks_count":32,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-01-31T13:31:07.268Z","etag":null,"topics":["astrophysics","gravitational-waves","gravity","ligo","neutron-star","pycuda","python3","virgo"],"latest_commit_sha":null,"homepage":"https://pyfstat.readthedocs.io","language":"Python","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/PyFstat.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"codemeta.json","zenodo":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-01-28T08:33:58.000Z","updated_at":"2026-01-30T22:09:06.000Z","dependencies_parsed_at":"2023-02-18T08:01:04.307Z","dependency_job_id":"ac2e163d-0ced-4bd9-a0ca-b07729e8cc15","html_url":"https://github.com/PyFstat/PyFstat","commit_stats":{"total_commits":1690,"total_committers":12,"mean_commits":"140.83333333333334","dds":0.5378698224852071,"last_synced_commit":"f5f0480a67ede95a7e28b67379a7d5a02052e6ea"},"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/PyFstat/PyFstat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyFstat%2FPyFstat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyFstat%2FPyFstat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyFstat%2FPyFstat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyFstat%2FPyFstat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyFstat","download_url":"https://codeload.github.com/PyFstat/PyFstat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyFstat%2FPyFstat/sbom","scorecard":{"id":115223,"data":{"date":"2025-08-11","repo":{"name":"github.com/PyFstat/PyFstat","commit":"d54d5466c9566c6a7935e86d05d26e11a46de181"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":2,"reason":"Found 2/9 approved changesets -- score normalized to 2","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":"Maintained","score":2,"reason":"3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2","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":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/black.yml:1","Warn: no topLevel permission defined: .github/workflows/check_notebooks.yml:1","Warn: no topLevel permission defined: .github/workflows/codecov.yml:1","Warn: no topLevel permission defined: .github/workflows/conda-test.yml:1","Warn: no topLevel permission defined: .github/workflows/docker-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/flake8.yml:1","Warn: no topLevel permission defined: .github/workflows/integration.yml:1","Warn: no topLevel permission defined: .github/workflows/run_examples.yml:1","Warn: no topLevel permission defined: .github/workflows/test_lalsuite_dev.yml:1","Info: no jobLevel write permissions found"],"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/black.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/black.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/black.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/black.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check_notebooks.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/check_notebooks.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check_notebooks.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/check_notebooks.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codecov.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/codecov.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codecov.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/codecov.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/codecov.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/codecov.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/conda-test.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/conda-test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/conda-test.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/conda-test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/docker-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/flake8.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/flake8.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/flake8.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/flake8.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/integration.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/integration.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/integration.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/integration.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/integration.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/integration.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration.yml:78: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/integration.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/integration.yml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/integration.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_examples.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/run_examples.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_examples.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/run_examples.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_examples.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/run_examples.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_lalsuite_dev.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/test_lalsuite_dev.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_lalsuite_dev.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/PyFstat/PyFstat/test_lalsuite_dev.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:3.9-buster to python:3.9-buster@sha256:bae5b428ebf32d01a902718b0a58874cbf33d7a4b6a65b7cd7b21d48b0d2e2f1","Warn: pipCommand not pinned by hash: Dockerfile:7","Warn: pipCommand not pinned by hash: .binder/postBuild:12","Warn: pipCommand not pinned by hash: .github/workflows/check_notebooks.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/check_notebooks.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/codecov.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/codecov.yml:22","Warn: pipCommand not pinned by hash: .github/workflows/flake8.yml:18","Warn: pipCommand not pinned by hash: .github/workflows/flake8.yml:19","Warn: pipCommand not pinned by hash: .github/workflows/integration.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/integration.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/run_examples.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_examples.yml:22","Warn: pipCommand not pinned by hash: .github/workflows/test_lalsuite_dev.yml:22","Warn: pipCommand not pinned by hash: .github/workflows/test_lalsuite_dev.yml:23","Warn: pipCommand not pinned by hash: .github/workflows/test_lalsuite_dev.yml:24","Info:   0 out of  19 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of  15 pipCommand dependencies pinned"],"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":"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"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/docker-publish.yml:20"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T01:02:31.908Z","repository_id":38241118,"created_at":"2025-08-16T01:02:31.909Z","updated_at":"2025-08-16T01:02:31.909Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29723574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"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":["astrophysics","gravitational-waves","gravity","ligo","neutron-star","pycuda","python3","virgo"],"created_at":"2025-10-21T19:53:52.277Z","updated_at":"2026-02-22T19:03:38.073Z","avatar_url":"https://github.com/PyFstat.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyFstat\n\nThis is a python package providing an interface to perform F-statistic based\ncontinuous gravitational wave (CW) searches,\nbuilt on top of the [LALSuite library](https://doi.org/10.7935/GT1W-FZ16).\n\nGetting started:\n* This README provides information on\n[installing](#installation),\n[contributing](#contributors) to\nand [citing](#citing-this-work) PyFstat.\n* PyFstat usage and its API are documented at [pyfstat.readthedocs.io](https://pyfstat.readthedocs.io/).\n* We also have a number of [tutorials](https://github.com/PyFstat/PyFstat/tree/master/examples/tutorials) and\n[examples](https://github.com/PyFstat/PyFstat/tree/master/examples), demonstrating different use cases.\nYou can run them locally, or online as jupyter notebooks with\n[binder](https://mybinder.org/v2/gh/PyFstat/PyFstat/master).\n* The [project wiki](https://github.com/PyFstat/PyFstat/wiki) is mainly used for developer information.\n* A [changelog](https://github.com/PyFstat/PyFstat/blob/master/CHANGELOG.md)\nis also available.\n* PyFstat \u003e=2.0.0 requires a recent LALSuite (\u003e=7.13) / lalpulsar (\u003e=6.0)\nincluding the [SFTv3 specification](https://dcc.ligo.org/T040164-v2/public).\nIf you need to work with older versions, the last PyFstat release supporting those was `1.19.1`.\n\n[![PyPI version](https://badge.fury.io/py/PyFstat.svg)](https://badge.fury.io/py/PyFstat)\n[![Conda version](https://anaconda.org/conda-forge/pyfstat/badges/version.svg)](https://anaconda.org/conda-forge/pyfstat)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3967045.svg)](https://doi.org/10.5281/zenodo.3967045)\n[![ASCL](https://img.shields.io/badge/ascl-2102.027-blue.svg?colorB=262255)](https://ascl.net/2102.027)\n[![JOSS](https://joss.theoj.org/papers/10.21105/joss.03000/status.svg)](https://doi.org/10.21105/joss.03000)\n[![Docker](https://github.com/PyFstat/PyFstat/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/PyFstat/PyFstat/actions/workflows/docker-publish.yml)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/PyFstat/PyFstat/master)\n[![Integration Tests](https://github.com/PyFstat/PyFstat/actions/workflows/integration.yml/badge.svg)](https://github.com/PyFstat/PyFstat/actions/workflows/integration.yml)\n[![codecov](https://codecov.io/gh/PyFstat/PyFstat/branch/master/graph/badge.svg?token=P0W8MIIUGD)](https://codecov.io/gh/PyFstat/PyFstat)\n[![Documentation Status](https://readthedocs.org/projects/pyfstat/badge/?version=latest)](https://pyfstat.readthedocs.io/en/latest/?badge=latest)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n## Installation\n\nPyFstat releases can be installed in a variety of ways, including\n[`pip install` from PyPI](#pip-install-from-PyPi),\n[conda](#conda-installation),\n[Docker/Singularity images](#docker-container),\nand [from source releases on Zenodo](#install-pyfstat-from-source-zenodo-or-git-clone).\nLatest development versions can\n[also be installed with pip](#pip-install-from-github)\nor [from a local git clone](#install-pyfstat-from-source-zenodo-or-git-clone).\n\nIf you don't have a matching `python` installation\n(currently `3.10` to `3.13`)\non your system,\nthen `Docker` or `conda` are the easiest paths.\n\nIn either case, be sure to also check out the notes on\n[dependencies](#dependencies)\nand [citing this work](#citing-this-work).\n\nIf you run into problems with ephemerides files, check the wiki page on\n[ephemerides installation](https://github.com/PyFstat/PyFstat/wiki/ephemerides-installation).\n\n### pip install from PyPI\n\nPyPI releases are available from https://pypi.org/project/PyFstat/.\n\nA simple\n```\npip install pyfstat\n```\nshould give you the latest release version with all dependencies;\nrecent releases now also include\n(or pull in, via dependency)\na sufficient minimal set of ephemerides files.\n\nIf you are not installing into a [venv](https://docs.python.org/3/library/venv.html)\nor [conda environment](#conda-installation)\n(you really should!),\non many systems you may need to use the `--user` flag.\n\nNote that the PyFstat installation can fail with\n`Could not find a version that satisfies the requirement lalsuite`\nif e.g. your `pip`, `setuptools` or `glibc` versions are too old.\nTo fix the first two cases, you can run\n```\npip install --upgrade pip setuptools\n```\nFor the latter, you should likely upgrade your system.\n\n### conda installation\n\nSee [this wiki page](https://github.com/PyFstat/PyFstat/wiki/conda-environments)\nfor further instructions on installing conda itself,\ninstalling PyFstat into an existing environment,\nor for .yml recipes to set up a PyFstat-specific environment\nboth for normal users and for developers.\n\nIf getting PyFstat from conda-forge, it already includes the required ephemerides files.\n\n### Docker container\n\nReady-to-use PyFstat containers are available at the [Packages](https://github.com/PyFstat/PyFstat/packages)\npage. A GitHub account together with a personal access token is required.\n[Go to the wiki page](https://github.com/PyFstat/PyFstat/wiki/Containers)\nto learn how to pull them from the GitHub registry using `Docker` or `Singularity`.\n\n### pip install from github\n\nDevelopment versions of PyFstat can also be easily installed by\npointing pip directly to this git repository,\nwhich will give you the latest version of the master branch:\n```\npip install git+https://github.com/PyFstat/PyFstat\n```\nor, if you have an ssh key installed in github:\n```\npip install git+ssh://git@github.com/PyFstat/PyFstat\n```\n\nThis should pull in all dependencies in the same way as installing from PyPI.\n\n### install PyFstat from source (Zenodo or git clone)\n\nYou can download a source release tarball from [Zenodo](https://doi.org/10.5281/zenodo.3967045)\nand extract to an arbitrary temporary directory.\nAlternatively, clone this repository:\n\n```\ngit clone https://github.com/PyFstat/PyFstat.git\n```\n\nThe module and associated scripts can be installed system wide\n(or to the currently active venv),\nassuming you are in the (extracted or cloned) source directory, via\n```\npython setup.py install\n```\nAs a developer, alternatively\n```\npython setup.py develop\n```\nor\n```\npip install -e /path/to/PyFstat\n```\ncan be useful so you can directly see any changes you make in action.\nAlternatively (not recommended!), add the source directory directly to your python path.\n\nTo check that the installation\nwas successful, run\n```\npython -c 'import pyfstat'\n```\nif no error message is output, then you have installed `pyfstat`. Note that\nthe module will be installed to whichever python executable you call it from.\n\nThis should pull in all dependencies in the same way as installing from PyPI.\n\n### Dependencies\n\nPyFstat uses the following external python modules,\nwhich should all be pulled in automatically if you use `pip`:\n\n* [corner](https://pypi.python.org/pypi/corner/)\n* [dill](https://pypi.python.org/pypi/dill)\n* [lalsuite](https://pypi.org/project/lalsuite/)\n* [matplotlib](https://matplotlib.org/)\n* [numpy](https://www.numpy.org/)\n* [pathos](https://pypi.python.org/pypi/pathos)\n* [ptemcee](https://github.com/willvousden/ptemcee)\n* [scipy](https://www.scipy.org/)\n* [solar-system-ephemerides](https://pypi.org/project/solar-system-ephemerides/)\n  (from `lalsuite\u003e7.15` on)\n* [tqdm](https://pypi.python.org/pypi/tqdm)\n* [versioneer](https://pypi.org/project/versioneer/)\n\nFor a general introduction to installing modules, see\n[here](https://docs.python.org/3/installing/index.html).\n\nNOTE: We require a recent LALSuite (\u003e=7.13) / lalpulsar (\u003e=6.0).\nIf you need to work with older versions,\nthe last PyFstat release supporting those was `1.19.1`.\n\nNOTE: Through pip, we install the dependency `lalsuite[lalpulsar]`.\nThe optional flag `[lalpulsar]` is ignored for `lalsuite \u003c=  7.15`,\nas those releases carry their own ephemerides.\nFor `lalsuite \u003e 7.15`, `[lalpulsar]` installs `solar-system-ephemerides`\nand uses this auxiliary package to access the ephemerides.\n\n### Optional dependencies\n\nPyFstat manages optional dependencies through setuptool's `extras_require`.\n\nAvailable sets of optional dependencies are:\n\n* `chainconsumer` ([Samreay/Chainconsumer](https://github.com/Samreay/ChainConsumer)): Required to run some optional\nplotting methods and some of the [example scripts](./examples).\n* `dev`: Collects `docs`, `style`, `test` and `wheel`.\n* `docs`: Required dependencies to build the documentation.\n* `pycuda`: Required for the `tCWFstatMapVersion=pycuda`\n  option of the `TransientGridSearch` class.\n  (Note: Installing the `pycuda` package,\n  see e.g. on [PyPI](https://pypi.org/project/pycuda/),\n  requires a working `nvcc` compiler in your path.)\n* `style`: Includes the `flake8` linter ([flake8.pycqa](https://flake8.pycqa.org/en/latest)),\n  `black` style checker ([black.readthedocs](https://black.readthedocs.io)),\n  `codespell` typo checker ([github.com/codespell-project/codespell](https://github.com/codespell-project/codespell)),\n  and `isort` for import ordering ([pycqa.github.io](https://pycqa.github.io/isort/)).\n  These checks are required to pass by the online integration pipeline.\n* `test`: For running the test suite locally using [pytest](https://docs.pytest.org) and some of its addons\n  (`python -m pytest tests/`).\n* `wheel`: Includes `wheel` and `check-wheel-contents`.\n\nInstallation can be done by adding one or more of the aforementioned tags to the installation command.\n\nFor example, installing PyFstat including `chainconsumer`, `pycuda` and `style` dependencies would look like\n(mind the lack of whitespaces!)\n```\npip install pyfstat[chainconsumer,pycuda,style]\n```\nThis command accepts the \"development mode\" tag `-e`.\n\nNote that LALSuite is a default requirement, not an optional one,\nbut its installation from PyPI can be disabled\nby setting the `NO_LALSUITE_FROM_PYPI` environment variable,\ne.g. for a development install from a local git clone:\n```\nNO_LALSUITE_FROM_PYPI=1 pip install -e .\n```\nThis can be useful to avoid duplication when in a conda environment\nor installing LALSuite from source.\n\n### Using LALSuite built from source\n\nInstructions to use a custom local LALSuite installation can be found in [here on the wiki](https://github.com/PyFstat/PyFstat/wiki/Using-LALSuite-built-from-source).\n\n## Contributing to PyFstat\n\nThis project is open to development, please feel free to contact us\nfor advice or just jump in and submit an\n[issue](https://github.com/PyFstat/PyFstat/issues/new/choose) or\n[pull request](https://github.com/PyFstat/PyFstat/compare).\n\nHere's what you need to know:\n* As a developer, you should install directly from a git clone,\n  with either `pip install -e .[dev]` into some environment\n  or creating a development-enabled conda environment directly from the\n  `pyfstat-dev.yml` file\n  as explained on [this wiki page](https://github.com/PyFstat/PyFstat/wiki/conda-environments).\n  Please also run, just once after installing:\n  ```\n  pre-commit install\n  ```\n\n  This sets up everything for automated code quality tests (see below)\n  to be checked for you at every commit.\n* The github automated tests currently run on `python` [3.10,3.11,3.12,3.13]\n  and new PRs need to pass all these.\n* You can also run the full test suite locally via `pytest tests/`,\n  or run individual tests as explained\n  [on this page](https://docs.pytest.org/en/6.2.x/usage.html#specifying-tests-selecting-tests).\n* The automated test on github also runs\n  the [black](https://black.readthedocs.io) style checker,\n  the [flake8](https://flake8.pycqa.org/en/latest/) linter,\n  and the [isort](https://pycqa.github.io/isort/) import ordering helper.\n* If you have installed the dev dependencies correctly via pip or conda,\n  and ran `pre-commit install` once,\n  then you're ready to let the `pre-commit` tool do all of this automatically for you\n  every time you do `git commit`.\n  For anything that would fail on the github integration tests,\n  it will then either automatically reformat your code to match our style\n  or print warnings for things to fix.\n  The first time it will take a while for setup,\n  later it should be faster.\n* If for some reason you can't use `pre-commit`,\n  you can still manually run these tools before pushing changes / submitting PRs:\n  `isort .` to sort package imports,\n  `flake8 --count --statistics .` to find common coding errors and then fix them manually,\n  `black --check --diff .` to show the required style changes, or `black .` to automatically apply them.\n  `codespell -w -i 3 pyfstat/core.py` or similar (swap in the relevant file name) to interactively fix spelling mistakes.\n\n## Contributors\n\nMaintainers:\n* Greg Ashton\n* David Keitel\n\nCore contributors:\n* Reinhard Prix\n* Rodrigo Tenorio\n* Maria-Antonia Ferrer\n\nOther contributors:\n* Michael J. Williams\n* Karl Wette\n* Sylvia Zhu\n* Dan Foreman-Mackey (`pyfstat.gridcorner` is based on DFM's [corner.py](https://github.com/dfm/corner.py))\n\n\n## Citing this work\n\nIf you use `PyFstat` in a publication we would appreciate if you cite both a release DOI for the software itself (see below)\nand one or more of the following scientific papers:\n* The recent JOSS (Journal of Open Source Software) paper summarising the package:\n[Keitel, Tenorio, Ashton \u0026 Prix 2021](https://doi.org/10.21105/joss.03000)\n([inspire:1842895](https://inspirehep.net/literature/1842895)\n/ [ADS:2021arXiv210110915K](https://ui.adsabs.harvard.edu/abs/2021arXiv210110915K/)).\n* The original paper introducing the package and the MCMC functionality:\n[Ashton\u0026Prix 2018](https://doi.org/10.1103/PhysRevD.97.103020)\n([inspire:1655200](https://inspirehep.net/literature/1655200)\n/ [ADS:2018PhRvD..97j3020A](https://ui.adsabs.harvard.edu/abs/2018PhRvD..97j3020A/)).\n* The methods paper introducing a Bayes factor to evaluate the multi-stage follow-up:\n[Tenorio, Keitel, Sintes 2021](https://doi.org/10.1103/PhysRevD.104.084012)\n([inspire:1865975](https://inspirehep.net/literature/1865975)\n/ [ADS:2021PhRvD.104h4012T](https://ui.adsabs.harvard.edu/abs/2021PhRvD.104h4012T/))\n* For transient searches:\n[Keitel\u0026Ashton 2018](https://doi.org/10.1088/1361-6382/aade34)\n([inspire:1673205](https://inspirehep.net/literature/1673205)\n/ [ADS:2018CQGra..35t5003K](https://ui.adsabs.harvard.edu/abs/2018CQGra..35t5003K/)).\n* For glitch-robust searches:\n[Ashton, Prix \u0026 Jones 2018](https://doi.org/10.1103/PhysRevD.98.063011)\n([inspire:1672396](https://inspirehep.net/literature/1672396)\n/ [ADS:2018PhRvD..98f3011A](https://ui.adsabs.harvard.edu/abs/2018PhRvD..98f3011A/)\n\nIf you'd additionally like to cite the `PyFstat` package in general,\nplease refer to the [version-independent Zenodo listing](https://doi.org/10.5281/zenodo.3967045)\nor use directly the following BibTeX entry:\n```\n@misc{pyfstat,\n  author       = {Ashton, Gregory and\n                  Keitel, David and\n                  Prix, Reinhard and\n                  Tenorio, Rodrigo and\n                  Ferrer, Maria-Antonia},\n  title        = {{PyFstat}},\n  month        = jan,\n  year         = 2025,\n  publisher    = {Zenodo},\n  doi          = {10.5281/zenodo.3967045},\n  url          = {https://doi.org/10.5281/zenodo.3967045},\n  note         = {\\url{https://doi.org/10.5281/zenodo.3967045}}\n}\n```\nYou can also obtain DOIs for individual versioned releases (from 1.5.x upward)\nfrom the right sidebar at [Zenodo](https://doi.org/10.5281/zenodo.3967045).\n\nAlternatively, if you've used PyFstat up to version 1.4.x in your works,\nthe DOIs for those versions can be found from the sidebar at\n[this older Zenodo record](https://doi.org/10.5281/zenodo.1243930)\nand please amend the BibTeX entry accordingly.\n\n\nPyFstat uses the [`ptemcee` sampler](https://github.com/willvousden/ptemcee), which can be\ncited as\n[Vousden, Far \u0026 Mandel 2015](https://doi.org/10.1093/mnras/stv2422)\n([ADS:2016MNRAS.455.1919V](https://ui.adsabs.harvard.edu/abs/2016MNRAS.455.1919V/abstract))\nand [Foreman-Mackey, Hogg, Lang, and Goodman 2012](https://doi.org/10.1086/670067)\n([2013PASP..125..306F](https://ui.adsabs.harvard.edu/abs/2013PASP..125..306F/abstract)).\n\nPyFstat also makes generous use of functionality from the LALSuite library\nand it will usually be appropriate to also cite that project\n(see [this recommended bibtex entry](https://git.ligo.org/lscsoft/lalsuite/#acknowledgment))\nand also [Wette 2020](https://doi.org/10.1016/j.softx.2020.100634)\n([inspire:1837108](https://inspirehep.net/literature/1837108)\n/ [ADS:2020SoftX..1200634W](https://ui.adsabs.harvard.edu/abs/2020SoftX..1200634W/))\nfor the C-to-python [SWIG](http://www.swig.org) bindings.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyfstat%2Fpyfstat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyfstat%2Fpyfstat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyfstat%2Fpyfstat/lists"}