Ejemplo n.º 1
0
    def test_remove_recorder_stream(self):
        inventory = Inventory('inventory_name')
        recorder1 = Recorder(serial='rec1_serial',
                             model='rec1_model',
                             producer='rec1_producer')

        stream1 = RecorderStream(name='stream1_name', label='stream1_label')
        recorder1.add_stream(stream1)
        inventory.add_recorder(recorder1)

        sensor1 = Sensor(serial='sensor1_serial',
                         model='sensor1_model',
                         producer='sensor1_producer')
        component1 = SensorComponent(name='comp1_name')
        sensor1.add_component(component1)
        inventory.add_sensor(sensor1)

        cur_starttime = UTCDateTime('2014-01-01')
        cur_endtime = UTCDateTime('2014-02-01')
        stream1.add_component(serial='sensor1_serial',
                              name='comp1_name',
                              start_time=cur_starttime,
                              end_time=cur_endtime)

        network1 = Network(name='XX')
        station1 = Station(name='station1_name',
                           location='station1_location',
                           x=10,
                           y=20,
                           z=30)
        channel1 = Channel(name='channel_1')
        channel2 = Channel(name='channel_2')
        station1.add_channel(channel1)
        station1.add_channel(channel2)

        network1.add_station(station1)
        inventory.add_network(network1)

        channel1.add_stream(serial='rec1_serial',
                            model='rec1_model',
                            producer='rec1_producer',
                            name='stream1_name',
                            start_time=None,
                            end_time=None)

        assigned_channels = stream1.assigned_channels
        self.assertEqual(len(assigned_channels), 1)
        self.assertIs(assigned_channels[0], channel1)
        removed_stream = recorder1.pop_stream_by_instance(stream1)
        self.assertIsNone(removed_stream)
        self.assertIs(assigned_channels[0].streams[0].item, stream1)

        # Remove the assignement of the channel to the stream.
        channel1.remove_stream('rec1_serial', 'stream1_name')
        self.assertEqual(len(channel1.streams), 0)
        self.assertEqual(len(stream1.assigned_channels), 0)
Ejemplo n.º 2
0
    def test_add_network_to_inventory(self):
        inventory = Inventory('inventory_name')

        network1 = Network(name='XX')
        network2 = Network(name='YY')

        station1 = Station(name='station1_name',
                           location='station1_location',
                           x=10,
                           y=20,
                           z=30)

        # The network name should be overwritten when added to the network.
        station2 = Station(name='station2_name',
                           location='station2_location',
                           x=10,
                           y=20,
                           z=30)
        network1.add_station(station1)
        network2.add_station(station2)

        inventory.add_network(network1)
        inventory.add_network(network2)

        self.assertEqual(len(inventory.networks), 2)
        self.assertTrue(network1 in inventory.networks)
        self.assertTrue(network2 in inventory.networks)
        self.assertEqual(station2.network, 'YY')
Ejemplo n.º 3
0
    def process_networks(self, inventory, networks):
        ''' Process the extraced network nodes.

        Parameters
        ----------
        inventory : :class:`~psysmon.packages.geometry.inventory.Inventory`
            The inventory to which to add the parsed sensors.

        networks : xml network nodes
            The xml network nodes parsed using the findall method.
        '''
        self.logger.debug("Processing the networks.")
        for cur_network in networks:
            content = self.parse_node(cur_network)

            if self.check_completeness(cur_network, content,
                                       'network') is False:
                continue

            if 'station' in content.keys():
                content.pop('station')

            # Create the Recorder instance.
            net_to_add = Network(name=cur_network.attrib['name'], **content)

            # Add the network to the inventory.
            inventory.add_network(net_to_add)

            stations = cur_network.findall('station')
            self.process_stations(net_to_add, stations)
Ejemplo n.º 4
0
    def __init__(self,
                 parent_inventory,
                 name,
                 description,
                 type,
                 geom_network=None):
        Network.__init__(self,
                         name=name,
                         description=description,
                         type=type,
                         parent_inventory=parent_inventory)

        if geom_network is None:
            # Create a new database network instance.
            geom_network_orm = self.parent_inventory.project.dbTables[
                'geom_network']
            self.geom_network = geom_network_orm(self.name, self.description,
                                                 self.type)
        else:
            self.geom_network = geom_network
Ejemplo n.º 5
0
    def test_remove_network_from_inventory(self):
        inventory = Inventory('inventory_name')

        network1 = Network(name='XX')
        network2 = Network(name='YY')
        network3 = Network(name='ZZ')

        inventory.add_network(network1)
        inventory.add_network(network2)
        inventory.add_network(network3)
        self.assertEqual(len(inventory.networks), 3)

        cur_net = inventory.remove_network(name='YY')
        self.assertEqual(len(inventory.networks), 2)
        self.assertEqual(cur_net, network2)
        self.assertTrue(network2 not in inventory.networks)

        cur_net = inventory.remove_network(name='AA')
        self.assertIsNone(cur_net)
        self.assertEqual(len(inventory.networks), 2)
