riptide-ffa 0.2.6__tar.gz → 0.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/.github/workflows/CI.yml +9 -1
  2. riptide_ffa-0.2.7/.github/workflows/publish.yml +36 -0
  3. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/.readthedocs.yaml +4 -1
  4. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/CHANGELOG.md +6 -4
  5. riptide_ffa-0.2.7/Makefile +53 -0
  6. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/PKG-INFO +24 -40
  7. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/README.md +1 -2
  8. riptide_ffa-0.2.7/docs/Makefile +20 -0
  9. riptide_ffa-0.2.7/docs/source/conf.py +58 -0
  10. riptide_ffa-0.2.7/docs/source/docker.rst +18 -0
  11. riptide_ffa-0.2.7/docs/source/images/J1855+0307_folded.png +0 -0
  12. riptide_ffa-0.2.7/docs/source/images/J1855+0307_folded_dereddened.png +0 -0
  13. riptide_ffa-0.2.7/docs/source/images/J1855+0307_pgram.png +0 -0
  14. riptide_ffa-0.2.7/docs/source/images/J1855+0307_pgram_zoom.png +0 -0
  15. riptide_ffa-0.2.7/docs/source/images/J1932-3655_blind_detection.png +0 -0
  16. riptide_ffa-0.2.7/docs/source/images/J1932-3655_psrchive_small.png +0 -0
  17. riptide_ffa-0.2.7/docs/source/index.rst +52 -0
  18. riptide_ffa-0.2.7/docs/source/installation.rst +31 -0
  19. riptide_ffa-0.2.7/docs/source/kernfuncs.rst +13 -0
  20. riptide_ffa-0.2.7/docs/source/pipeline.rst +321 -0
  21. riptide_ffa-0.2.7/docs/source/quickstart.rst +263 -0
  22. riptide_ffa-0.2.7/docs/source/reference.rst +74 -0
  23. riptide_ffa-0.2.7/pyproject.toml +102 -0
  24. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/setup.py +1 -2
  25. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/__init__.py +18 -23
  26. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/_version.py +3 -3
  27. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/apps/rseek.py +28 -20
  28. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/candidate.py +56 -77
  29. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/clustering.py +4 -3
  30. riptide_ffa-0.2.7/src/riptide/constants.py +5 -0
  31. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/cpp/python_bindings.cpp +0 -30
  32. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/ffautils.py +1 -0
  33. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/folding.py +4 -2
  34. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/libffa.py +29 -36
  35. riptide_ffa-0.2.7/src/riptide/metadata.py +161 -0
  36. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/peak_detection.py +25 -27
  37. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/periodogram.py +16 -14
  38. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/pipeline/__init__.py +7 -1
  39. riptide_ffa-0.2.7/src/riptide/pipeline/config_models.py +171 -0
  40. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/pipeline/dmiter.py +47 -36
  41. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/pipeline/harmonic_testing.py +17 -14
  42. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/pipeline/peak_cluster.py +18 -12
  43. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/pipeline/pipeline.py +129 -140
  44. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/pipeline/worker_pool.py +29 -21
  45. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/reading/__init__.py +5 -0
  46. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/reading/presto.py +11 -9
  47. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/reading/sigproc.py +28 -23
  48. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/running_medians.py +7 -7
  49. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/search.py +3 -5
  50. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/serialization.py +20 -19
  51. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/time_series.py +64 -45
  52. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/timing.py +4 -2
  53. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide_ffa.egg-info/PKG-INFO +24 -40
  54. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide_ffa.egg-info/SOURCES.txt +20 -4
  55. riptide_ffa-0.2.7/src/riptide_ffa.egg-info/requires.txt +23 -0
  56. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide_ffa.egg-info/scm_file_list.json +5 -4
  57. riptide_ffa-0.2.7/src/riptide_ffa.egg-info/scm_version.json +8 -0
  58. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/presto_generation.py +7 -5
  59. riptide_ffa-0.2.7/tests/test_config_models.py +52 -0
  60. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/test_ffa_base_functions.py +2 -2
  61. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/test_ffa_search_pgram.py +8 -6
  62. riptide_ffa-0.2.7/tests/test_metadata.py +35 -0
  63. riptide_ffa-0.2.7/tests/test_pipeline.py +106 -0
  64. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/test_rseek.py +7 -7
  65. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/test_running_median.py +9 -4
  66. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/test_snr.py +9 -3
  67. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/test_time_series.py +30 -22
  68. riptide_ffa-0.2.6/.coveragerc +0 -14
  69. riptide_ffa-0.2.6/MANIFEST.in +0 -9
  70. riptide_ffa-0.2.6/Makefile +0 -37
  71. riptide_ffa-0.2.6/pyproject.toml +0 -60
  72. riptide_ffa-0.2.6/riptide/cpp/transforms_advanced_LEGACY.hpp +0 -248
  73. riptide_ffa-0.2.6/src/riptide/metadata.py +0 -125
  74. riptide_ffa-0.2.6/src/riptide/pipeline/config_validation.py +0 -259
  75. riptide_ffa-0.2.6/src/riptide_ffa.egg-info/requires.txt +0 -13
  76. riptide_ffa-0.2.6/src/riptide_ffa.egg-info/scm_version.json +0 -8
  77. riptide_ffa-0.2.6/tests/test_pipeline.py +0 -182
  78. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/.gitignore +0 -0
  79. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/LICENSE +0 -0
  80. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/setup.cfg +0 -0
  81. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/cpp/README.md +0 -0
  82. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/cpp/block.hpp +0 -0
  83. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/cpp/downsample.hpp +0 -0
  84. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/cpp/kernels.hpp +0 -0
  85. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/cpp/periodogram.hpp +0 -0
  86. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/cpp/running_median.hpp +0 -0
  87. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/cpp/snr.hpp +0 -0
  88. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/cpp/transforms.hpp +0 -0
  89. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide/pipeline/config/example.yaml +0 -0
  90. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide_ffa.egg-info/dependency_links.txt +0 -0
  91. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide_ffa.egg-info/entry_points.txt +0 -0
  92. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/src/riptide_ffa.egg-info/top_level.txt +0 -0
  93. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/__init__.py +0 -0
  94. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/README.md +0 -0
  95. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_presto_radio.dat +0 -0
  96. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_presto_radio.inf +0 -0
  97. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_presto_radio_breaks.dat +0 -0
  98. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_presto_radio_breaks.inf +0 -0
  99. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_presto_xray.dat +0 -0
  100. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_presto_xray.inf +0 -0
  101. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_sigproc_float32.tim +0 -0
  102. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_sigproc_int8.tim +0 -0
  103. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_sigproc_uint8.tim +0 -0
  104. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/data/fake_sigproc_uint8_nosignedkey.tim +0 -0
  105. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/pipeline_config_A.yml +0 -0
  106. {riptide_ffa-0.2.6 → riptide_ffa-0.2.7}/tests/pipeline_config_B.yml +0 -0
