def test_get_geo_from_obs():
    """geomag.StreamConverter_test.test_get_geo_from_obs()

    The observatory stream containing the observatory traces
    ''h'', ''d'' or ''e'', ''z'', and ''f'' converts to the geographic
    stream containing the traces ''x'', ''y'', ''z'', and ''f''
    """
    obs = obspy.core.Stream()

    # 1) Call get_geo_from_obs using equal h, e streams with a decbas of 0
    #   the geographic stream values X, Y will be the same.
    obs += __create_trace('H', [1])
    obs += __create_trace('E', [1])
    obs += __create_trace('Z', [1])
    obs += __create_trace('F', [1])
    geo = StreamConverter.get_geo_from_obs(obs)
    X = geo.select(channel='X')[0].data
    Y = geo.select(channel='Y')[0].data
    assert_almost_equal(X[0], 1, 9,
        'Expect X to almost equal 1', True)
    assert_almost_equal(Y[0], 1, 9,
        'Expect Y to almost equal 1', True)

    # 2) Call get_geo_from_obs using a decbas of 15 degrees, and streams
    #   with H = [cos(15), cos(30)], and E = [sin(15), sin(30)].
    #   Expect streams of X = [cos(30), cos(45)] and Y = sin(30), sin(45)
    obs = obspy.core.Stream()
    DECBAS = 15 * D2I
    obs += __create_trace('H', [cos(15 * D2R), cos(30 * D2R)], DECBAS)
    obs += __create_trace('E', [sin(15 * D2R), sin(30 * D2R)], DECBAS)
    obs += __create_trace('Z', [1, 1], DECBAS)
    obs += __create_trace('F', [1, 1], DECBAS)
    geo = StreamConverter.get_geo_from_obs(obs)
    X = geo.select(channel='X')[0].data
    Y = geo.select(channel='Y')[0].data
    assert_almost_equal(X, [cos(30 * D2R), cos(45 * D2R)], 9,
        'Expect X to equal [cos(30), cos(45)]', True)
    assert_almost_equal(Y, [sin(30 * D2R), sin(45 * D2R)], 9,
        'Expect Y to equal [sin(30), sin(45)]', True)
示例#2
0
def test_get_geo_from_obs():
    """geomag.StreamConverter_test.test_get_geo_from_obs()

    The observatory stream containing the observatory traces
    ''h'', ''d'' or ''e'', ''z'', and ''f'' converts to the geographic
    stream containing the traces ''x'', ''y'', ''z'', and ''f''
    """
    obs = obspy.core.Stream()

    # 1) Call get_geo_from_obs using equal h, e streams with a decbas of 0
    #   the geographic stream values X, Y will be the same.
    obs += __create_trace('H', [1])
    obs += __create_trace('E', [1])
    obs += __create_trace('Z', [1])
    obs += __create_trace('F', [1])
    geo = StreamConverter.get_geo_from_obs(obs)
    X = geo.select(channel='X')[0].data
    Y = geo.select(channel='Y')[0].data
    assert_almost_equal(X[0], 1, 9, 'Expect X to almost equal 1', True)
    assert_almost_equal(Y[0], 1, 9, 'Expect Y to almost equal 1', True)

    # 2) Call get_geo_from_obs using a decbas of 15 degrees, and streams
    #   with H = [cos(15), cos(30)], and E = [sin(15), sin(30)].
    #   Expect streams of X = [cos(30), cos(45)] and Y = sin(30), sin(45)
    obs = obspy.core.Stream()
    DECBAS = 15 * D2I
    obs += __create_trace('H', [cos(15 * D2R), cos(30 * D2R)], DECBAS)
    obs += __create_trace('E', [sin(15 * D2R), sin(30 * D2R)], DECBAS)
    obs += __create_trace('Z', [1, 1], DECBAS)
    obs += __create_trace('F', [1, 1], DECBAS)
    geo = StreamConverter.get_geo_from_obs(obs)
    X = geo.select(channel='X')[0].data
    Y = geo.select(channel='Y')[0].data
    assert_almost_equal(X, [cos(30 * D2R), cos(45 * D2R)], 9,
                        'Expect X to equal [cos(30), cos(45)]', True)
    assert_almost_equal(Y, [sin(30 * D2R), sin(45 * D2R)], 9,
                        'Expect Y to equal [sin(30), sin(45)]', True)
示例#3
0
    def process(self, timeseries):
        """converts a timeseries stream into a different coordinate system

        Parameters
        ----------
        informat: string
            indicates the input coordinate system.
        outformat: string
            indicates the output coordinate system.
        out_stream: obspy.core.Stream
            new stream object containing the converted coordinates.
        """
        self.check_stream(timeseries)
        out_stream = None
        if self.outformat == 'geo':
            if self.informat == 'geo':
                out_stream = timeseries
            elif self.informat == 'mag':
                out_stream = StreamConverter.get_geo_from_mag(timeseries)
            elif self.informat == 'obs' or self.informat == 'obsd':
                out_stream = StreamConverter.get_geo_from_obs(timeseries)
        elif self.outformat == 'mag':
            if self.informat == 'geo':
                out_stream = StreamConverter.get_mag_from_geo(timeseries)
            elif self.informat == 'mag':
                out_stream = timeseries
            elif self.informat == 'obs' or self.informat == 'obsd':
                out_stream = StreamConverter.get_mag_from_obs(timeseries)
        elif self.outformat == 'obs':
            if self.informat == 'geo':
                out_stream = StreamConverter.get_obs_from_geo(timeseries)
            elif self.informat == 'mag':
                out_stream = StreamConverter.get_obs_from_mag(timeseries)
            elif self.informat == 'obs' or self.informat == 'obsd':
                out_stream = StreamConverter.get_obs_from_obs(timeseries,
                        include_e=True)
        elif self.outformat == 'obsd':
            if self.informat == 'geo':
                out_stream = StreamConverter.get_obs_from_geo(timeseries,
                        include_d=True)
            elif self.informat == 'mag':
                out_stream = StreamConverter.get_obs_from_mag(timeseries,
                        include_d=True)
            elif self.informat == 'obs' or self.informat == 'obsd':
                out_stream = StreamConverter.get_obs_from_obs(timeseries,
                        include_d=True)
        return out_stream