|
3 | 3 | Suppose that you have added multiple time series arrays to your components using differing
|
4 | 4 | names and attributes. How can you see what is present?
|
5 | 5 |
|
6 |
| -This example assumes that a system with two generators and time series data has been serialized |
7 |
| -to a file. |
| 6 | +This example uses a test module in the `infrasys` repository. |
| 7 | + |
| 8 | +The call to `system.add_time_series` returns a key. You can store those keys yourself or look them |
| 9 | +up later with `system.list_time_series_keys`. Here's how to do it. |
8 | 10 |
|
9 | 11 | ```python
|
10 |
| -from infrasys import Component, System |
11 |
| - |
12 |
| -system = System.from_json("system.json") |
13 |
| -for component in system.get_components(Component): |
14 |
| - for metadata in system.list_time_series_metadata(component): |
15 |
| - print(f"{component.label}: {metadata.label} {metadata.user_attributes}") |
16 |
| - |
17 |
| -Generator.gen1: SingleTimeSeries.active_power {'scenario': 'high', 'model_year': '2030'} |
18 |
| -Generator.gen1: SingleTimeSeries.active_power {'scenario': 'high', 'model_year': '2035'} |
19 |
| -Generator.gen1: SingleTimeSeries.active_power {'scenario': 'low', 'model_year': '2030'} |
20 |
| -Generator.gen1: SingleTimeSeries.active_power {'scenario': 'low', 'model_year': '2035'} |
21 |
| -Generator.gen1: SingleTimeSeries.reactive_power {'scenario': 'high', 'model_year': '2030'} |
22 |
| -Generator.gen1: SingleTimeSeries.reactive_power {'scenario': 'high', 'model_year': '2035'} |
23 |
| -Generator.gen1: SingleTimeSeries.reactive_power {'scenario': 'low', 'model_year': '2030'} |
24 |
| -Generator.gen1: SingleTimeSeries.reactive_power {'scenario': 'low', 'model_year': '2035'} |
25 |
| -Generator.gen2: SingleTimeSeries.active_power {'scenario': 'high', 'model_year': '2030'} |
26 |
| -Generator.gen2: SingleTimeSeries.active_power {'scenario': 'high', 'model_year': '2035'} |
27 |
| -Generator.gen2: SingleTimeSeries.active_power {'scenario': 'low', 'model_year': '2030'} |
28 |
| -Generator.gen2: SingleTimeSeries.active_power {'scenario': 'low', 'model_year': '2035'} |
29 |
| -Generator.gen2: SingleTimeSeries.reactive_power {'scenario': 'high', 'model_year': '2030'} |
30 |
| -Generator.gen2: SingleTimeSeries.reactive_power {'scenario': 'high', 'model_year': '2035'} |
31 |
| -Generator.gen2: SingleTimeSeries.reactive_power {'scenario': 'low', 'model_year': '2030'} |
32 |
| -Generator.gen2: SingleTimeSeries.reactive_power {'scenario': 'low', 'model_year': '2035'} |
| 12 | +from datetime import datetime, timedelta |
| 13 | + |
| 14 | +import numpy as np |
| 15 | + |
| 16 | +from infrasys import SingleTimeSeries |
| 17 | +from tests.models.simple_system import SimpleSystem, SimpleGenerator, SimpleBus |
| 18 | + |
| 19 | +system = SimpleSystem() |
| 20 | +bus = SimpleBus(name="test-bus", voltage=1.1) |
| 21 | +gen = SimpleGenerator(name="gen", active_power=1.0, rating=1.0, bus=bus, available=True) |
| 22 | +system.add_components(bus, gen) |
| 23 | + |
| 24 | +length = 10 |
| 25 | +initial_time = datetime(year=2020, month=1, day=1) |
| 26 | +timestamps = [initial_time + timedelta(hours=i) for i in range(length)] |
| 27 | +variable_name = "active_power" |
| 28 | +ts1 = SingleTimeSeries.from_time_array(np.random.rand(length), variable_name, timestamps) |
| 29 | +ts2 = SingleTimeSeries.from_time_array(np.random.rand(length), variable_name, timestamps) |
| 30 | +key1 = system.add_time_series(ts1, gen, scenario="low") |
| 31 | +key2 = system.add_time_series(ts2, gen, scenario="high") |
| 32 | + |
| 33 | +# Use the keys directly. |
| 34 | +ts1_b = system.get_time_series_by_key(gen, key1) |
| 35 | +ts2_b = system.get_time_series_by_key(gen, key2) |
| 36 | + |
| 37 | +# Identify the keys later. |
| 38 | +for key in system.list_time_series_keys(gen): |
| 39 | + print(f"{gen.label}: {key}") |
| 40 | +``` |
| 41 | +``` |
| 42 | +SimpleGenerator.gen: variable_name='active_power' initial_time=datetime.datetime(2020, 1, 1, 0, 0) resolution=datetime.timedelta(seconds=3600) time_series_type=<class 'infrasys.time_series_models.SingleTimeSeries'> user_attributes={'scenario': 'high'} length=10 |
| 43 | +SimpleGenerator.gen: variable_name='active_power' initial_time=datetime.datetime(2020, 1, 1, 0, 0) resolution=datetime.timedelta(seconds=3600) time_series_type=<class 'infrasys.time_series_models.SingleTimeSeries'> user_attributes={'scenario': 'low'} length=10 |
33 | 44 | ```
|
34 | 45 |
|
35 |
| -Now you can retrieve the exact instance you want. |
| 46 | +You can also retrieve time series by specifying the parameters as shown here: |
36 | 47 |
|
37 | 48 | ```python
|
38 |
| -system.time_series.get(gen1, variable_name="active_power", scenario="high", model_year="2035").data |
39 |
| -<pyarrow.lib.Int64Array object at 0x107a38d60> |
40 |
| -[ |
41 |
| - 0, |
42 |
| - 1, |
43 |
| - 2, |
44 |
| - 3, |
45 |
| - 4, |
46 |
| - 5, |
47 |
| - 6, |
48 |
| - 7, |
49 |
| - 8, |
50 |
| - 9, |
51 |
| - ... |
52 |
| - 8774, |
53 |
| - 8775, |
54 |
| - 8776, |
55 |
| - 8777, |
56 |
| - 8778, |
57 |
| - 8779, |
58 |
| - 8780, |
59 |
| - 8781, |
60 |
| - 8782, |
61 |
| - 8783 |
62 |
| -] |
| 49 | +system.time_series.get(gen, variable_name="active_power", scenario="high") |
| 50 | +``` |
| 51 | +``` |
| 52 | +SingleTimeSeries(variable_name='active_power', normalization=None, data=array([0.29276233, 0.97400382, 0.76499075, 0.95080431, 0.61749027, |
| 53 | + 0.73899945, 0.57877704, 0.3411286 , 0.80701393, 0.53051773]), resolution=datetime.timedelta(seconds=3600), initial_time=datetime.datetime(2020, 1, 1, 0, 0), length=10) |
63 | 54 | ```
|
0 commit comments