jolly-roger 0.0.2__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.

Potentially problematic release.


This version of jolly-roger might be problematic. Click here for more details.

@@ -0,0 +1,12 @@
1
+ # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
2
+ _commit: 2025.05.02-13-g4bc2312
3
+ _src_path: gh:scientific-python/cookie
4
+ backend: hatch
5
+ email: alec.thomson@csiro.au
6
+ full_name: Alec Thomson
7
+ license: BSD
8
+ org: flint-crew
9
+ project_name: jolly-roger
10
+ project_short_description: The pirate flagger
11
+ url: https://github.com/flint-crew/jolly-roger
12
+ vcs: true
@@ -0,0 +1,3 @@
1
+ node: $Format:%H$
2
+ node-date: $Format:%cI$
3
+ describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
@@ -0,0 +1 @@
1
+ .git_archival.txt export-subst
@@ -0,0 +1,77 @@
1
+ See the [Scientific Python Developer Guide][spc-dev-intro] for a detailed
2
+ description of best practices for developing scientific packages.
3
+
4
+ [spc-dev-intro]: https://learn.scientific-python.org/development/
5
+
6
+ # Quick development
7
+
8
+ The fastest way to start with development is to use nox. If you don't have nox,
9
+ you can use `uvx nox` to run it without installing, or `uv tool install nox`. If
10
+ you don't have uv, you can
11
+ [install it a variety of ways](https://docs.astral.sh/uv/getting-started/installation/),
12
+ including with pip, pipx, brew, and just downloading the binary (single file).
13
+
14
+ To use, run `nox`. This will lint and test using every installed version of
15
+ Python on your system, skipping ones that are not installed. You can also run
16
+ specific jobs:
17
+
18
+ ```console
19
+ $ nox -s lint # Lint only
20
+ $ nox -s tests # Python tests
21
+ $ nox -s docs # Build and serve the docs
22
+ $ nox -s build # Make an SDist and wheel
23
+ ```
24
+
25
+ Nox handles everything for you, including setting up an temporary virtual
26
+ environment for each run.
27
+
28
+ # Setting up a development environment manually
29
+
30
+ You can set up a development environment by running:
31
+
32
+ ```bash
33
+ uv sync
34
+ ```
35
+
36
+ # Pre-commit
37
+
38
+ You should prepare pre-commit, which will help you by checking that commits pass
39
+ required checks:
40
+
41
+ ```bash
42
+ uv tool install pre-commit # or brew install pre-commit on macOS
43
+ pre-commit install # Will install a pre-commit hook into the git repo
44
+ ```
45
+
46
+ You can also/alternatively run `pre-commit run` (changes only) or
47
+ `pre-commit run --all-files` to check even without installing the hook.
48
+
49
+ # Testing
50
+
51
+ Use pytest to run the unit checks:
52
+
53
+ ```bash
54
+ uv run pytest
55
+ ```
56
+
57
+ # Coverage
58
+
59
+ Use pytest-cov to generate coverage reports:
60
+
61
+ ```bash
62
+ uv run pytest --cov=jolly-roger
63
+ ```
64
+
65
+ # Building docs
66
+
67
+ You can build and serve the docs using:
68
+
69
+ ```bash
70
+ nox -s docs
71
+ ```
72
+
73
+ You can build the docs only with:
74
+
75
+ ```bash
76
+ nox -s docs --non-interactive
77
+ ```
@@ -0,0 +1,9 @@
1
+ name: "Setup Dependencies"
2
+ description: "Install deps"
3
+ runs:
4
+ using: "composite"
5
+ steps:
6
+ - name: Install casacore and boost
7
+ shell: bash
8
+ run: |
9
+ sudo apt install -y build-essential libcfitsio-dev liblapack-dev libboost-python-dev python3-dev wcslib-dev casacore-dev
@@ -0,0 +1,11 @@
1
+ version: 2
2
+ updates:
3
+ # Maintain dependencies for GitHub Actions
4
+ - package-ecosystem: "github-actions"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ groups:
9
+ actions:
10
+ patterns:
11
+ - "*"
@@ -0,0 +1,5 @@
1
+ changelog:
2
+ exclude:
3
+ authors:
4
+ - dependabot
5
+ - pre-commit-ci
@@ -0,0 +1,56 @@
1
+ name: CD
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ push:
7
+ branches:
8
+ - main
9
+ release:
10
+ types:
11
+ - published
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ env:
18
+ # Many color libraries just need this to be set to any value, but at least
19
+ # one distinguishes color depth, where "3" -> "256-bit color".
20
+ FORCE_COLOR: 3
21
+
22
+ jobs:
23
+ dist:
24
+ name: Distribution build
25
+ runs-on: ubuntu-latest
26
+
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ with:
30
+ fetch-depth: 0
31
+
32
+ - uses: hynek/build-and-inspect-python-package@v2
33
+
34
+ publish:
35
+ needs: [dist]
36
+ name: Publish to PyPI
37
+ environment: pypi
38
+ permissions:
39
+ id-token: write
40
+ attestations: write
41
+ contents: read
42
+ runs-on: ubuntu-latest
43
+ if: github.event_name == 'release' && github.event.action == 'published'
44
+
45
+ steps:
46
+ - uses: actions/download-artifact@v4
47
+ with:
48
+ name: Packages
49
+ path: dist
50
+
51
+ - name: Generate artifact attestation for sdist and wheel
52
+ uses: actions/attest-build-provenance@v2
53
+ with:
54
+ subject-path: "dist/*"
55
+
56
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,76 @@
1
+ name: CI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ push:
7
+ branches:
8
+ - main
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ env:
15
+ # Many color libraries just need this to be set to any value, but at least
16
+ # one distinguishes color depth, where "3" -> "256-bit color".
17
+ FORCE_COLOR: 3
18
+
19
+ jobs:
20
+ pre-commit:
21
+ name: Format
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ with:
26
+ fetch-depth: 0
27
+ - uses: actions/setup-python@v5
28
+ with:
29
+ python-version: "3.x"
30
+
31
+ - uses: astral-sh/setup-uv@v6
32
+
33
+ - uses: pre-commit/action@v3.0.1
34
+ with:
35
+ extra_args: --hook-stage manual --all-files
36
+
37
+ checks:
38
+ name: Check Python ${{ matrix.python-version }} on ${{ matrix.runs-on }}
39
+ runs-on: ${{ matrix.runs-on }}
40
+ needs: [pre-commit]
41
+ strategy:
42
+ fail-fast: false
43
+ matrix:
44
+ python-version: ["3.11", "3.12", "3.13"]
45
+ runs-on: [ubuntu-latest]
46
+
47
+ steps:
48
+ - uses: actions/checkout@v4
49
+ with:
50
+ fetch-depth: 0
51
+ - uses: astral-sh/setup-uv@v6
52
+ - uses: actions/cache@v4
53
+ id: cache-uv
54
+ with:
55
+ path: ~/.cache/uv
56
+ key: ${{ runner.os }}-python-${{ matrix.python-version }}-uv
57
+ - name: Install dependencies
58
+ uses: ./.github/actions/setup-deps
59
+
60
+ - uses: actions/setup-python@v5
61
+ with:
62
+ python-version: ${{ matrix.python-version }}
63
+ allow-prereleases: true
64
+
65
+ - name: Install package
66
+ run: uv sync
67
+
68
+ - name: Test package
69
+ run: >-
70
+ uv run pytest -ra --cov --cov-report=xml --cov-report=term
71
+ --durations=20
72
+
73
+ - name: Upload coverage report
74
+ uses: codecov/codecov-action@v5.4.3
75
+ with:
76
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -0,0 +1,158 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
98
+ __pypackages__/
99
+
100
+ # Celery stuff
101
+ celerybeat-schedule
102
+ celerybeat.pid
103
+
104
+ # SageMath parsed files
105
+ *.sage.py
106
+
107
+ # Environments
108
+ .env
109
+ .venv
110
+ env/
111
+ venv/
112
+ ENV/
113
+ env.bak/
114
+ venv.bak/
115
+
116
+ # Spyder project settings
117
+ .spyderproject
118
+ .spyproject
119
+
120
+ # Rope project settings
121
+ .ropeproject
122
+
123
+ # mkdocs documentation
124
+ /site
125
+
126
+ # mypy
127
+ .mypy_cache/
128
+ .dmypy.json
129
+ dmypy.json
130
+
131
+ # Pyre type checker
132
+ .pyre/
133
+
134
+ # pytype static type analyzer
135
+ .pytype/
136
+
137
+ # Cython debug symbols
138
+ cython_debug/
139
+
140
+ # setuptools_scm
141
+ jolly_roger/*/_version.py
142
+
143
+
144
+ # ruff
145
+ .ruff_cache/
146
+
147
+ # OS specific stuff
148
+ .DS_Store
149
+ .DS_Store?
150
+ ._*
151
+ .Spotlight-V100
152
+ .Trashes
153
+ ehthumbs.db
154
+ Thumbs.db
155
+
156
+ # Common editor files
157
+ *~
158
+ *.swp
@@ -0,0 +1,84 @@
1
+ ci:
2
+ autoupdate_commit_msg: "chore: update pre-commit hooks"
3
+ autofix_commit_msg: "style: pre-commit fixes"
4
+
5
+ exclude: ^.cruft.json|.copier-answers.yml$
6
+
7
+ repos:
8
+ - repo: https://github.com/adamchainz/blacken-docs
9
+ rev: "1.19.1"
10
+ hooks:
11
+ - id: blacken-docs
12
+ additional_dependencies: [black==24.*]
13
+
14
+ - repo: https://github.com/pre-commit/pre-commit-hooks
15
+ rev: "v5.0.0"
16
+ hooks:
17
+ - id: check-added-large-files
18
+ - id: check-case-conflict
19
+ - id: check-merge-conflict
20
+ - id: check-symlinks
21
+ - id: check-yaml
22
+ - id: debug-statements
23
+ - id: end-of-file-fixer
24
+ - id: mixed-line-ending
25
+ - id: name-tests-test
26
+ args: ["--pytest-test-first"]
27
+ - id: requirements-txt-fixer
28
+ - id: trailing-whitespace
29
+
30
+ - repo: https://github.com/pre-commit/pygrep-hooks
31
+ rev: "v1.10.0"
32
+ hooks:
33
+ - id: rst-backticks
34
+ - id: rst-directive-colons
35
+ - id: rst-inline-touching-normal
36
+
37
+ - repo: https://github.com/astral-sh/ruff-pre-commit
38
+ rev: "v0.11.13"
39
+ hooks:
40
+ - id: ruff-check
41
+ args: ["--fix", "--show-fixes"]
42
+ - id: ruff-format
43
+
44
+ - repo: https://github.com/pre-commit/mirrors-mypy
45
+ rev: "v1.16.0"
46
+ hooks:
47
+ - id: mypy
48
+ files: jolly_roger|tests
49
+ args: ["--ignore-missing-imports"]
50
+ additional_dependencies:
51
+ - pytest
52
+
53
+ - repo: https://github.com/codespell-project/codespell
54
+ rev: "v2.4.1"
55
+ hooks:
56
+ - id: codespell
57
+ additional_dependencies:
58
+ - tomli; python_version<'3.11'
59
+
60
+ - repo: https://github.com/shellcheck-py/shellcheck-py
61
+ rev: "v0.10.0.1"
62
+ hooks:
63
+ - id: shellcheck
64
+
65
+ - repo: local
66
+ hooks:
67
+ - id: disallow-caps
68
+ name: Disallow improper capitalization
69
+ language: pygrep
70
+ entry: PyBind|Numpy|Cmake|CCache|Github|PyTest
71
+ exclude: .pre-commit-config.yaml
72
+
73
+ - repo: https://github.com/abravalheri/validate-pyproject
74
+ rev: "v0.24.1"
75
+ hooks:
76
+ - id: validate-pyproject
77
+ additional_dependencies: ["validate-pyproject-schema-store[all]"]
78
+
79
+ - repo: https://github.com/python-jsonschema/check-jsonschema
80
+ rev: "0.33.0"
81
+ hooks:
82
+ - id: check-dependabot
83
+ - id: check-github-workflows
84
+ - id: check-readthedocs
@@ -0,0 +1,16 @@
1
+ # Read the Docs configuration file
2
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
+
4
+ version: 2
5
+
6
+ build:
7
+ os: ubuntu-24.04
8
+ tools:
9
+ python: "3.13"
10
+ commands:
11
+ - asdf plugin add uv
12
+ - asdf install uv latest
13
+ - asdf global uv latest
14
+ - uv sync --group docs
15
+ - uv run python -m sphinx -T -b html -d docs/_build/doctrees -D language=en
16
+ docs $READTHEDOCS_OUTPUT/html
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2025, Alec Thomson.
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ * Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ * Neither the name of the vector package developers nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,87 @@
1
+ Metadata-Version: 2.4
2
+ Name: jolly-roger
3
+ Version: 0.0.2
4
+ Summary: The pirate flagger
5
+ Project-URL: Homepage, https://github.com/flint-crew/jolly-roger
6
+ Project-URL: Bug Tracker, https://github.com/flint-crew/jolly-roger/issues
7
+ Project-URL: Discussions, https://github.com/flint-crew/jolly-roger/discussions
8
+ Project-URL: Changelog, https://github.com/flint-crew/jolly-roger/releases
9
+ Author-email: Alec Thomson <alec.thomson@csiro.au>
10
+ License-Expression: BSD-3-Clause
11
+ License-File: LICENSE
12
+ Classifier: Development Status :: 1 - Planning
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Scientific/Engineering
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.11
25
+ Requires-Dist: astropy
26
+ Requires-Dist: numpy>=2.0.0
27
+ Requires-Dist: python-casacore>=3.6.0
28
+ Requires-Dist: tqdm
29
+ Description-Content-Type: text/markdown
30
+
31
+ # jolly-roger
32
+
33
+ [![Actions Status][actions-badge]][actions-link]
34
+ [![Documentation Status][rtd-badge]][rtd-link]
35
+
36
+ [![PyPI version][pypi-version]][pypi-link]
37
+ <!-- [![Conda-Forge][conda-badge]][conda-link] -->
38
+ [![PyPI platforms][pypi-platforms]][pypi-link]
39
+
40
+ <!-- [![GitHub Discussion][github-discussions-badge]][github-discussions-link] -->
41
+
42
+ <!-- SPHINX-START -->
43
+
44
+ <!-- prettier-ignore-start -->
45
+ [actions-badge]: https://github.com/flint-crew/jolly-roger/workflows/CI/badge.svg
46
+ [actions-link]: https://github.com/flint-crew/jolly-roger/actions
47
+ [conda-badge]: https://img.shields.io/conda/vn/conda-forge/jolly-roger
48
+ [conda-link]: https://github.com/conda-forge/jolly-roger-feedstock
49
+ [github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github
50
+ [github-discussions-link]: https://github.com/flint-crew/jolly-roger/discussions
51
+ [pypi-link]: https://pypi.org/project/jolly-roger/
52
+ [pypi-platforms]: https://img.shields.io/pypi/pyversions/jolly-roger
53
+ [pypi-version]: https://img.shields.io/pypi/v/jolly-roger
54
+ [rtd-badge]: https://readthedocs.org/projects/jolly-roger/badge/?version=latest
55
+ [rtd-link]: https://jolly-roger.readthedocs.io/en/latest/?badge=latest
56
+
57
+ <!-- prettier-ignore-end -->
58
+
59
+ The pirate flagger!
60
+
61
+ # Installation
62
+
63
+ `pip install jolly-roger`
64
+
65
+ # About
66
+
67
+ This package attempts to flag visibilities that are contaminated by the Sun and uses a fairly simple heuristic based on the geometry of an interferometer.
68
+
69
+ In short, `jolly_roger` flags based on the projected baseline length should the array be tracking the Sun. The projected baseline length between some phased direction being tracked and the Sun can be significantly different. `jolly_roger` attempts to leverage this by only flagging data where the projected baseline length is between some nominal range that corresponds to angular scales associated with the Sun.
70
+
71
+ `jolly_roger` makes no guarentess about removing all contaminated visibilities, nor does it attempt to peel/subtract the Sun from the visibility data.
72
+
73
+ ## How does it work?
74
+
75
+ `jolly_roger` will recompute the (u,v,w)-coordinates of a measurement set as if it were tracking the Sun, from which (u,v)-distances are derieved for each baseline and timestep. An updated `FLAG` column can then be inserted into the measurement set suppressing visibilities that would be sensitive to a nominated range of angular scales.
76
+
77
+ ## Example
78
+
79
+ `jolly_roger` has a CLI entry point that can be called as:
80
+
81
+ ```
82
+ jolly_flagger scienceData.EMU_1141-55.SB47138.EMU_1141-55.beam00_averaged_cal.leakage.ms --min-horizon-limit-deg '-2' --max-horizon-limit-deg 30 --min-scale-deg 0.075
83
+ ```
84
+
85
+ Here we are flagging visibilities that correspond to instances where:
86
+ - the Sun has an elevation between -2 and 30 degrees, and
87
+ - they are sensitive to angular scales between 0.075 and 1.0 segrees.
@@ -0,0 +1,57 @@
1
+ # jolly-roger
2
+
3
+ [![Actions Status][actions-badge]][actions-link]
4
+ [![Documentation Status][rtd-badge]][rtd-link]
5
+
6
+ [![PyPI version][pypi-version]][pypi-link]
7
+ <!-- [![Conda-Forge][conda-badge]][conda-link] -->
8
+ [![PyPI platforms][pypi-platforms]][pypi-link]
9
+
10
+ <!-- [![GitHub Discussion][github-discussions-badge]][github-discussions-link] -->
11
+
12
+ <!-- SPHINX-START -->
13
+
14
+ <!-- prettier-ignore-start -->
15
+ [actions-badge]: https://github.com/flint-crew/jolly-roger/workflows/CI/badge.svg
16
+ [actions-link]: https://github.com/flint-crew/jolly-roger/actions
17
+ [conda-badge]: https://img.shields.io/conda/vn/conda-forge/jolly-roger
18
+ [conda-link]: https://github.com/conda-forge/jolly-roger-feedstock
19
+ [github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github
20
+ [github-discussions-link]: https://github.com/flint-crew/jolly-roger/discussions
21
+ [pypi-link]: https://pypi.org/project/jolly-roger/
22
+ [pypi-platforms]: https://img.shields.io/pypi/pyversions/jolly-roger
23
+ [pypi-version]: https://img.shields.io/pypi/v/jolly-roger
24
+ [rtd-badge]: https://readthedocs.org/projects/jolly-roger/badge/?version=latest
25
+ [rtd-link]: https://jolly-roger.readthedocs.io/en/latest/?badge=latest
26
+
27
+ <!-- prettier-ignore-end -->
28
+
29
+ The pirate flagger!
30
+
31
+ # Installation
32
+
33
+ `pip install jolly-roger`
34
+
35
+ # About
36
+
37
+ This package attempts to flag visibilities that are contaminated by the Sun and uses a fairly simple heuristic based on the geometry of an interferometer.
38
+
39
+ In short, `jolly_roger` flags based on the projected baseline length should the array be tracking the Sun. The projected baseline length between some phased direction being tracked and the Sun can be significantly different. `jolly_roger` attempts to leverage this by only flagging data where the projected baseline length is between some nominal range that corresponds to angular scales associated with the Sun.
40
+
41
+ `jolly_roger` makes no guarentess about removing all contaminated visibilities, nor does it attempt to peel/subtract the Sun from the visibility data.
42
+
43
+ ## How does it work?
44
+
45
+ `jolly_roger` will recompute the (u,v,w)-coordinates of a measurement set as if it were tracking the Sun, from which (u,v)-distances are derieved for each baseline and timestep. An updated `FLAG` column can then be inserted into the measurement set suppressing visibilities that would be sensitive to a nominated range of angular scales.
46
+
47
+ ## Example
48
+
49
+ `jolly_roger` has a CLI entry point that can be called as:
50
+
51
+ ```
52
+ jolly_flagger scienceData.EMU_1141-55.SB47138.EMU_1141-55.beam00_averaged_cal.leakage.ms --min-horizon-limit-deg '-2' --max-horizon-limit-deg 30 --min-scale-deg 0.075
53
+ ```
54
+
55
+ Here we are flagging visibilities that correspond to instances where:
56
+ - the Sun has an elevation between -2 and 30 degrees, and
57
+ - they are sensitive to angular scales between 0.075 and 1.0 segrees.