pyuvdata 3.2.6__tar.gz → 3.2.8__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.
- pyuvdata-3.2.8/.github/dependabot.yml +8 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/workflows/macosx_windows_ci.yaml +20 -3
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/workflows/numba_test.yaml +8 -4
- pyuvdata-3.2.8/.github/workflows/publish-to-test-pypi.yaml +111 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/workflows/warning_test.yaml +9 -5
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.gitignore +3 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.pre-commit-config.yaml +6 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/CHANGELOG.md +111 -9
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/PKG-INFO +14 -12
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/README.md +2 -2
- pyuvdata-3.2.8/ci/prefetch_test_data.py +67 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_min_deps_tests.yml +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_min_versions_tests.yml +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_tests.yml +2 -2
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_tests_mac_arm.yml +2 -2
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_tests_windows.yml +2 -2
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/test_requirements.txt +1 -1
- pyuvdata-3.2.8/docs/Images/mwa_fa_proj.png +0 -0
- pyuvdata-3.2.8/docs/Images/mwa_fa_resp.png +0 -0
- pyuvdata-3.2.8/docs/Images/short_dipole_fa_projection.png +0 -0
- pyuvdata-3.2.8/docs/Images/short_dipole_fa_response.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/analytic_beam_tutorial.rst +37 -10
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/analytic_beams.rst +4 -3
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/beam_interface_tutorial.rst +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/conventions.rst +14 -11
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_uvcal.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_uvdata.py +2 -2
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/calh5.tex +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/uvh5_memo.tex +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/tutorial_data_note.rst +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/uvbeam_tutorial.rst +97 -24
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/uvcal_tutorial.rst +3 -3
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/uvdata_tutorial.rst +7 -6
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/environment.yaml +2 -2
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/pyproject.toml +20 -15
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/analytic_beam.py +180 -25
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/beam_interface.py +28 -18
- pyuvdata-3.2.8/src/pyuvdata/data/mwa_config_data/mwa_lna_impedance.txt +452 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/test_analytic_beam.py +2 -10
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/test_data.yaml +2 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/test_data_registry.txt +2 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/datasets.py +3 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/parameter.py +4 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/testing/warning_check.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/__init__.py +2 -0
- pyuvdata-3.2.8/src/pyuvdata/utils/averaging.py +195 -0
- pyuvdata-3.2.8/src/pyuvdata/utils/averaging_numba.py +173 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/bltaxis.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/coordinates.c +22025 -18000
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/coordinates.py +2 -2
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/frequency.py +39 -0
- pyuvdata-3.2.8/src/pyuvdata/utils/gain_interpolate.py +1319 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/fhd.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/phase_center_catalog.py +4 -4
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/phasing.c +19434 -15815
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/phasing.py +68 -59
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/plotting.py +20 -5
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/pol.py +5 -5
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/times.py +6 -6
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/tools.py +157 -7
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/types.py +1 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/uvcalibrate.py +271 -11
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbase.py +224 -9
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/beamfits.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/initializers.py +23 -11
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/mwa_beam.py +413 -101
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/uvbeam.c +19522 -15897
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/uvbeam.py +503 -73
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/calfits.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/fhd_cal.py +2 -2
- pyuvdata-3.2.8/src/pyuvdata/uvcal/miriad_cal.py +434 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/ms_cal.py +35 -50
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/uvcal.py +372 -10
- pyuvdata-3.2.8/src/pyuvdata/uvdata/aipy_extracts.py +1403 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/corr_fits.c +22332 -18364
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/fhd.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mir_parser.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/miriad.py +43 -460
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/ms.py +71 -34
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mwa_corr_fits.py +7 -7
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad_wrap.cpp +20711 -17855
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/uvdata.py +756 -967
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/uvfits.py +6 -6
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/uvh5.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvflag/uvflag.py +10 -4
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/PKG-INFO +14 -12
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/SOURCES.txt +16 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/requires.txt +7 -5
- pyuvdata-3.2.8/src/pyuvdata.egg-info/scm_file_list.json +285 -0
- pyuvdata-3.2.8/src/pyuvdata.egg-info/scm_version.json +8 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/conftest.py +39 -14
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_analytic_beam.py +155 -18
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_beam_interface.py +28 -13
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_telescopes.py +9 -8
- pyuvdata-3.2.8/tests/utils/test_averaging.py +433 -0
- pyuvdata-3.2.8/tests/utils/test_gain_interpolate.py +970 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_phasing.py +95 -141
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_tools.py +48 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_uvcalibrate.py +554 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/conftest.py +74 -3
- pyuvdata-3.2.8/tests/uvbeam/test_mwa_beam.py +559 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_uvbeam.py +255 -78
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_fhd_cal.py +2 -1
- pyuvdata-3.2.8/tests/uvcal/test_miriad_cal.py +374 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_ms_cal.py +79 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_uvcal.py +255 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_aipy_extracts.py +59 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_fhd.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_mir.py +1 -1
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_miriad.py +112 -22
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_ms.py +100 -25
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_mwa_corr_fits.py +6 -6
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_uvdata.py +448 -48
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_uvfits.py +2 -6
- pyuvdata-3.2.6/.github/workflows/publish-to-test-pypi.yaml +0 -86
- pyuvdata-3.2.6/src/pyuvdata/uvdata/aipy_extracts.py +0 -755
- pyuvdata-3.2.6/tests/uvbeam/test_mwa_beam.py +0 -303
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.circleci/config.yml +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.codecov.yml +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.coveragerc +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/CITATION.cff +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/CONTRIBUTING.md +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.readthedocs.yml +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/CODE_OF_CONDUCT.md +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/LICENSE +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/azure-piplines.yml +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/abs_gains.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/airy_beam_100MHz.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/airy_beam_200MHz.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/amplitude_waterfall.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/amplitude_waterfall_spw0.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/beam_coordinate_figure.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/dipole_mwa_power.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/efield_power_beam_cut.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_efield.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_efield_phase.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_efield_zoom.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_power_healpix_zoom.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_power_zoom.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_pstokes.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_off_zenith_power.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_cross_power.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_efield.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_efield_abs.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_power.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/select_beam_cut.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/short_dipole_beam.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Makefile +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/_templates/breadcrumbs.html +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/beam_interface.rst +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/conf.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/conftest.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/cst_settings_yaml.rst +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/developer_docs.rst +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/fast_calh5_meta.rst +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/fast_uvh5_meta.rst +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_index.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_telescope.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_uvbeam.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_uvflag.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/AIPSMEM117.PDF +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/Far_field_spherical_FEKO_draft2.pdf +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/GPS.G1-X-00006_Datum_Transformations.pdf +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/aasjournal.bst +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/app_icrs_frame_comp.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/beamfits_memo.pdf +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/beamfits_memo.tex +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/calfits_memo.pdf +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/calfits_memo.tex +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/calh5.pdf +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/making_release.md +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/miriad-uvvars.pdf +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/ncp_icrs_app.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/phasing.bib +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/phasing.pdf +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/phasing.tex +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/simple_interferometer.png +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/uvh5_diagram.pdf +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/uvh5_memo.pdf +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/requirements.txt +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/tutorial.rst +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/utility_functions.rst +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/paper.bib +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/paper.md +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/check_uvfits_equal.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/convert_to_uvfits.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/fhd_batch_convert.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/make_bad_fhd_files.pro +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/pyuvdata_inspect.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/readwrite_uvfits.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/renumber_ants.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/test_cover_noinstall.sh +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/test_coverage.sh +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/truncate_fhd_files.pro +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/uvfits_memtest.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/setup.cfg +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/setup.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/README.md +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/hera_ant_pos.csv +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/jpl_major_bodies.json +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa128_ant_layouts.npz +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_ant_pos.csv +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/Chebychev_coeff.h5 +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/MWA_rev_cb_10khz_doubles.h5 +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/MWA_rev_cb_10khz_doubles.txt +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/mwax_pfb_bandpass_40kHz.h5 +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/mwax_pfb_bandpass_80kHz.h5 +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/sigma1.h5 +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/docstrings.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/telescopes.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/testing/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/antenna.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/apply_uvflag.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/array_collapse.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/bls.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/bls_numba.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/coordinates.pyx +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/history.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/antpos.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/fits.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/hdf5.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/ms.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/phasing.pyx +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/redundancy.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/cst_beam.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/feko_beam.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/uvbeam.pyx +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/calh5.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/initializers.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/corr_fits.pyx +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/initializers.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mir.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mir_meta_data.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/aipy_compat.h +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/bug.c +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/dio.c +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/headio.c +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/hio.c +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/hio.h +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/io.h +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/maskio.c +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/maxdimc.h +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad.h +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad_wrap.h +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad_wrap.pyx +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/pack.c +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/sysdep.h +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/uvio.c +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvflag/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/dependency_links.txt +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/top_level.txt +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_docstrings.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_parameter.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_uvbase.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_warning_check.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/conftest.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/io/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/io/test_hdf5.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/io/test_ms.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_apply_uvflag.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_array_collapse.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_bls.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_bls_numba.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_bltaxis.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_coordinates.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_phase_center_catalog.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_plotting.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_pol.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_redundancy.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_times.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_beamfits.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_cst_beam.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_feko_beam.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_initializers.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/conftest.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_calfits.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_calh5.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_initializers.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/conftest.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_import_errors.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_initializers.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_mir_meta_data.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_mir_parser.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_uvh5.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvflag/__init__.py +0 -0
- {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvflag/test_uvflag.py +0 -0
|
@@ -12,11 +12,16 @@ concurrency:
|
|
|
12
12
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
13
13
|
cancel-in-progress: true
|
|
14
14
|
|
|
15
|
+
permissions: {}
|
|
16
|
+
|
|
15
17
|
jobs:
|
|
16
18
|
tests:
|
|
17
19
|
name: Run Tests
|
|
18
20
|
env:
|
|
19
21
|
PYTHON: ${{ matrix.python-version }}
|
|
22
|
+
# Keep the test data in the workspace rather than the per-OS default cache
|
|
23
|
+
# location, so it can be cached with a single path on every runner.
|
|
24
|
+
PYUVDATA_DATA_DIR: ${{ github.workspace }}/pooch_cache
|
|
20
25
|
runs-on: ${{ matrix.os }}
|
|
21
26
|
defaults:
|
|
22
27
|
run:
|
|
@@ -33,12 +38,13 @@ jobs:
|
|
|
33
38
|
- env_name: pyuvdata_tests_mac_arm
|
|
34
39
|
os: macos-latest
|
|
35
40
|
steps:
|
|
36
|
-
- uses: actions/checkout@
|
|
41
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
37
42
|
with:
|
|
38
43
|
fetch-depth: 0
|
|
44
|
+
persist-credentials: false
|
|
39
45
|
|
|
40
46
|
- name: Setup Miniforge
|
|
41
|
-
uses: conda-incubator/setup-miniconda@
|
|
47
|
+
uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
|
|
42
48
|
with:
|
|
43
49
|
miniforge-version: latest
|
|
44
50
|
python-version: ${{ matrix.python-version }}
|
|
@@ -56,6 +62,16 @@ jobs:
|
|
|
56
62
|
exit 1;
|
|
57
63
|
fi
|
|
58
64
|
|
|
65
|
+
- name: Restore cached test data
|
|
66
|
+
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
67
|
+
with:
|
|
68
|
+
path: pooch_cache
|
|
69
|
+
key: pooch-${{ runner.os }}-${{ hashFiles('src/pyuvdata/datasets.py') }}
|
|
70
|
+
|
|
71
|
+
- name: Download any test data not already cached
|
|
72
|
+
run: |
|
|
73
|
+
python ci/prefetch_test_data.py "$PYUVDATA_DATA_DIR"
|
|
74
|
+
|
|
59
75
|
- name: Install
|
|
60
76
|
run: |
|
|
61
77
|
CFLAGS="-DCYTHON_TRACE=1 -DCYTHON_TRACE_NOGIL=1" pip install .
|
|
@@ -64,8 +80,9 @@ jobs:
|
|
|
64
80
|
run: |
|
|
65
81
|
python -m pytest -n auto --dist=loadfile --cov=pyuvdata --cov-config=.coveragerc --cov-report xml:./coverage.xml
|
|
66
82
|
|
|
67
|
-
- uses: codecov/codecov-action@
|
|
83
|
+
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
68
84
|
if: success()
|
|
69
85
|
with:
|
|
70
86
|
token: ${{secrets.CODECOV_TOKEN}} #required
|
|
71
87
|
files: ./coverage.xml #optional
|
|
88
|
+
fail_ci_if_error: true
|
|
@@ -12,17 +12,20 @@ concurrency:
|
|
|
12
12
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
13
13
|
cancel-in-progress: true
|
|
14
14
|
|
|
15
|
+
permissions: {}
|
|
16
|
+
|
|
15
17
|
jobs:
|
|
16
18
|
numba_test:
|
|
17
19
|
name: Numba Utils Tests
|
|
18
20
|
runs-on: ubuntu-latest
|
|
19
21
|
steps:
|
|
20
|
-
- uses: actions/checkout@
|
|
22
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
21
23
|
with:
|
|
22
24
|
fetch-depth: 0
|
|
25
|
+
persist-credentials: false
|
|
23
26
|
|
|
24
27
|
- name: Setup Python
|
|
25
|
-
uses: actions/setup-python@
|
|
28
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
26
29
|
with:
|
|
27
30
|
python-version-file: pyproject.toml
|
|
28
31
|
|
|
@@ -37,10 +40,11 @@ jobs:
|
|
|
37
40
|
|
|
38
41
|
- name: Run Tests
|
|
39
42
|
run: |
|
|
40
|
-
NUMBA_DISABLE_JIT=1 pytest tests/utils/test_bls_numba.py -n auto --cov=pyuvdata --cov-config=.coveragerc --cov-report xml:coverage.xml
|
|
43
|
+
NUMBA_DISABLE_JIT=1 pytest tests/utils/test_bls_numba.py tests/utils/test_gain_interpolate.py tests/utils/test_averaging.py -n auto --cov=pyuvdata --cov-config=.coveragerc --cov-report xml:coverage.xml
|
|
41
44
|
|
|
42
|
-
- uses: codecov/codecov-action@
|
|
45
|
+
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
43
46
|
if: success()
|
|
44
47
|
with:
|
|
45
48
|
token: ${{secrets.CODECOV_TOKEN}} #required
|
|
46
49
|
files: ./coverage.xml #optional
|
|
50
|
+
fail_ci_if_error: true
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
name: Publish Python distributions to PyPI and TestPyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: main
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
permissions: {}
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build_wheels:
|
|
17
|
+
name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }} ${{ matrix.buildplat[2] }}
|
|
18
|
+
runs-on: ${{ matrix.buildplat[0] }}
|
|
19
|
+
env:
|
|
20
|
+
PYUVDATA_DATA_DIR: ${{ github.workspace }}/pooch_cache
|
|
21
|
+
strategy:
|
|
22
|
+
fail-fast: false
|
|
23
|
+
matrix:
|
|
24
|
+
buildplat:
|
|
25
|
+
- [ubuntu-latest, manylinux, x86_64]
|
|
26
|
+
- [macos-15-intel, macosx, x86_64]
|
|
27
|
+
- [macos-latest, macosx, arm64]
|
|
28
|
+
- [windows-latest, win, AMD64]
|
|
29
|
+
python: ["cp311", "cp312", "cp313", "cp314"]
|
|
30
|
+
exclude:
|
|
31
|
+
# exclude intel macs on python 3.14 because there's no compatible numba wheel
|
|
32
|
+
- buildplat: [macos-15-intel, macosx, x86_64]
|
|
33
|
+
python: "cp314"
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
36
|
+
with:
|
|
37
|
+
fetch-depth: 0
|
|
38
|
+
persist-credentials: false
|
|
39
|
+
|
|
40
|
+
# Only for the prefetch step below
|
|
41
|
+
- name: Setup Python
|
|
42
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
43
|
+
with:
|
|
44
|
+
python-version-file: pyproject.toml
|
|
45
|
+
|
|
46
|
+
# Suppress the cache-poisoning audit for this step, since the only way to fix it
|
|
47
|
+
# is to allow for lookup-only , which would stop the cache from being restored.
|
|
48
|
+
# Known issue: https://github.com/zizmorcore/zizmor/issues/2071 -- the ignore can
|
|
49
|
+
# get removed once the issue is implemented in zizmor.
|
|
50
|
+
- name: Restore cached test data
|
|
51
|
+
if: github.event_name != 'release'
|
|
52
|
+
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 # zizmor: ignore[cache-poisoning]
|
|
53
|
+
with:
|
|
54
|
+
path: pooch_cache
|
|
55
|
+
key: pooch-${{ runner.os }}-${{ hashFiles('src/pyuvdata/datasets.py') }}
|
|
56
|
+
|
|
57
|
+
- name: Download any test data not already cached
|
|
58
|
+
shell: bash
|
|
59
|
+
run: |
|
|
60
|
+
python -m pip install pooch pyyaml
|
|
61
|
+
python ci/prefetch_test_data.py "$PYUVDATA_DATA_DIR"
|
|
62
|
+
|
|
63
|
+
- name: Build wheels
|
|
64
|
+
uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0
|
|
65
|
+
env:
|
|
66
|
+
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}*
|
|
67
|
+
CIBW_ARCHS: ${{ matrix.buildplat[2] }}
|
|
68
|
+
CIBW_TEST_REQUIRES: "-r ci/test_requirements.txt"
|
|
69
|
+
CIBW_TEST_COMMAND: "pytest {project}/tests -n auto"
|
|
70
|
+
CIBW_ENVIRONMENT: PYUVDATA_DATA_DIR='${{ env.PYUVDATA_DATA_DIR }}'
|
|
71
|
+
CIBW_ENVIRONMENT_LINUX: PYUVDATA_DATA_DIR=/project/pooch_cache
|
|
72
|
+
|
|
73
|
+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
74
|
+
with:
|
|
75
|
+
name: cibw-wheels-${{ matrix.python }}-${{ matrix.buildplat[1] }}-${{ matrix.buildplat[2] }}
|
|
76
|
+
path: ./wheelhouse/*.whl
|
|
77
|
+
|
|
78
|
+
make_sdist:
|
|
79
|
+
name: Make SDist
|
|
80
|
+
runs-on: ubuntu-latest
|
|
81
|
+
steps:
|
|
82
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
83
|
+
with:
|
|
84
|
+
fetch-depth: 0
|
|
85
|
+
persist-credentials: false
|
|
86
|
+
|
|
87
|
+
- name: Build SDist
|
|
88
|
+
run: pipx run build --sdist
|
|
89
|
+
|
|
90
|
+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
91
|
+
with:
|
|
92
|
+
name: cibw-sdist
|
|
93
|
+
path: dist/*.tar.gz
|
|
94
|
+
|
|
95
|
+
upload_all:
|
|
96
|
+
needs: [build_wheels, make_sdist]
|
|
97
|
+
runs-on: ubuntu-latest
|
|
98
|
+
permissions:
|
|
99
|
+
# IMPORTANT: this permission is mandatory for Trusted Publishing
|
|
100
|
+
id-token: write
|
|
101
|
+
steps:
|
|
102
|
+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
103
|
+
with:
|
|
104
|
+
# unpacks all CIBW artifacts into dist/
|
|
105
|
+
pattern: cibw-*
|
|
106
|
+
path: dist
|
|
107
|
+
merge-multiple: true
|
|
108
|
+
|
|
109
|
+
- name: Upload to PyPI
|
|
110
|
+
if: startsWith(github.ref, 'refs/tags')
|
|
111
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
@@ -12,6 +12,8 @@ concurrency:
|
|
|
12
12
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
13
13
|
cancel-in-progress: true
|
|
14
14
|
|
|
15
|
+
permissions: {}
|
|
16
|
+
|
|
15
17
|
jobs:
|
|
16
18
|
warning_test:
|
|
17
19
|
name: Warning Test
|
|
@@ -31,12 +33,13 @@ jobs:
|
|
|
31
33
|
pip-options: "test"
|
|
32
34
|
coverage: false
|
|
33
35
|
steps:
|
|
34
|
-
- uses: actions/checkout@
|
|
36
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
35
37
|
with:
|
|
36
38
|
fetch-depth: 0
|
|
39
|
+
persist-credentials: false
|
|
37
40
|
|
|
38
41
|
- name: Setup Python
|
|
39
|
-
uses: actions/setup-python@
|
|
42
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
40
43
|
with:
|
|
41
44
|
python-version: ${{ matrix.python-version }}
|
|
42
45
|
|
|
@@ -51,10 +54,11 @@ jobs:
|
|
|
51
54
|
|
|
52
55
|
- name: Run Tests
|
|
53
56
|
run: |
|
|
54
|
-
pytest -W error -n auto ${
|
|
57
|
+
pytest -W error -n auto ${PYTEST_OPTIONS}
|
|
55
58
|
|
|
56
|
-
- uses: codecov/codecov-action@
|
|
57
|
-
if: success()
|
|
59
|
+
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
60
|
+
if: matrix.coverage == true && success()
|
|
58
61
|
with:
|
|
59
62
|
token: ${{secrets.CODECOV_TOKEN}} #required
|
|
60
63
|
files: ./coverage.xml #optional
|
|
64
|
+
fail_ci_if_error: true
|
|
@@ -17,7 +17,7 @@ repos:
|
|
|
17
17
|
args: ['--fix=no']
|
|
18
18
|
|
|
19
19
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
20
|
-
rev: v0.
|
|
20
|
+
rev: v0.16.7
|
|
21
21
|
hooks:
|
|
22
22
|
- id: ruff
|
|
23
23
|
- id: ruff-format
|
|
@@ -28,3 +28,8 @@ repos:
|
|
|
28
28
|
- id: bandit
|
|
29
29
|
args: ["-c", "pyproject.toml", "--recursive"]
|
|
30
30
|
additional_dependencies: ["bandit[toml]"]
|
|
31
|
+
|
|
32
|
+
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
33
|
+
rev: v1.30.1
|
|
34
|
+
hooks:
|
|
35
|
+
- id: zizmor
|
|
@@ -3,6 +3,108 @@ All notable changes to this project will be documented in this file.
|
|
|
3
3
|
|
|
4
4
|
## [Unreleased]
|
|
5
5
|
|
|
6
|
+
## [3.2.8] - 2025-09-18
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
- A bug in `UVData.read_ms` where visibility units could not be parsed when stored in
|
|
10
|
+
a MeasurementSet as a singleton entry/list.
|
|
11
|
+
- A bug in `UVData.write_ms` which caused `corrected_data` and `model_data` not to be
|
|
12
|
+
reordered in the same way that, e.g., `UVData.data_array` was on write.
|
|
13
|
+
- A bug in `UVData.write_ms` which caused `corrected_data` and `model_data` not to be
|
|
14
|
+
conjugated (and inconsistent with `UVData.data_array`) when a mixture of baseline
|
|
15
|
+
conjugation schemes was present.
|
|
16
|
+
- A bug in `UVData.read_ms_cal` and `UVData.write_ms_cal` where gains tables where not
|
|
17
|
+
being conjugated correctly.
|
|
18
|
+
- A bug where the Jones array stored in calibration tables generated ny `UVCal.write_ms_cal`
|
|
19
|
+
could be incorrectly ordered.
|
|
20
|
+
- A bug where `utils.gain_interpolate.time_interp_cal` was not unwrapping phase gains
|
|
21
|
+
along the time axis correctly (mistakenly was using the Jones axis instead).
|
|
22
|
+
- A bug where calling `UVData.conjugate_bls` was not reordering `nsample_array` and
|
|
23
|
+
`flag_array` cross-polarization entries.
|
|
24
|
+
- A bug in `UVData.phase` where near-field phasing ignored `select_mask` and applied the
|
|
25
|
+
near-field correction to every record, overwriting the w-coordinate and rotating the
|
|
26
|
+
visibilities of records belonging to other phase centers.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
- `UVData.read_ms` and `UVData.write_ms` now always flip conjugation scheme on read and
|
|
30
|
+
write for non-pyuvdata generated MeasurementSets (it was previously believed that when
|
|
31
|
+
ant1 > ant2, the conjugation scheme may be flipped, but that was a misreading of CASA's
|
|
32
|
+
codebase).
|
|
33
|
+
|
|
34
|
+
## [3.2.7] - 2025-08-20
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
- Support for reading Miriad bandpass, gains, delays, and leakage calibration tables
|
|
38
|
+
into `UVCal` via `UVCal.read_miriad_cal`.
|
|
39
|
+
- A new utility function `utils.averaging.mapped_average`, which performs a weighted
|
|
40
|
+
average of an array along a single axis using an arbitrary map of input to output
|
|
41
|
+
positions.
|
|
42
|
+
- A `chan_map` keyword to `UVData.frequency_average`, which allows for mapping input to
|
|
43
|
+
output channels, allowing for more sophisiticated averaging schemes (e.g., unevenly
|
|
44
|
+
sized bins).
|
|
45
|
+
- The keywords `weight_by_nsample` and `sum_nsample` to `UVData.frequency_average`,
|
|
46
|
+
which control whether channels are weighted by `nsample_array` in the average, and
|
|
47
|
+
whether `nsample_array` records the summed or the fractional number of samples.
|
|
48
|
+
- A new method `UVCal.interpolate_in_time`, which allows for UVCal calibration tables
|
|
49
|
+
to be "upsampled" in time.
|
|
50
|
+
- A new module (`gain_interpolate.py`) for performing time-based interpolation of
|
|
51
|
+
calibration solutions.
|
|
52
|
+
- A new option for `uvcalibrate`, called `apply_to_weights`, which allows for the values
|
|
53
|
+
in `UVData.nsample_array` to be adjusted in a manner consistent with the expected
|
|
54
|
+
inverse variance (e.g., if the visibilities are scaled up by a factor of 2 in amplitude,
|
|
55
|
+
`nsample_array` is scaled down by a factor of 4).
|
|
56
|
+
- The options `interpolate` and `interp_kwargs` were added to `uvcalibrate`, which allow
|
|
57
|
+
the solutions to be interpolated onto the times of the data being calibrated (via
|
|
58
|
+
`UVCal.interpolate_in_time`), rather than requiring the two to already match.
|
|
59
|
+
- The options `uvd_select_kwargs` and `uvc_select_kwargs` were added to `uvcalibrate`,
|
|
60
|
+
which allow the calibration to be applied to a subset of the data, and with a subset of
|
|
61
|
+
the solutions, respectively. An additional option, `flag_unselected`, allows users to
|
|
62
|
+
specify whether to flag unselected records in the `UVData` object.
|
|
63
|
+
- A new function `utils.tools.mask_slicify`, which converts a boolean mask into a slice
|
|
64
|
+
if possible, otherwise into an array of index positions.
|
|
65
|
+
- Support for two new types of beams in UVBeam and AnalyticBeam: feed_aligned_response
|
|
66
|
+
and feed_aligned_projection beams which result from an E-field beam decomposition
|
|
67
|
+
used in some analysis codes.
|
|
68
|
+
- Added more options for controlling labels on beam plots.
|
|
69
|
+
- Support for MWA Average Embedded Element beams in UVBeam.
|
|
70
|
+
|
|
71
|
+
### Changed
|
|
72
|
+
- Moved the miriad telescope, antenna and frequency axis handling on to the
|
|
73
|
+
`aipy_extracts.UV` object so that it is shared between the `UVData` and `UVCal` readers,
|
|
74
|
+
adding `UV.get_telescope`, `UV.get_freq_axis` and `UV.get_data_antennas` methods.
|
|
75
|
+
- Changed how `UVCal.read_ms_cal` groups together calibration solutions based on time.
|
|
76
|
+
Previously solution timestamps needed to be within the default tolerance for
|
|
77
|
+
`UVCal.time_array` (1 millisecond), but testing suggests that CASA-based processes
|
|
78
|
+
have some "slop" in them on the order of tens of milliseconds, and therefore the
|
|
79
|
+
time tolerance was increased to 250 ms. This can be controlled through the keyword
|
|
80
|
+
`time_atol` (specified in seconds).
|
|
81
|
+
- Refactored `UVData.frequency_average` and `UVData.downsample_in_time` to use the new
|
|
82
|
+
numba-based `utils.averaging.mapped_average` routine, which is significantly faster and
|
|
83
|
+
uses less memory (substantially so for `UVData.frequency_average`).
|
|
84
|
+
- `uvcalibrate` now records more detail in `UVData.history`, including which records
|
|
85
|
+
were calibrated when a selection was used, whether the rest were flagged, and how the
|
|
86
|
+
solutions were interpolated if `interpolate` was set.
|
|
87
|
+
- Updating code to no longer set shapes directly on ndarrays (deprecated in NumPy 2.5)
|
|
88
|
+
- Require lunarsky>1.0 to drop spiceypy requirement
|
|
89
|
+
|
|
90
|
+
### Fixed
|
|
91
|
+
- A bug where `UVData.frequency_average` would either raise an IndexError or zero out
|
|
92
|
+
fully-flagged channels in all spectral windows but the first, rather than recording
|
|
93
|
+
the average of the flagged values.
|
|
94
|
+
- A bug where `UVCal.pol_convention` was not being properly set when reading in
|
|
95
|
+
FHD calibration solutions due to a typo.
|
|
96
|
+
- A bug where `UVData.scan_number_array` was not properly updated when objects
|
|
97
|
+
were resampled in time.
|
|
98
|
+
- A bug where `UVData.scan_number_array` was not properly updated in the
|
|
99
|
+
`UVData.inflate_by_redundancy` method.
|
|
100
|
+
- A bug where `UVData.scan_number_array` was not properly updated when objects
|
|
101
|
+
were added or concatenated. The fix involved a major refactoring that should prevent
|
|
102
|
+
similar bugs in the future by using UVParameter forms to detect which attributes
|
|
103
|
+
to update on UVData objects.
|
|
104
|
+
|
|
105
|
+
### Removed
|
|
106
|
+
- Spiceypy error catching in tests
|
|
107
|
+
|
|
6
108
|
## [3.2.6] - 2025-03-13
|
|
7
109
|
|
|
8
110
|
### Added
|
|
@@ -34,9 +136,9 @@ better default colormaps for phase.
|
|
|
34
136
|
fringe-stopped data.
|
|
35
137
|
|
|
36
138
|
### Fixed
|
|
37
|
-
- A backwards
|
|
139
|
+
- A backwards compatibility issue with feed arrays in old beamfits files which
|
|
38
140
|
could specify feeds as "e" or "n".
|
|
39
|
-
-
|
|
141
|
+
- Compatibility with numpy>=2.3
|
|
40
142
|
|
|
41
143
|
## [3.2.4] - 2025-09-15
|
|
42
144
|
|
|
@@ -686,7 +788,7 @@ to allow the function name to be passed into the methods, with sensible defaulti
|
|
|
686
788
|
`Nspws` (which used to only be required for baseline and antenna types). These
|
|
687
789
|
parameters all already exist on UVData and UVCal objects and UVFlag objects initialized
|
|
688
790
|
from them will inherit them. UVFlag objects will also inherit these parameters when
|
|
689
|
-
they are converted between types using UVData and
|
|
791
|
+
they are converted between types using UVData and UVCal objects.
|
|
690
792
|
- The `UVFlag.set_telescope_params` method, similar to the ones on UVData and UVCal,
|
|
691
793
|
to set several of these new parameters.
|
|
692
794
|
|
|
@@ -1150,7 +1252,7 @@ taken at 2 seconds.
|
|
|
1150
1252
|
- Added handling for `object_name` and `extra_keywords` to `sum_vis` and `diff_vis` methods and added the `override_params` option to override other parameters.
|
|
1151
1253
|
|
|
1152
1254
|
### Changed
|
|
1153
|
-
- Changed to use Astropy sites for telescope locations when
|
|
1255
|
+
- Changed to use Astropy sites for telescope locations when available. This results in a small change for our known position for the MWA.
|
|
1154
1256
|
- Modified `UVData.read` to do faster concatenation of files, changed the interface to `UVData.fast_concat` to allow lists of `UVData` objects to be passed in.
|
|
1155
1257
|
|
|
1156
1258
|
### Fixed
|
|
@@ -1175,7 +1277,7 @@ taken at 2 seconds.
|
|
|
1175
1277
|
|
|
1176
1278
|
### Changed
|
|
1177
1279
|
- When `flex_spw=True`, the `channel_width` attribute of UVData is expected to be an array of type=float and shape=(`Nfreqs`,). Individual channels are allowed to have different channel widths.
|
|
1178
|
-
- Changed `freq_array` to be of shape (1, `Nfreqs`) (
|
|
1280
|
+
- Changed `freq_array` to be of shape (1, `Nfreqs`) (formerly (`Nspws`, `Nfreqs`)).
|
|
1179
1281
|
- Changed `data_array`, `flag_array`, `nsample_array` to be of shape (`Nblts`, 1, `Nfreqs`, `Npols`) (formerly (`Nblts`, `Nspws`, `Nfreqs`, `Npols`)).
|
|
1180
1282
|
- Changed UVH5 metadata byte conversion method from tobytes() to bytes()
|
|
1181
1283
|
|
|
@@ -1276,7 +1378,7 @@ controlled by the `method` keyword.
|
|
|
1276
1378
|
|
|
1277
1379
|
### Removed
|
|
1278
1380
|
- Previously deprecated code marked for removal in version > 1.5:
|
|
1279
|
-
- reading multiple files with file format specific read functions (e.g.
|
|
1381
|
+
- reading multiple files with file format specific read functions (e.g. read_miriad). Multi-file reads can only be performed with `uvdata.read`
|
|
1280
1382
|
- `read_metadata` keyword in various specific read functions (e.g. `read_miriad`)
|
|
1281
1383
|
- `metadata_only` keyword in `select` and `get_redundancies`
|
|
1282
1384
|
- `uvdata.miriad.read_miriad_metadata`
|
|
@@ -1315,7 +1417,7 @@ controlled by the `method` keyword.
|
|
|
1315
1417
|
- The `phase_center` and `phase_data` keywords to `read_mwa_corr_fits` in favor of `phase_to_pointing_center` and the `phase_center_radec` keyword in the generic `read` method.
|
|
1316
1418
|
- Support for reading only the header (not all the metadata) of uvfits files.
|
|
1317
1419
|
- The `read_uvfits_metadata` and `read_uvfits_data` methods on the UVFITS object.
|
|
1318
|
-
- The `read_miriad_metadata` method on the
|
|
1420
|
+
- The `read_miriad_metadata` method on the Miriad object.
|
|
1319
1421
|
|
|
1320
1422
|
## [1.4.2] - 2019-10-15
|
|
1321
1423
|
|
|
@@ -1402,7 +1504,7 @@ controlled by the `method` keyword.
|
|
|
1402
1504
|
- Added preliminary `UVFlag` module from hera_qm to pyuvdata. Will eventually promote to `UVBase` object, but for now this is undocumented functionality.
|
|
1403
1505
|
|
|
1404
1506
|
### Deprecated
|
|
1405
|
-
- Defined 'east' and 'north' as the allowed 'x_orientation' values in UVData and UVCal, Backwards
|
|
1507
|
+
- Defined 'east' and 'north' as the allowed 'x_orientation' values in UVData and UVCal, Backwards compatibility support exists for 'E' and 'N' values
|
|
1406
1508
|
- `UVData.order_pols` method in favor of `UVData.reorder_pols`.
|
|
1407
1509
|
|
|
1408
1510
|
### Fixed
|
|
@@ -1504,7 +1606,7 @@ controlled by the `method` keyword.
|
|
|
1504
1606
|
- new method to calculate uvws from antenna positions
|
|
1505
1607
|
- `UVBeam.get_beam_area` and `UVBeam.get_beam_sq_area` functions to calculate beam integrals, including for pseudo-Stokes beams
|
|
1506
1608
|
- beam interpolation methods, to any set of points and to healpix pixel centers
|
|
1507
|
-
- a script to renumber antennas for CASA
|
|
1609
|
+
- a script to renumber antennas for CASA compatibility if there are fewer than 256 antennas but numbers higher than that
|
|
1508
1610
|
- memo describing the beam fits file format
|
|
1509
1611
|
- method to peak normalize UVBeam objects
|
|
1510
1612
|
- support for reading FHD calibrations into UVCal objects
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyuvdata
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.8
|
|
4
4
|
Summary: A pythonic interface for radio astronomy interferometry data
|
|
5
5
|
Author-email: Bryna Hazelton <brynah@phys.washington.edu>, Adam Beardsley <adam.beardsley@winona.edu>, Daniel Jacobs <daniel.c.jacobs@gmail.com>, Garrett Keating <garrett.keating@cfa.harvard.edu>, Nicholas Kern <nkern@mit.edu>, Matthew Kolopanis <matthew.kolopanis@gmail.com>, Adam Lanman <alanman@mit.edu>, Paul La Plante <paul.laplante@unlv.edu>, Steven Murray <murray.steveng@gmail.com>, Jonathan Pober <jonathan_pober@brown.edu>, Pyxie Star <pyxiestar@gmail.com>
|
|
6
6
|
Maintainer-email: Bryna Hazelton <brynah@phys.washington.edu>, Matthew Kolopanis <matthew.kolopanis@gmail.com>, Garrett Keating <garrett.keating@cfa.harvard.edu>, Steven Murray <murray.steveng@gmail.com>
|
|
7
|
+
License-Expression: BSD-2-Clause
|
|
7
8
|
Project-URL: Repository, https://github.com/RadioAstronomySoftwareGroup/pyuvdata
|
|
8
9
|
Project-URL: Documentation, https://pyuvdata.readthedocs.io
|
|
9
10
|
Keywords: radio astronomy,interferometry
|
|
10
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Science/Research
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier:
|
|
15
|
-
Classifier:
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
15
|
+
Classifier: Operating System :: MacOS
|
|
16
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
16
17
|
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
17
18
|
Requires-Python: >=3.11
|
|
18
19
|
Description-Content-Type: text/markdown
|
|
@@ -31,13 +32,12 @@ Provides-Extra: astroquery
|
|
|
31
32
|
Requires-Dist: astroquery>=0.4.4; extra == "astroquery"
|
|
32
33
|
Provides-Extra: casa
|
|
33
34
|
Requires-Dist: python-casacore>=3.5.2; extra == "casa"
|
|
34
|
-
Requires-Dist: numpy<2.0,>=1.23; extra == "casa"
|
|
35
35
|
Provides-Extra: hdf5-compression
|
|
36
36
|
Requires-Dist: hdf5plugin>=3.3.1; extra == "hdf5-compression"
|
|
37
37
|
Provides-Extra: healpix
|
|
38
38
|
Requires-Dist: astropy_healpix>=1.0.2; extra == "healpix"
|
|
39
39
|
Provides-Extra: lunar
|
|
40
|
-
Requires-Dist: lunarsky>=0
|
|
40
|
+
Requires-Dist: lunarsky>=1.0; extra == "lunar"
|
|
41
41
|
Provides-Extra: novas
|
|
42
42
|
Requires-Dist: novas; extra == "novas"
|
|
43
43
|
Requires-Dist: novas_de405; extra == "novas"
|
|
@@ -45,15 +45,17 @@ Provides-Extra: plotting
|
|
|
45
45
|
Requires-Dist: matplotlib>=3.7; extra == "plotting"
|
|
46
46
|
Provides-Extra: all
|
|
47
47
|
Requires-Dist: pyuvdata[astroquery,casa,hdf5_compression,healpix,lunar,novas,plotting]; extra == "all"
|
|
48
|
+
Provides-Extra: datasets
|
|
49
|
+
Requires-Dist: pooch>=1.8; extra == "datasets"
|
|
48
50
|
Provides-Extra: tutorial
|
|
49
51
|
Requires-Dist: pyuvdata[plotting]; extra == "tutorial"
|
|
50
|
-
Requires-Dist:
|
|
52
|
+
Requires-Dist: pyuvdata[datasets]; extra == "tutorial"
|
|
51
53
|
Provides-Extra: test
|
|
54
|
+
Requires-Dist: pyuvdata[datasets]; extra == "test"
|
|
52
55
|
Requires-Dist: coverage; extra == "test"
|
|
53
56
|
Requires-Dist: cython>=3.0; extra == "test"
|
|
54
|
-
Requires-Dist: pooch>=1.8; extra == "test"
|
|
55
57
|
Requires-Dist: pre-commit; extra == "test"
|
|
56
|
-
Requires-Dist: pytest
|
|
58
|
+
Requires-Dist: pytest<9.1,>=8.2.0; extra == "test"
|
|
57
59
|
Requires-Dist: pytest-xdist; extra == "test"
|
|
58
60
|
Requires-Dist: pytest-cases>=3.9.1; extra == "test"
|
|
59
61
|
Requires-Dist: pytest-cov; extra == "test"
|
|
@@ -203,7 +205,7 @@ Please cite both of our JOSS papers:
|
|
|
203
205
|
|
|
204
206
|
*Keating et al., (2025). pyuvdata v3: an interface for astronomical interferometric data sets in Python. Journal of Open Source Software, 10(109), 7482, https://doi.org/10.21105/joss.07482* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2025JOSS...10.7482K)]
|
|
205
207
|
|
|
206
|
-
*Hazelton et al, (2017), pyuvdata: an interface for astronomical
|
|
208
|
+
*Hazelton et al, (2017), pyuvdata: an interface for astronomical interferometric datasets in python, Journal of Open Source Software, 2(10), 140, doi:10.21105/joss.00140* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2017JOSS....2..140H)]
|
|
207
209
|
|
|
208
210
|
# Installation
|
|
209
211
|
Simple installation via conda is available for users, developers should follow
|
|
@@ -236,7 +238,7 @@ Optional:
|
|
|
236
238
|
* astropy-healpix >= 1.0.2 (for working with beams in HEALPix formats)
|
|
237
239
|
* astroquery >= 0.4.4 (for enabling phasing to ephemeris objects using JPL-Horizons)
|
|
238
240
|
* hdf5plugin >= 3.3.1 (for enabling bitshuffle and other hdf5 compression filters in uvh5 files)
|
|
239
|
-
* lunarsky >=0
|
|
241
|
+
* lunarsky >=1.0 (for working with simulated datasets for lunar telescopes)
|
|
240
242
|
* matplotlib>=3.7 (for making plots)
|
|
241
243
|
* novas and novas_de405 (for using the NOVAS library for astrometry)
|
|
242
244
|
* pooch >= 1.8 (for downloading test data for tutorials)
|
|
@@ -135,7 +135,7 @@ Please cite both of our JOSS papers:
|
|
|
135
135
|
|
|
136
136
|
*Keating et al., (2025). pyuvdata v3: an interface for astronomical interferometric data sets in Python. Journal of Open Source Software, 10(109), 7482, https://doi.org/10.21105/joss.07482* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2025JOSS...10.7482K)]
|
|
137
137
|
|
|
138
|
-
*Hazelton et al, (2017), pyuvdata: an interface for astronomical
|
|
138
|
+
*Hazelton et al, (2017), pyuvdata: an interface for astronomical interferometric datasets in python, Journal of Open Source Software, 2(10), 140, doi:10.21105/joss.00140* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2017JOSS....2..140H)]
|
|
139
139
|
|
|
140
140
|
# Installation
|
|
141
141
|
Simple installation via conda is available for users, developers should follow
|
|
@@ -168,7 +168,7 @@ Optional:
|
|
|
168
168
|
* astropy-healpix >= 1.0.2 (for working with beams in HEALPix formats)
|
|
169
169
|
* astroquery >= 0.4.4 (for enabling phasing to ephemeris objects using JPL-Horizons)
|
|
170
170
|
* hdf5plugin >= 3.3.1 (for enabling bitshuffle and other hdf5 compression filters in uvh5 files)
|
|
171
|
-
* lunarsky >=0
|
|
171
|
+
* lunarsky >=1.0 (for working with simulated datasets for lunar telescopes)
|
|
172
172
|
* matplotlib>=3.7 (for making plots)
|
|
173
173
|
* novas and novas_de405 (for using the NOVAS library for astrometry)
|
|
174
174
|
* pooch >= 1.8 (for downloading test data for tutorials)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""
|
|
3
|
+
Download the pyuvdata test data into a shared pooch cache.
|
|
4
|
+
|
|
5
|
+
The wheel-building jobs run the test suite once per wheel, in an environment with a
|
|
6
|
+
cold cache, so each one re-downloads the whole test dataset from github. Running this
|
|
7
|
+
once on the runner and pointing the test environments at the result via the
|
|
8
|
+
PYUVDATA_DATA_DIR environment variable turns those N downloads into one.
|
|
9
|
+
|
|
10
|
+
Usage: python ci/prefetch_test_data.py <cache_dir>
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import importlib.util
|
|
14
|
+
import os
|
|
15
|
+
import sys
|
|
16
|
+
import types
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
|
|
19
|
+
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
20
|
+
SRC = REPO_ROOT / "src" / "pyuvdata"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def load_datasets_module():
|
|
24
|
+
"""
|
|
25
|
+
Load pyuvdata.datasets without importing pyuvdata itself.
|
|
26
|
+
|
|
27
|
+
Importing the real package pulls in the compiled extensions, which have not been
|
|
28
|
+
built yet when this runs. datasets.py only needs DATA_PATH from the parent, so
|
|
29
|
+
stub out just enough of the package for it to import.
|
|
30
|
+
"""
|
|
31
|
+
pkg = types.ModuleType("pyuvdata")
|
|
32
|
+
pkg.__path__ = [str(SRC)]
|
|
33
|
+
data_pkg = types.ModuleType("pyuvdata.data")
|
|
34
|
+
data_pkg.DATA_PATH = str(SRC / "data")
|
|
35
|
+
sys.modules["pyuvdata"] = pkg
|
|
36
|
+
sys.modules["pyuvdata.data"] = data_pkg
|
|
37
|
+
|
|
38
|
+
spec = importlib.util.spec_from_file_location(
|
|
39
|
+
"pyuvdata.datasets", SRC / "datasets.py"
|
|
40
|
+
)
|
|
41
|
+
module = importlib.util.module_from_spec(spec)
|
|
42
|
+
sys.modules["pyuvdata.datasets"] = module
|
|
43
|
+
spec.loader.exec_module(module)
|
|
44
|
+
return module
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def main():
|
|
48
|
+
"""Fetch every dataset in the registry into the requested cache directory."""
|
|
49
|
+
if len(sys.argv) != 2:
|
|
50
|
+
sys.exit(f"usage: {sys.argv[0]} <cache_dir>")
|
|
51
|
+
|
|
52
|
+
# pooch reads this when the Pooch object is created, so it has to be set before
|
|
53
|
+
# datasets.py is executed.
|
|
54
|
+
cache_dir = Path(sys.argv[1]).resolve()
|
|
55
|
+
os.environ["PYUVDATA_DATA_DIR"] = str(cache_dir)
|
|
56
|
+
|
|
57
|
+
datasets = load_datasets_module()
|
|
58
|
+
print(f"Caching {len(datasets.fetch_dict)} datasets into {datasets.pup.abspath}")
|
|
59
|
+
|
|
60
|
+
for name in datasets.fetch_dict:
|
|
61
|
+
datasets.fetch_data(name)
|
|
62
|
+
|
|
63
|
+
print(f"Done. Cache is at {datasets.pup.abspath}")
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
if __name__ == "__main__":
|
|
67
|
+
main()
|
|
@@ -16,7 +16,7 @@ dependencies:
|
|
|
16
16
|
- pip
|
|
17
17
|
- pooch>=1.8
|
|
18
18
|
- pyerfa>=2.0.1.1
|
|
19
|
-
- pytest>=8.2.0
|
|
19
|
+
- pytest>=8.2.0,<9.1
|
|
20
20
|
- pytest-cases>=3.9.1
|
|
21
21
|
- pytest-cov
|
|
22
22
|
- pytest-xdist
|
|
@@ -26,6 +26,6 @@ dependencies:
|
|
|
26
26
|
- setuptools_scm>=8.1
|
|
27
27
|
- sybil>=8.0
|
|
28
28
|
- pip:
|
|
29
|
-
- lunarsky>=0
|
|
29
|
+
- lunarsky>=1.0
|
|
30
30
|
- novas
|
|
31
31
|
- novas_de405
|