Ejemplo n.º 6
0
    def test_add_station_to_inventory(self):
        inventory = Inventory('inventory_name')

        network1 = Network(name='XX')
        network2 = Network(name='YY')

        station1 = Station(name='station1_name',
                           location='station1_location',
                           x=10,
                           y=20,
                           z=30)

        station2 = Station(name='station2_name',
                           location='station2_location',
                           x=10,
                           y=20,
                           z=30)

        station3 = Station(name='station3_name',
                           location='station3_location',
                           x=10,
                           y=20,
                           z=30)

        inventory.add_network(network1)
        inventory.add_network(network2)
        inventory.add_station('XX', station1)
        inventory.add_station('YY', station2)
        inventory.add_station('ZZ', station3)

        self.assertIs(station1.parent_inventory, inventory)
        self.assertIs(station2.parent_inventory, inventory)
        self.assertIsNone(station3.parent_inventory)

        self.assertIs(station1.parent_network, network1)
        self.assertIs(station2.parent_network, network2)
        self.assertIsNone(station3.parent_network)
Ejemplo n.º 7
0
    def test_handle_station_in_array(self):
        inventory = Inventory('inventory_name')

        # First create a network and add some stations.
        network_1 = Network(name='XX')

        station_1 = Station(name='station_1_name',
                            location='station_1_location',
                            x=10,
                            y=20,
                            z=30)

        station_2 = Station(name='station_2_name',
                            location='station_2_location',
                            x=10,
                            y=20,
                            z=30)

        station_3 = Station(name='station_3_name',
                            location='station_3_location',
                            x=10,
                            y=20,
                            z=30)

        network_1.add_station(station_1)
        network_1.add_station(station_2)
        network_1.add_station(station_3)
        inventory.add_network(network_1)

        # Create two arrays and add them to the inventory.
        array_1 = Array(name='array_1')
        array_2 = Array(name='array_2')

        inventory.add_array(array_1)
        inventory.add_array(array_2)

        # Add some stations to the first array.
        start_time = UTCDateTime('2017-04-29')
        array_1.add_station(station_1, start_time=start_time, end_time=None)
        array_1.add_station(station_2, start_time=start_time, end_time=None)
        array_1.add_station(station_3, start_time=start_time, end_time=None)

        # Test for correct values.
        self.assertEqual(len(array_1.stations), 3)
        self.assertEqual(array_1.stations[0].item, station_1)
        self.assertEqual(array_1.stations[1].item, station_2)
        self.assertEqual(array_1.stations[2].item, station_3)

        # Remove one station.
        array_1.remove_station(name='station_2_name')

        # Test for correct values.
        self.assertEqual(len(array_1.stations), 2)
        self.assertEqual(array_1.stations[0].item, station_1)
        self.assertEqual(array_1.stations[1].item, station_3)
Ejemplo n.º 8
0
    def test_inventory_get_methods(self):
        inventory = Inventory('inventory_name')

        network1 = Network(name='XX', type='db')
        network2 = Network(name='YY', type='xml')
        network3 = Network(name='ZZ', type='xml')

        station1 = Station(name='station1_name',
                           location='station1_location',
                           x=10,
                           y=20,
                           z=30)

        station2 = Station(name='station2_name',
                           location='station2_location',
                           x=10,
                           y=20,
                           z=30)

        station3 = Station(name='station3_name',
                           location='station3_location',
                           x=10,
                           y=20,
                           z=30)

        station4 = Station(name='station4_name',
                           location='station4_location',
                           x=10,
                           y=20,
                           z=30)

        network1.add_station(station1)
        network2.add_station(station2)
        network2.add_station(station3)
        network3.add_station(station4)

        inventory.add_network(network1)
        inventory.add_network(network2)
        inventory.add_network(network3)

        # Test getting networks.
        cur_net = inventory.get_network()
        self.assertEqual(len(cur_net), 3)
        cur_net = inventory.get_network(name='XX')
        self.assertEqual(cur_net[0], network1)
        cur_net = inventory.get_network(name='YY')
        self.assertEqual(cur_net[0], network2)
        cur_net = inventory.get_network(name='ZZ')
        self.assertEqual(cur_net[0], network3)
        cur_net = inventory.get_network(type='db')
        self.assertEqual(cur_net[0], network1)
        cur_net = inventory.get_network(type='xml')
        self.assertEqual(len(cur_net), 2)
        self.assertTrue(network2 in cur_net)
        self.assertTrue(network3 in cur_net)
        cur_net = inventory.get_network(name='XX', type='db')
        self.assertEqual(cur_net[0], network1)
        cur_net = inventory.get_network(name='YY', type='xml')
        self.assertEqual(cur_net[0], network2)

        # Test getting stations.
        cur_stat = inventory.get_station()
        self.assertEqual(len(cur_stat), 4)