def create_edges(self, input_file_dir, input_file_name, output_file_name): storage = StorageFactory().get_storage(type='tab_storage', subdir='store', storage_location=input_file_dir) dataset = Dataset(in_storage = storage, id_name = ['stop_id','sch_time'], in_table_name = input_file_name) n = dataset.size() trip_ids = dataset.get_attribute("stop_id") unique_trip_ids = unique(trip_ids) source_list = list() target_list = list() time_list = list() for trip in unique_trip_ids: idx = where(dataset.get_attribute("stop_id") == trip)[0] nodes = dataset.get_attribute_by_index("node_id", idx) times = dataset.get_attribute_by_index("sch_time", idx) for inode in range(nodes.size-1): source_list.append(nodes[inode]) target_list.append(nodes[inode+1]) time_list.append(times[inode+1] - times[inode]) storage = StorageFactory().get_storage('dict_storage') storage.write_table(table_name='edges', table_data={ 'edge_id': arange(len(source_list))+1, 'source': array(source_list), #type=int64), # <<<< OUTPUT FIELD, USE array 'target': array(target_list), #type=int64), # <<<< OUTPUT FIELD, USE array 'cost': array(time_list, dtype=int32) } ) edges = Dataset(in_storage=storage, in_table_name='edges', id_name = "edge_id") edges.write_dataset(attributes = ["source", "target", "cost"], out_storage = storage, out_table_name = output_file_name)
def create_edges(self, input_file_dir, input_file_name, output_file_name): storage = StorageFactory().get_storage(type='tab_storage', subdir='store', storage_location=input_file_dir) dataset = Dataset(in_storage=storage, id_name=['stop_id', 'sch_time'], in_table_name=input_file_name) n = dataset.size() trip_ids = dataset.get_attribute("stop_id") unique_trip_ids = unique(trip_ids) source_list = list() target_list = list() time_list = list() for trip in unique_trip_ids: idx = where(dataset.get_attribute("stop_id") == trip)[0] nodes = dataset.get_attribute_by_index("node_id", idx) times = dataset.get_attribute_by_index("sch_time", idx) for inode in range(nodes.size - 1): source_list.append(nodes[inode]) target_list.append(nodes[inode + 1]) time_list.append(times[inode + 1] - times[inode]) storage = StorageFactory().get_storage('dict_storage') storage.write_table( table_name='edges', table_data={ 'edge_id': arange(len(source_list)) + 1, 'source': array( source_list), #type=int64), # <<<< OUTPUT FIELD, USE array 'target': array( target_list), #type=int64), # <<<< OUTPUT FIELD, USE array 'cost': array(time_list, dtype=int32) }) edges = Dataset(in_storage=storage, in_table_name='edges', id_name="edge_id") edges.write_dataset(attributes=["source", "target", "cost"], out_storage=storage, out_table_name=output_file_name)
def test_flt_dataset(self): import opus_core from opus_core.store.flt_storage import flt_storage attribute = 'little_endian' location = os.path.join(opus_core.__path__[0], 'data', 'flt') storage = flt_storage(storage_location=location) ds = Dataset(in_storage=storage, id_name=attribute, in_table_name='endians') self.assertAlmostEqual(11.0, ds.get_attribute_by_index(attribute, 0)) self.assertEqual(None, ds.get_attribute_header(attribute))