codecov[bot]: # [Codecov](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701?src=pr&el=h1) Report
> Merging [#701](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701?src=pr&el=desc) into [master](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/commit/e318d924f5f2b207847f9aad49d935d1ce4607b1?src=pr&el=desc) will **decrease** coverage by `<.01%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701/graphs/tree.svg?width=650&token=4QykcCeB1H&height=150&src=pr)](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #701      +/-   ##
==========================================
- Coverage   98.99%   98.98%   -0.01%     
==========================================
  Files          20       20              
  Lines        9064     8994      -70     
==========================================
- Hits         8973     8903      -70     
  Misses         91       91
```


| [Impacted Files](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pyuvdata/uvdata.py](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701/diff?src=pr&el=tree#diff-cHl1dmRhdGEvdXZkYXRhLnB5) | `100% <100%> (ø)` | :arrow_up: |
| [pyuvdata/uvflag.py](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701/diff?src=pr&el=tree#diff-cHl1dmRhdGEvdXZmbGFnLnB5) | `100% <0%> (ø)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701?src=pr&el=footer). Last update [e318d92...e5bb041](https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/pull/701?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

bhazelton: @mkolopanis looks like there's a conflict in the changelog as a result of recent PRs. Can you rebase?
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 94cc954e..98e4d539 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file.
 - `UVFlag` information on Read The Docs
 
 ### Changed
+- `UVData.phase_to_time` now accepts a float as an input. Assumes float represents a JD.
 - Added optional acceptability check for `utils.LatLonAlt_from_XYZ`
 - Use `astropy_healpix` rather than `healpy` for HEALPix functionality because `healpy` has a GPL license which is incompatible with ours.
 - `h5py` is now a required package instead of an optional one.
diff --git a/docs/tutorial.rst b/docs/tutorial.rst
index 01b5c2af..ae337a9e 100644
--- a/docs/tutorial.rst
+++ b/docs/tutorial.rst
@@ -286,9 +286,21 @@ Phasing/unphasing data
   # Undo phasing to try another phase center
   >>> UV.unphase_to_drift()
 
+  # Phase the data to the zenith at first time step
+  # The time_array can be used directly now as input floats
+  # are assumed to be a JD
+  >>> UV.phase_to_time(UV.time_array[0])
+  >>> print(UV.phase_type)
+  phased
+
+  # Undo phasing to try another phase center
+  >>> UV.unphase_to_drift()
+
   # Phase to a specific ra/dec/epoch (in radians)
   >>> UV.phase(5.23368, 0.710940, epoch="J2000")
 
+
+
 UVData: Plotting
 ------------------
 Making a simple waterfall plot.
diff --git a/pyuvdata/uvdata.py b/pyuvdata/uvdata.py
index bca38167..d3c87160 100644
--- a/pyuvdata/uvdata.py
+++ b/pyuvdata/uvdata.py
@@ -943,8 +943,8 @@ class UVData(UVBase):
 
         Parameters
         ----------
-        time : astropy.time.Time object
-            The time to phase to, an astropy Time object.
+        time : astropy.time.Time object or float
+            The time to phase to, an astropy Time object or a float Julian Date
         phase_frame : str
             The astropy frame to phase to. Either 'icrs' or 'gcrs'.
             'gcrs' accounts for precession & nutation,
@@ -958,7 +958,7 @@ class UVData(UVBase):
         ValueError
             If the phase_type is not 'drift'
         TypeError
-            If time is not an astropy.time.Time object
+            If time is not an astropy.time.Time object or Julian Date as a float
         """
         if self.phase_type == 'drift':
             pass
@@ -970,8 +970,11 @@ class UVData(UVBase):
                              'Set the phase_type to drift or phased to '
                              'reflect the phasing status of the data')
 
+        if isinstance(time, (float, np.float32)):
+            time = Time(time, format='jd')
+
         if not isinstance(time, Time):
-            raise TypeError("time must be an astropy.time.Time object")
+            raise TypeError("time must be an astropy.time.Time object or a float")
 
         # Generate ra/dec of zenith at time in the phase_frame coordinate system
         # to use for phasing

Allow JDs as input to `phase_to_time`
A PR brought this up as a possible enhancement to `phase_to_time`, allow the user to possibly give a float JD as another input time other than astropy.Time objects.
diff --git a/pyuvdata/tests/test_uvdata.py b/pyuvdata/tests/test_uvdata.py
index 6b296de9..38e81c6c 100644
--- a/pyuvdata/tests/test_uvdata.py
+++ b/pyuvdata/tests/test_uvdata.py
@@ -446,31 +446,51 @@ def test_generic_read():
     pytest.raises(ValueError, uv_in.read, 'foo')
 
 
-def test_phase_unphaseHERA():
-    """
-    Read in drift data, phase to an RA/DEC, unphase and check for object equality.
-    """
+@pytest.fixture
+def uv_phase_and_raw():
     testfile = os.path.join(DATA_PATH, 'zen.2458661.23480.HH.uvh5')
     UV_raw = UVData()
-    UV_raw.read(testfile)
-
+    # Note the RA/DEC values in the raw file were calculated from the lat/long
+    # in the file, which don't agree with our known_telescopes.
+    # So for this test we use the lat/lon in the file.
+    UV_raw.read_uvh5(testfile)
+    # uvtest.checkWarnings(UV_raw.read_miriad, [testfile], {'correct_lat_lon': False},
+    #                      message='Altitude is not present in file and latitude and '
+    #                              'longitude values do not match')
     UV_phase = UVData()
-    UV_phase.read(testfile)
-    UV_phase.phase(0., 0., epoch="J2000")
-    UV_phase.unphase_to_drift()
-    # check that phase + unphase gets back to raw
-    assert UV_raw == UV_phase
+    UV_phase.read_uvh5(testfile)
 
-    # check that phase + unphase work using gcrs
-    UV_phase.phase(Angle('5d').rad, Angle('30d').rad, phase_frame='gcrs')
-    UV_phase.unphase_to_drift()
-    assert UV_raw == UV_phase
+    yield UV_phase, UV_raw
+
+    del UV_phase, UV_raw
 
-    # check that phase + unphase work using a different epoch
-    UV_phase.phase(Angle('180d').rad, Angle('90d'), epoch=Time('2010-01-01T00:00:00', format='isot', scale='utc'))
+    return
+
+
+@pytest.mark.parametrize(
+    "phase_kwargs",
+    [
+        {"ra": 0., "dec": 0., "epoch": "J2000"},
+        {"ra": Angle('5d').rad, "dec": Angle('30d').rad, "phase_frame": "gcrs"},
+        {"ra": Angle('180d').rad, "dec": Angle('90d'),
+         "epoch": Time('2010-01-01T00:00:00', format='isot', scale='utc')
+         },
+
+    ]
+)
+def test_phase_unphaseHERA(uv_phase_and_raw, phase_kwargs):
+    """
+    Read in drift data, phase to an RA/DEC, unphase and check for object equality.
+    """
+    UV_phase, UV_raw = uv_phase_and_raw
+    UV_phase.phase(**phase_kwargs)
     UV_phase.unphase_to_drift()
+    # check that phase + unphase gets back to raw
     assert UV_raw == UV_phase
 
+
+def test_phase_unphaseHERA_one_bl(uv_phase_and_raw):
+    UV_phase, UV_raw = uv_phase_and_raw
     # check that phase + unphase work with one baseline
     UV_raw_small = UV_raw.select(blt_inds=[0], inplace=False)
     UV_phase_small = copy.deepcopy(UV_raw_small)
@@ -478,6 +498,9 @@ def test_phase_unphaseHERA():
     UV_phase_small.unphase_to_drift()
     assert UV_raw_small == UV_phase_small
 
+
+def test_phase_unphaseHERA_antpos(uv_phase_and_raw):
+    UV_phase, UV_raw = uv_phase_and_raw
     # check that they match if you phase & unphase using antenna locations
     # first replace the uvws with the right values
     antenna_enu = uvutils.ENU_from_ECEF((UV_raw.antenna_positions + UV_raw.telescope_location),
@@ -509,6 +532,9 @@ def test_phase_unphaseHERA():
     UV_phase.unphase_to_drift(use_ant_pos=True)
     assert UV_raw_new == UV_phase
 
+
+def test_phase_unphaseHERA_zenith_timestamp(uv_phase_and_raw):
+    UV_phase, UV_raw = uv_phase_and_raw
     # check that phasing to zenith with one timestamp has small changes
     # (it won't be identical because of precession/nutation changing the coordinate axes)
     # use gcrs rather than icrs to reduce differences (don't include abberation)
@@ -520,34 +546,90 @@ def test_phase_unphaseHERA():
     # it's unclear to me how close this should be...
     assert np.allclose(UV_phase_simple_small.uvw_array, UV_raw_small.uvw_array, atol=1e-1)
 
+
+def test_phase_to_time_jd_input(uv_phase_and_raw):
+    UV_phase, UV_raw = uv_phase_and_raw
+    UV_phase.phase_to_time(UV_raw.time_array[0])
+    UV_phase.unphase_to_drift()
+    assert UV_phase == UV_raw
+
+
+def test_phase_to_time_error(uv_phase_and_raw):
+    UV_phase, UV_raw = uv_phase_and_raw
     # check error if not passing a Time object to phase_to_time
     with pytest.raises(TypeError) as cm:
-        UV_raw.phase_to_time(UV_raw.time_array[0])
-    assert str(cm.value).startswith('time must be an astropy.time.Time object')
+        UV_phase.phase_to_time('foo')
+    assert str(cm.value).startswith("time must be an astropy.time.Time object")
+
+
+def test_unphase_drift_data_error(uv_phase_and_raw):
+    UV_phase, UV_raw = uv_phase_and_raw
+    # check error if not passing a Time object to phase_to_time
+    with pytest.raises(ValueError) as cm:
+        UV_phase.unphase_to_drift()
+    assert str(cm.value).startswith("The data is already drift scanning;")
+
+
+@pytest.mark.parametrize(
+    "phase_func,phase_kwargs,err_msg",
+    [("unphase_to_drift", {},
+      "The phasing type of the data is unknown. Set the phase_type"),
+     ("phase", {"ra": 0, "dec": 0, "epoch": "J2000"},
+      "The phasing type of the data is unknown. Set the phase_type"),
+     ("phase_to_time", {"time": 0},
+      "The phasing type of the data is unknown. Set the phase_type")
+     ]
+)
+def test_unknown_phase_unphaseHERA_errors(
+    uv_phase_and_raw, phase_func, phase_kwargs, err_msg
+):
+    UV_phase, UV_raw = uv_phase_and_raw
 
-    # check errors when trying to unphase drift or unknown data
-    pytest.raises(ValueError, UV_raw.unphase_to_drift)
+    # Set phase type to unkown on some tests, ignore on others.
     UV_raw.set_unknown_phase_type()
-    pytest.raises(ValueError, UV_raw.unphase_to_drift)
-    UV_raw.set_drift()
+    # if this is phase_to_time, use this index set in the dictionary and
+    # assign the value of the time_array associated with that index
+    # this is a little hacky, but we cannot acces UV_raw.time_array in the parametrize
+    if phase_func == "phsae_to_time":
+        phase_kwargs["time"] = UV_raw.time_array[phase_kwargs["time"]]
 
-    # check errors when trying to phase phased or unknown data
-    UV_phase.phase(0., 0., epoch="J2000")
-    pytest.raises(ValueError, UV_phase.phase, 0., 0., epoch="J2000")
-    pytest.raises(ValueError, UV_phase.phase_to_time,
-                  UV_phase.time_array[0])
+    with pytest.raises(ValueError) as cm:
+        getattr(UV_raw, phase_func)(**phase_kwargs)
+    assert str(cm.value).startswith(err_msg)
+
+
+@pytest.mark.parametrize(
+    "phase_func,phase_kwargs,err_msg",
+    [("phase", {"ra": 0, "dec": 0, "epoch": "J2000"},
+      "The data is already phased;"),
+     ("phase_to_time", {"time": 0},
+      "The data is already phased;")
+     ]
+)
+def test_phase_rephaseHERA_errors(
+    uv_phase_and_raw, phase_func, phase_kwargs, err_msg
+):
+    UV_phase, UV_raw = uv_phase_and_raw
 
-    UV_phase.set_unknown_phase_type()
-    pytest.raises(ValueError, UV_phase.phase, 0., 0., epoch="J2000")
-    pytest.raises(ValueError, UV_phase.phase_to_time,
-                  UV_phase.time_array[0])
+    # Set phase type to unkown on some tests, ignore on others.
+    UV_raw.phase(0., 0., epoch="J2000")
+    # if this is phase_to_time, use this index set in the dictionary and
+    # assign the value of the time_array associated with that index
+    # this is a little hacky, but we cannot acces UV_raw.time_array in the parametrize
+    if phase_func == "phsae_to_time":
+        phase_kwargs["time"] = UV_raw.time_array[phase_kwargs["time"]]
+
+    with pytest.raises(ValueError) as cm:
+        getattr(UV_raw, phase_func)(**phase_kwargs)
+    assert str(cm.value).startswith(err_msg)
 
-    # check errors when trying to phase to an unsupported frame
-    UV_phase = copy.deepcopy(UV_raw)
-    pytest.raises(ValueError, UV_phase.phase, 0., 0., epoch="J2000", phase_frame='cirs')
 
-    del(UV_phase)
-    del(UV_raw)
+def test_phase_unphaseHERA_bad_frame(uv_phase_and_raw):
+    UV_phase, UV_raw = uv_phase_and_raw
+    # check errors when trying to phase to an unsupported frame
+    with pytest.raises(ValueError) as cm:
+        UV_phase.phase(0., 0., epoch="J2000", phase_frame='cirs')
+    assert str(cm.value).startswith("phase_frame can only be set to icrs or gcrs.")
 
 
 def test_phasing():

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cases
apt-get update apt-get install -y gcc g++
3.6
docs/requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
astropy==4.1
attrs==22.2.0
Babel==2.11.0
cached-property==1.5.2
certifi==2021.5.30
charset-normalizer==2.0.12
decopatch==1.4.10
docutils==0.18.1
h5py==3.1.0
idna==3.10
imagesize==1.4.1
importlib-metadata==4.8.3
iniconfig==1.1.1
Jinja2==3.0.3
makefun==1.15.6
MarkupSafe==2.0.1
numpy==1.19.5
packaging==21.3
pluggy==1.0.0
py==1.11.0
Pygments==2.14.0
pyparsing==3.1.4
pytest==7.0.1
pytest-cases==3.8.6
pytz==2025.2
-e git+https://github.com/RadioAstronomySoftwareGroup/pyuvdata.git@f0034d04201c2d64e82a35e8ec83f20e6d9adbfa#egg=pyuvdata
requests==2.27.1
scipy==1.5.4
six==1.17.0
snowballstemmer==2.2.0
Sphinx==5.3.0
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
tomli==1.2.3
typing_extensions==4.1.1
urllib3==1.26.20
zipp==3.6.0

name: pyuvdata
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - astropy==4.1
      - attrs==22.2.0
      - babel==2.11.0
      - cached-property==1.5.2
      - charset-normalizer==2.0.12
      - decopatch==1.4.10
      - docutils==0.18.1
      - h5py==3.1.0
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - jinja2==3.0.3
      - makefun==1.15.6
      - markupsafe==2.0.1
      - numpy==1.19.5
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pygments==2.14.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-cases==3.8.6
      - pytz==2025.2
      - requests==2.27.1
      - scipy==1.5.4
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==5.3.0
      - sphinxcontrib-applehelp==1.0.2
      - sphinxcontrib-devhelp==1.0.2
      - sphinxcontrib-htmlhelp==2.0.0
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==1.0.3
      - sphinxcontrib-serializinghtml==1.1.5
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - zipp==3.6.0
prefix: /opt/conda/envs/pyuvdata

pyuvdata/tests/test_uvdata.py::test_phase_to_time_jd_input
pyuvdata/tests/test_uvdata.py::test_add_drift pyuvdata/tests/test_uvdata.py::test_break_add pyuvdata/tests/test_uvdata.py::test_set_uvws_from_antenna_pos pyuvdata/tests/test_uvdata.py::test_downsample_in_time_errors pyuvdata/tests/test_uvdata.py::test_downsample_in_time_int_time_mismatch_warning pyuvdata/tests/test_uvdata.py::test_downsample_in_time_varying_integration_time pyuvdata/tests/test_uvdata.py::test_downsample_in_time_varying_integration_time_warning
pyuvdata/tests/test_uvdata.py::test_parameter_iter pyuvdata/tests/test_uvdata.py::test_required_parameter_iter pyuvdata/tests/test_uvdata.py::test_extra_parameter_iter pyuvdata/tests/test_uvdata.py::test_unexpected_parameters pyuvdata/tests/test_uvdata.py::test_unexpected_attributes pyuvdata/tests/test_uvdata.py::test_properties pyuvdata/tests/test_uvdata.py::test_baseline_to_antnums pyuvdata/tests/test_uvdata.py::test_baseline_to_antnums_vectorized pyuvdata/tests/test_uvdata.py::test_antnums_to_baselines pyuvdata/tests/test_uvdata.py::test_known_telescopes pyuvdata/tests/test_uvdata.py::test_HERA_diameters pyuvdata/tests/test_uvdata.py::test_generic_read pyuvdata/tests/test_uvdata.py::test_phase_unphaseHERA[phase_kwargs0] pyuvdata/tests/test_uvdata.py::test_phase_unphaseHERA[phase_kwargs1] pyuvdata/tests/test_uvdata.py::test_phase_unphaseHERA[phase_kwargs2] pyuvdata/tests/test_uvdata.py::test_phase_unphaseHERA_one_bl pyuvdata/tests/test_uvdata.py::test_phase_unphaseHERA_antpos pyuvdata/tests/test_uvdata.py::test_phase_unphaseHERA_zenith_timestamp pyuvdata/tests/test_uvdata.py::test_phase_to_time_error pyuvdata/tests/test_uvdata.py::test_unphase_drift_data_error pyuvdata/tests/test_uvdata.py::test_unknown_phase_unphaseHERA_errors[unphase_to_drift-phase_kwargs0-The pyuvdata/tests/test_uvdata.py::test_unknown_phase_unphaseHERA_errors[phase-phase_kwargs1-The pyuvdata/tests/test_uvdata.py::test_unknown_phase_unphaseHERA_errors[phase_to_time-phase_kwargs2-The pyuvdata/tests/test_uvdata.py::test_phase_rephaseHERA_errors[phase-phase_kwargs0-The pyuvdata/tests/test_uvdata.py::test_phase_rephaseHERA_errors[phase_to_time-phase_kwargs1-The pyuvdata/tests/test_uvdata.py::test_phase_unphaseHERA_bad_frame pyuvdata/tests/test_uvdata.py::test_phasing pyuvdata/tests/test_uvdata.py::test_set_phase_unknown pyuvdata/tests/test_uvdata.py::test_select_blts pyuvdata/tests/test_uvdata.py::test_select_antennas pyuvdata/tests/test_uvdata.py::test_select_bls pyuvdata/tests/test_uvdata.py::test_select_times pyuvdata/tests/test_uvdata.py::test_select_frequencies pyuvdata/tests/test_uvdata.py::test_select_freq_chans pyuvdata/tests/test_uvdata.py::test_select_polarizations pyuvdata/tests/test_uvdata.py::test_select pyuvdata/tests/test_uvdata.py::test_select_not_inplace pyuvdata/tests/test_uvdata.py::test_conjugate_bls pyuvdata/tests/test_uvdata.py::test_reorder_pols pyuvdata/tests/test_uvdata.py::test_reorder_blts pyuvdata/tests/test_uvdata.py::test_add pyuvdata/tests/test_uvdata.py::test_fast_concat pyuvdata/tests/test_uvdata.py::test_fast_concat_errors pyuvdata/tests/test_uvdata.py::test_key2inds pyuvdata/tests/test_uvdata.py::test_key2inds_conj_all_pols pyuvdata/tests/test_uvdata.py::test_key2inds_conj_all_pols_fringe pyuvdata/tests/test_uvdata.py::test_key2inds_conj_all_pols_bl_fringe pyuvdata/tests/test_uvdata.py::test_key2inds_conj_all_pols_missing_data pyuvdata/tests/test_uvdata.py::test_key2inds_conj_all_pols_bls pyuvdata/tests/test_uvdata.py::test_key2inds_conj_all_pols_missing_data_bls pyuvdata/tests/test_uvdata.py::test_smart_slicing pyuvdata/tests/test_uvdata.py::test_get_data pyuvdata/tests/test_uvdata.py::test_get_flags pyuvdata/tests/test_uvdata.py::test_get_nsamples pyuvdata/tests/test_uvdata.py::test_antpair2ind pyuvdata/tests/test_uvdata.py::test_get_times pyuvdata/tests/test_uvdata.py::test_antpairpol_iter pyuvdata/tests/test_uvdata.py::test_get_ants pyuvdata/tests/test_uvdata.py::test_get_ENU_antpos pyuvdata/tests/test_uvdata.py::test_telescope_loc_XYZ_check pyuvdata/tests/test_uvdata.py::test_get_pols pyuvdata/tests/test_uvdata.py::test_get_pols_x_orientation pyuvdata/tests/test_uvdata.py::test_deprecated_x_orientation pyuvdata/tests/test_uvdata.py::test_get_feedpols pyuvdata/tests/test_uvdata.py::test_parse_ants pyuvdata/tests/test_uvdata.py::test_select_with_ant_str pyuvdata/tests/test_uvdata.py::test_deprecated_redundancy_funcs pyuvdata/tests/test_uvdata.py::test_get_antenna_redundancies pyuvdata/tests/test_uvdata.py::test_redundancy_contract_expand pyuvdata/tests/test_uvdata.py::test_redundancy_contract_expand_nblts_not_nbls_times_ntimes pyuvdata/tests/test_uvdata.py::test_compress_redundancy_metadata_only pyuvdata/tests/test_uvdata.py::test_redundancy_missing_groups pyuvdata/tests/test_uvdata.py::test_quick_redundant_vs_redundant_test_array pyuvdata/tests/test_uvdata.py::test_redundancy_finder_when_nblts_not_nbls_times_ntimes pyuvdata/tests/test_uvdata.py::test_overlapping_data_add pyuvdata/tests/test_uvdata.py::test_lsts_from_time_with_only_unique pyuvdata/tests/test_uvdata.py::test_copy pyuvdata/tests/test_uvdata.py::test_upsample_in_time pyuvdata/tests/test_uvdata.py::test_upsample_in_time_with_flags pyuvdata/tests/test_uvdata.py::test_upsample_in_time_noninteger_resampling pyuvdata/tests/test_uvdata.py::test_upsample_in_time_errors pyuvdata/tests/test_uvdata.py::test_upsample_in_time_summing_correlator_mode pyuvdata/tests/test_uvdata.py::test_upsample_in_time_summing_correlator_mode_with_flags pyuvdata/tests/test_uvdata.py::test_upsample_in_time_summing_correlator_mode_nonint_resampling pyuvdata/tests/test_uvdata.py::test_partial_upsample_in_time pyuvdata/tests/test_uvdata.py::test_upsample_in_time_drift pyuvdata/tests/test_uvdata.py::test_upsample_in_time_drift_no_phasing pyuvdata/tests/test_uvdata.py::test_downsample_in_time pyuvdata/tests/test_uvdata.py::test_downsample_in_time_partial_flags pyuvdata/tests/test_uvdata.py::test_downsample_in_time_totally_flagged pyuvdata/tests/test_uvdata.py::test_downsample_in_time_uneven_samples pyuvdata/tests/test_uvdata.py::test_downsample_in_time_uneven_samples_discard_ragged pyuvdata/tests/test_uvdata.py::test_downsample_in_time_summing_correlator_mode pyuvdata/tests/test_uvdata.py::test_downsample_in_time_summing_correlator_mode_partial_flags pyuvdata/tests/test_uvdata.py::test_downsample_in_time_summing_correlator_mode_totally_flagged pyuvdata/tests/test_uvdata.py::test_downsample_in_time_summing_correlator_mode_uneven_samples pyuvdata/tests/test_uvdata.py::test_downsample_in_time_summing_correlator_mode_uneven_samples_drop_ragged pyuvdata/tests/test_uvdata.py::test_partial_downsample_in_time pyuvdata/tests/test_uvdata.py::test_downsample_in_time_drift pyuvdata/tests/test_uvdata.py::test_downsample_in_time_drift_no_phasing pyuvdata/tests/test_uvdata.py::test_upsample_downsample_in_time pyuvdata/tests/test_uvdata.py::test_upsample_downsample_in_time_odd_resample pyuvdata/tests/test_uvdata.py::test_upsample_downsample_in_time_metadata_only pyuvdata/tests/test_uvdata.py::test_resample_in_time pyuvdata/tests/test_uvdata.py::test_resample_in_time_downsample_only pyuvdata/tests/test_uvdata.py::test_resample_in_time_only_upsample
docs/tutorial.rst pyuvdata/uvdata.py CHANGELOG.md
docs/tutorial.rst pyuvdata/uvdata.py CHANGELOG.md