コード例 #1
0
    def test_calc_solar_local_time(self):
        """Test calc_solar_local_time"""

        coords.calc_solar_local_time(self.testInst, lon_name="longitude",
                                     slt_name='slt')
        target = np.array([22.66666667, 23.20027778, 23.92722222,
                           0.03416667, 0.33444444, 0.65938889])

        assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6
コード例 #2
0
    def test_bad_lon_name_calc_solar_local_time(self):
        """Test calc_solar_local_time with a bad longitude name."""

        self.py_inst = pysat.Instrument(platform='pysat', name="testing")
        self.py_inst.load(date=self.inst_time)

        with pytest.raises(ValueError):
            coords.calc_solar_local_time(self.py_inst,
                                         lon_name="not longitude",
                                         slt_name='slt')
コード例 #3
0
    def test_calc_solar_local_time_w_update_longitude(self):
        """Test calc_solar_local_time with update_longitude"""

        coords.calc_solar_local_time(self.testInst, lon_name="longitude",
                                     slt_name='slt')
        coords.update_longitude(self.testInst, lon_name="longitude")
        coords.calc_solar_local_time(self.testInst, lon_name="longitude",
                                     slt_name='slt2')

        assert (abs(self.testInst['slt']
                    - self.testInst['slt2'])).max() < 1.0e-6
コード例 #4
0
    def test_lon_broadcasting_calc_solar_local_time(self, name):
        """Test calc_solar_local_time with longitude coordinates."""

        self.py_inst = pysat.Instrument(platform='pysat', name=name)
        self.py_inst.load(date=self.inst_time)
        coords.calc_solar_local_time(self.py_inst,
                                     lon_name="longitude",
                                     slt_name='slt')

        assert self.py_inst['slt'].max() < 24.0
        assert self.py_inst['slt'].min() >= 0.0
コード例 #5
0
    def test_lon_broadcasting_calc_solar_local_time_no_mod_multiday(
            self, name):
        """Test calc_solar_local_time with longitude coordinates, no mod, 2 days
        """

        self.py_inst = pysat.Instrument(platform='pysat', name=name)
        self.py_inst.load(date=self.inst_time, end_date=self.inst_time_2)
        coords.calc_solar_local_time(self.py_inst,
                                     lon_name="longitude",
                                     slt_name='slt',
                                     apply_modulus=False)

        assert self.py_inst['slt'].max() > 48.0
        assert self.py_inst['slt'].max() < 72.0
        assert self.py_inst['slt'].min() >= 0.0
コード例 #6
0
    def test_calc_solar_local_time_w_neg_longitude(self):
        """Test calc_solar_local_time with longitudes from -180 to 180 deg"""

        self.py_inst = pysat.Instrument(platform='pysat', name="testing")
        self.py_inst.load(date=self.inst_time)

        coords.calc_solar_local_time(self.py_inst,
                                     lon_name="longitude",
                                     slt_name='slt')
        coords.update_longitude(self.py_inst, lon_name="longitude")
        coords.calc_solar_local_time(self.py_inst,
                                     lon_name="longitude",
                                     slt_name='slt2')

        assert (abs(self.py_inst['slt'] - self.py_inst['slt2'])).max() < 1.0e-6
コード例 #7
0
    def test_calc_solar_local_time(self, name):
        """Test calc_solar_local_time with longitudes from 0-360 deg for 0 UTH
        """

        self.py_inst = pysat.Instrument(platform='pysat',
                                        name=name,
                                        num_samples=1)
        self.py_inst.load(date=self.inst_time)

        coords.calc_solar_local_time(self.py_inst,
                                     lon_name="longitude",
                                     slt_name='slt')

        # This works because test instrument longitude ranges from 0-360 deg
        assert (abs(self.py_inst['slt'].values -
                    self.py_inst['longitude'].values / 15.0)).max() < 1.0e-6
コード例 #8
0
    def test_calc_solar_local_time_inconsistent_keywords(self, name, caplog):
        """Test that ref_date only works when apply_modulus=False"""

        # Instantiate instrument and load data
        self.py_inst = pysat.Instrument(platform='pysat',
                                        name=name,
                                        num_samples=1)
        self.py_inst.load(date=self.inst_time)
        with caplog.at_level(logging.INFO, logger='pysat'):
            # Apply solar local time method
            coords.calc_solar_local_time(self.py_inst,
                                         lon_name="longitude",
                                         slt_name='slt',
                                         ref_date=self.py_inst.date,
                                         apply_modulus=True)
        captured = caplog.text

        # Confirm we have the correct informational message
        assert captured.find('Keyword `ref_date` only supported if') >= 0
        return
コード例 #9
0
    def test_single_lon_calc_solar_local_time(self):
        """Test calc_solar_local_time with a single longitude value."""

        self.py_inst = pysat.Instrument(platform='pysat',
                                        name="testing_xarray")
        self.py_inst.load(date=self.inst_time)
        lon_name = 'lon2'

        # Create a second longitude with a single value
        self.py_inst.data = self.py_inst.data.update(
            {lon_name: (lon_name, [10.0])})
        self.py_inst.data = self.py_inst.data.squeeze(dim=lon_name)

        # Calculate and test the SLT
        coords.calc_solar_local_time(self.py_inst,
                                     lon_name=lon_name,
                                     slt_name='slt')

        assert self.py_inst['slt'].max() < 24.0
        assert self.py_inst['slt'].min() >= 0.0
        assert self.py_inst['slt'].shape == self.py_inst.index.shape
コード例 #10
0
    def test_bad_lon_name_calc_solar_local_time(self):
        """Test calc_solar_local_time with a bad longitude name"""

        coords.calc_solar_local_time(self.testInst, lon_name="not longitude",
                                     slt_name='slt')