@@ -23,9 +23,17 @@ jobs:
23
23
  run: |
24
24
  python -m pip install --upgrade pip
25
25
  make install
26
+ - name: Build documentation
27
+ if: matrix.python-version == '3.12'
28
+ run: make docs
29
+ - name: Lint
30
+ run: make lint
26
31
  - name: Test
27
32
  run: |
28
- make tests
33
+ make test
34
+ - name: Check source distribution
35
+ if: matrix.python-version == '3.12'
36
+ run: make check-sdist
29
37
  - name: Upload coverage reports to Codecov
30
38
  uses: codecov/codecov-action@v5
31
39
  env:
@@ -0,0 +1,36 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v4
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.12"
20
+
21
+ - name: Install
22
+ run: |
23
+ python -m pip install --upgrade pip
24
+ make install
25
+
26
+ - name: Test
27
+ run: make test
28
+
29
+ - name: Build source distribution
30
+ run: python -m build --sdist
31
+
32
+ - name: Upload to PyPI
33
+ env:
34
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
35
+ TWINE_USERNAME: __token__
36
+ run: python -m twine upload dist/*.tar.gz
@@ -9,7 +9,10 @@ build:
9
9
 
10
10
  python:
11
11
  install:
12
- - requirements: docs/requirements.txt
12
+ - method: pip
13
+ path: .
14
+ extra_requirements:
15
+ - docs
13
16
 
14
17
  sphinx:
15
18
  configuration: docs/source/conf.py
@@ -4,16 +4,18 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 0.2.7 - 2026-09-20
8
+
9
+ Internal refactoring and improvements: Fix documentation, add CI stages to check source distribution build, add linting with `ruff` and make a general code cleanup pass.
10
+
7
11
  ## 0.2.6 - 2026-09-10
8
12
 
9
13
  This version modernises the project layout and packaging, and fixes issues in candidate plotting and downsampled variance calculations.
10
14
 
11
15
  ### Fixed
12
16
 
13
- - Candidate plots now normalise each sub-integration independently for better contrast,
14
- contributed by Dejiang Yin.
15
- - Corrected the downsampled variance calculation for factors very close to an integer,
16
- thanks to Francesco Coti Zelati for reporting the issue.
17
+ - Candidate plots now normalise each sub-integration independently for better contrast, contributed by Dejiang Yin.
18
+ - Corrected the downsampled variance calculation for factors very close to an integer, thanks to Francesco Coti Zelati for reporting the issue.
17
19
 
18
20
 
19
21
  ## 0.2.5 - 2023-12-23
@@ -0,0 +1,53 @@
1
+ .DEFAULT_GOAL := help
2
+ PKG = riptide-ffa
3
+ DOCS_SPHINXOPTS = --fail-on-warning --nitpicky --keep-going
4
+
5
+ check-sdist: ## Build and smoke-test the source distribution in a temporary virtualenv
6
+ @set -eu; \
7
+ tmpdir="$$(mktemp -d)"; \
8
+ on_exit() { \
9
+ status=$$?; \
10
+ if [ "$$status" -eq 0 ]; then \
11
+ printf '\033[1;32m✅ Source distribution smoke test passed\033[0m\n'; \
12
+ else \
13
+ printf '\033[1;31m❌ Source distribution smoke test failed\033[0m\n' >&2; \
14
+ fi; \
15
+ rm -rf "$$tmpdir"; \
16
+ exit "$$status"; \
17
+ }; \
18
+ trap on_exit EXIT; \
19
+ python -m build --sdist --outdir "$$tmpdir/dist"; \
20
+ python -m venv "$$tmpdir/venv"; \
21
+ "$$tmpdir/venv/bin/python" -m pip install "$$tmpdir"/dist/*.tar.gz; \
22
+ cd "$$tmpdir"; \
23
+ "$$tmpdir/venv/bin/python" -c "import riptide; print(riptide.__version__)"; \
24
+ "$$tmpdir/venv/bin/rffa" --help >/dev/null; \
25
+ "$$tmpdir/venv/bin/rseek" --help >/dev/null
26
+
27
+ docs: ## Build clean HTML documentation in docs/build/html
28
+ $(MAKE) -C docs clean html SPHINXOPTS="$(DOCS_SPHINXOPTS)"
29
+
30
+ install: ## Install the package in editable mode with dev and docs dependencies
31
+ pip install -e '.[dev,docs]'
32
+
33
+ lint: ## Run the linter
34
+ ruff check src tests
35
+
36
+ # GLORIOUS hack to autogenerate Makefile help
37
+ # This simply parses the double hashtags that follow each Makefile command
38
+ # https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
39
+ help: ## Print this help message
40
+ @echo "Makefile help for ${PKG}"
41
+ @echo "===================================================================="
42
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
43
+
44
+ test: ## Run the unit tests and print a coverage report
45
+ pytest --cov=src/ --cov-report=term-missing
46
+
47
+ ci: ## Run all checks for continuous integration
48
+ $(MAKE) docs
49
+ $(MAKE) lint
50
+ $(MAKE) test
51
+ $(MAKE) check-sdist
52
+
53
+ .PHONY: check-sdist docs install lint help test ci
@@ -1,58 +1,43 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: riptide-ffa
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Pulsar searching with the Fast Folding Algorithm (FFA)
5
5
  Author-email: Vincent Morello <vmorello@gmail.com>
6
6
  Maintainer-email: Vincent Morello <vmorello@gmail.com>
7
- License: MIT License
8
-
9
- Copyright (c) 2017-2021 Vincent Morello
10
-
11
- Permission is hereby granted, free of charge, to any person obtaining a copy
12
- of this software and associated documentation files (the "Software"), to deal
13
- in the Software without restriction, including without limitation the rights
14
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
- copies of the Software, and to permit persons to whom the Software is
16
- furnished to do so, subject to the following conditions:
17
-
18
- The above copyright notice and this permission notice shall be included in all
19
- copies or substantial portions of the Software.
20
-
21
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
- SOFTWARE.
28
-
29
- Project-URL: homepage, https://github.com/vmorello/riptide
30
- Project-URL: documentation, https://riptide-ffa.readthedocs.io
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/v-morello/riptide
9
+ Project-URL: Documentation, https://riptide-ffa.readthedocs.io
10
+ Project-URL: Repository, https://github.com/v-morello/riptide
11
+ Project-URL: Issues, https://github.com/v-morello/riptide/issues
31
12
  Classifier: Programming Language :: Python :: 3 :: Only
32
13
  Classifier: Programming Language :: Python :: 3.9
33
14
  Classifier: Programming Language :: Python :: 3.10
34
15
  Classifier: Programming Language :: Python :: 3.11
35
16
  Classifier: Programming Language :: Python :: 3.12
36
- Classifier: Programming Language :: C
37
- Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: C++
38
18
  Classifier: Operating System :: Unix
39
19
  Classifier: Operating System :: MacOS :: MacOS X
40
20
  Classifier: Topic :: Scientific/Engineering :: Astronomy
41
21
  Requires-Python: >=3.9
42
22
  Description-Content-Type: text/markdown
43
23
  License-File: LICENSE
44
- Requires-Dist: astropy
45
- Requires-Dist: pandas
46
- Requires-Dist: schema
47
- Requires-Dist: pyyaml
48
- Requires-Dist: threadpoolctl
49
- Requires-Dist: pytest
50
- Requires-Dist: pytest-cov
51
- Requires-Dist: matplotlib
52
- Requires-Dist: numpy
24
+ Requires-Dist: astropy>=5.0
25
+ Requires-Dist: matplotlib>=3.6
26
+ Requires-Dist: numpy>=1.23
27
+ Requires-Dist: pandas>=1.5
28
+ Requires-Dist: pydantic<3,>=2
29
+ Requires-Dist: pyyaml>=6.0
30
+ Requires-Dist: threadpoolctl>=3.1
31
+ Provides-Extra: docs
32
+ Requires-Dist: sphinx<8,>=7.4; python_version < "3.11" and extra == "docs"
33
+ Requires-Dist: sphinx<9,>=8.2; python_version >= "3.11" and extra == "docs"
34
+ Requires-Dist: sphinx-rtd-theme<4,>=3; extra == "docs"
53
35
  Provides-Extra: dev
54
- Requires-Dist: build; extra == "dev"
55
- Requires-Dist: twine; extra == "dev"
36
+ Requires-Dist: build>=1.0; extra == "dev"
37
+ Requires-Dist: pytest>=7.0; extra == "dev"
38
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
39
+ Requires-Dist: ruff>=0.11; extra == "dev"
40
+ Requires-Dist: twine>=4.0; extra == "dev"
56
41
  Dynamic: license-file
57
42
 
58
43
  [![arXiv](http://img.shields.io/badge/astro.ph-2004.03701-B31B1B.svg)](https://arxiv.org/abs/2004.03701) ![License](https://img.shields.io/badge/License-MIT-green.svg) ![Python versions](https://img.shields.io/pypi/pyversions/riptide-ffa.svg) ![CI status](https://github.com/v-morello/riptide/actions/workflows/CI.yml/badge.svg?branch=master) [![codecov](https://codecov.io/gh/v-morello/riptide/branch/master/graph/badge.svg)](https://codecov.io/gh/v-morello/riptide)
@@ -102,7 +87,7 @@ And then in the base directory of `riptide` run
102
87
  make install
103
88
  ```
104
89
 
105
- This simply runs ``pip install`` in [editable mode](https://pip.pypa.io/en/latest/reference/pip_install/#editable-installs), which means you can freely edit the code. It also installs any required dependencies with ``pip`` that are not present already. The installer also adds links to two command-line apps in your python environment using [console_scripts entry points](https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html):
90
+ This runs ``pip install`` in [editable mode](https://pip.pypa.io/en/latest/reference/pip_install/#editable-installs), which means you can freely edit the code. It also installs the development and documentation dependencies. The installer adds links to two command-line apps in your python environment using [console_scripts entry points](https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html):
106
91
 
107
92
  * `rffa`: The full end-to-end pipeline to search multiple DM trials, see below for details on how to use it.
108
93
  * `rseek`: A lightweight app to search a single time series and print significant candidates found, useful for quick data checks.
@@ -117,4 +102,3 @@ And you should see the full help of both applications.
117
102
 
118
103
 
119
104
 
120
-
@@ -45,7 +45,7 @@ And then in the base directory of `riptide` run
45
45
  make install
46
46
  ```
47
47
 
48
- This simply runs ``pip install`` in [editable mode](https://pip.pypa.io/en/latest/reference/pip_install/#editable-installs), which means you can freely edit the code. It also installs any required dependencies with ``pip`` that are not present already. The installer also adds links to two command-line apps in your python environment using [console_scripts entry points](https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html):
48
+ This runs ``pip install`` in [editable mode](https://pip.pypa.io/en/latest/reference/pip_install/#editable-installs), which means you can freely edit the code. It also installs the development and documentation dependencies. The installer adds links to two command-line apps in your python environment using [console_scripts entry points](https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html):
49
49
 
50
50
  * `rffa`: The full end-to-end pipeline to search multiple DM trials, see below for details on how to use it.
51
51
  * `rseek`: A lightweight app to search a single time series and print significant candidates found, useful for quick data checks.
@@ -60,4 +60,3 @@ And you should see the full help of both applications.
60
60
 
61
61
 
62
62
 
63
-
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = source
9
+ BUILDDIR = build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,58 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # This file only contains a selection of the most common options. For a full
4
+ # list see the documentation:
5
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
6
+
7
+ # -- Path setup --------------------------------------------------------------
8
+
9
+ # If extensions (or modules to document with autodoc) are in another directory,
10
+ # add these directories to sys.path here. If the directory is relative to the
11
+ # documentation root, use os.path.abspath to make it absolute, like shown here.
12
+ #
13
+
14
+
15
+ # -- Project information -----------------------------------------------------
16
+
17
+ project = "riptide-ffa"
18
+ copyright = "2021, Vincent Morello"
19
+ author = "Vincent Morello"
20
+
21
+
22
+ # -- General configuration ---------------------------------------------------
23
+
24
+ # Add any Sphinx extension module names here, as strings. They can be
25
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
26
+ # ones.
27
+ # NOTE: sphinx.ext.autosectionlabel makes it easy to reference other
28
+ # sections in the docs
29
+ # See: https://stackoverflow.com/a/54843636
30
+ extensions = [
31
+ "sphinx.ext.autodoc",
32
+ "sphinx.ext.napoleon",
33
+ "sphinx_rtd_theme",
34
+ "sphinx.ext.autosectionlabel",
35
+ ]
36
+
37
+ # Add any paths that contain templates here, relative to this directory.
38
+ templates_path = ["_templates"]
39
+
40
+ # List of patterns, relative to source directory, that match files and
41
+ # directories to ignore when looking for source files.
42
+ # This pattern also affects html_static_path and html_extra_path.
43
+ exclude_patterns = []
44
+
45
+ nitpick_ignore = [
46
+ ("py:class", "ndarray"),
47
+ ("py:class", "optional"),
48
+ ]
49
+
50
+
51
+ # -- Options for HTML output -------------------------------------------------
52
+
53
+ # The theme to use for HTML and HTML Help pages. See the documentation for
54
+ # a list of builtin themes.
55
+ #
56
+ html_theme = "sphinx_rtd_theme"
57
+
58
+ pygments_style = "sphinx"
@@ -0,0 +1,18 @@
1
+ Docker Image
2
+ ============
3
+
4
+ The riptide `Dockerfile`_ is located in the ``docker`` subdirectory. To build the image, clone the repository and in its base directory type:
5
+
6
+ .. _`Dockerfile`: https://github.com/v-morello/riptide/blob/master/docker/Dockerfile
7
+
8
+ .. code-block:: console
9
+
10
+ make docker
11
+
12
+ Which builds an image named ``riptide-ffa``. Both python and ipython are installed within the docker image. To start a container:
13
+
14
+ .. code-block:: console
15
+
16
+ docker run -it --rm riptide-ffa
17
+
18
+ Feel free to adapt the Dockerfile to your needs. Refer to your favourite docker cheat sheet for further information.
@@ -0,0 +1,52 @@
1
+ riptide: Finding pulsars with the Fast Folding Algorithm (FFA)
2
+ ==============================================================
3
+
4
+ .. image:: http://img.shields.io/badge/astro.ph-2004.03701-B31B1B.svg
5
+ :target: https://arxiv.org/abs/2004.03701
6
+ :alt: arXiv
7
+
8
+ .. image:: https://github.com/v-morello/riptide/actions/workflows/CI.yml/badge.svg?branch=master
9
+ :alt: Build status
10
+
11
+ .. image:: https://codecov.io/gh/v-morello/riptide/branch/master/graph/badge.svg
12
+ :target: https://codecov.io/gh/v-morello/riptide
13
+ :alt: Coverage
14
+
15
+
16
+ ``riptide`` ("sea\ **r**\ ch\ **i**\ ng for **p**\ ulsars in the **ti**\ me **d**\ omain") is a pulsar searching
17
+ package that implements the Fast Folding Algorithm (FFA), the theoretically optimal search method
18
+ for periodic signals. Its interface is entirely in python while the core algorithms are implemented
19
+ in C++. riptide provides:
20
+
21
+ * A library of functions and classes to manipulate and search individual dedispersed time series
22
+ * A pipeline executable to process a set of DM trials and output a list of candidate files, plots and other data products
23
+
24
+
25
+ Citation
26
+ --------
27
+
28
+ If using ``riptide`` contributes to a project that leads to a scientific publication, please cite the article:
29
+ `Optimal periodicity searching: Revisiting the Fast Folding Algorithm for large scale pulsar surveys`__
30
+
31
+ __ https://arxiv.org/abs/2004.03701
32
+
33
+
34
+ .. toctree::
35
+ :maxdepth: 3
36
+ :caption: Contents:
37
+
38
+ installation
39
+ quickstart
40
+ kernfuncs
41
+ pipeline
42
+ docker
43
+ reference
44
+
45
+ Indices and tables
46
+ ------------------
47
+
48
+ * :ref:`genindex`
49
+ * :ref:`modindex`
50
+ * :ref:`search`
51
+
52
+
@@ -0,0 +1,31 @@
1
+ Installation
2
+ ============
3
+
4
+ The easiest method is to use pip install, which pulls the latest release from PyPI and installs all required dependencies:
5
+
6
+ .. code-block:: console
7
+
8
+ pip install riptide-ffa
9
+
10
+
11
+ Alternatively you can clone the repository and run ``make install``
12
+
13
+ .. code-block:: console
14
+
15
+ git clone https://github.com/v-morello/riptide
16
+ cd riptide/
17
+ make install
18
+
19
+ This runs ``pip install`` in `editable mode`_, which means you can freely edit the code.
20
+ It also installs the development and documentation dependencies. You can check that it all works
21
+ by running the test suite in a Python or IPython console:
22
+
23
+ >>> import riptide
24
+ >>> riptide.test()
25
+
26
+ .. _`editable mode`: https://pip.pypa.io/en/latest/reference/pip_install/#editable-installs
27
+
28
+ There should also now be two command-line apps in your python environment:
29
+
30
+ * ``rseek``: A lightweight app to search a single time series and print significant candidates found, useful for quick data checks. See :ref:`The rseek command-line app`.
31
+ * ``rffa``: The full end-to-end pipeline to search multiple DM trials, see :ref:`Using the Pipeline`.
@@ -0,0 +1,13 @@
1
+ FFA kernel functions
2
+ ====================
3
+
4
+ The python interface of ``riptide`` exposes some lower-level functions related to calculating the folding transform (interchangeably called FFA transform) of input data at some base integer period.
5
+ There is also a kernel function to calculate S/N. These are:
6
+
7
+ * ``ffa2``: FFA transform of a two-dimensional input that represents a pulse stack. The ``m`` lines of the input represent pulses in chronological order, and the ``p`` columns represent the phase dimension
8
+ * ``ffa1``: FFA transform of a one-dimensional input, that represents a time series. The function simply selects the largest number of entire pulses that fit in the data, reshapes them into a two-dimensional array, and calls ``ffa2()``
9
+ * ``ffafreq``: Returns the trial folding frequencies corresponding to every line in the output of an FFA transform
10
+ * ``ffaprd``: Same as ``ffafreq``, but returns trial periods instead
11
+ * ``boxcar_snr``: Compute the S/N ratio of pulse profile(s) by concolving them with a range of boxcar filters with different widths.
12
+
13
+ See :ref:`API Reference` for further details.