flightdata 0.2.13__tar.gz → 0.2.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {flightdata-0.2.13/flightdata.egg-info → flightdata-0.2.14}/PKG-INFO +1 -1
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/base/table.py +14 -9
- {flightdata-0.2.13 → flightdata-0.2.14/flightdata.egg-info}/PKG-INFO +1 -1
- {flightdata-0.2.13 → flightdata-0.2.14}/test/base/test_table.py +6 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/.github/workflows/publish_pypi.yml +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/.gitignore +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/.vscode/launch.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/.vscode/settings.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/LICENSE +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/README.md +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/axis_rates.ipynb +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/data/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/data/manual_F3A_F23_22_04_28_00000231.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/data/manual_F3A_P23_22_05_31_00000350.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/data/manual_F3A_P23_23_08_11_00000094.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/flight_data.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/flight_dynamics/00000150.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/flight_dynamics/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/flight_dynamics/box.f3a +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/flight_dynamics/param_id.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/state_analysis/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/state_analysis/axes.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/examples/state_analysis/state_fill_plot.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/base/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/base/collection.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/base/constructs.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/base/labeling.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/base/numpy_encoder.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/coefficients.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/environment/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/environment/environment.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/environment/wind.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/flight/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/flight/ardupilot.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/flight/fields.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/flight/flight.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/flight/parameters.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/flow.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/model/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/model/aerodynamic.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/model/thrust.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/origin.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/scripts/collect_logs.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/scripts/flightline.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata/state.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata.egg-info/SOURCES.txt +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata.egg-info/dependency_links.txt +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata.egg-info/entry_points.txt +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata.egg-info/requires.txt +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/flightdata.egg-info/top_level.txt +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/pyproject.toml +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/requirements-dev.txt +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/requirements.txt +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/setup.cfg +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/EmailedBox.f3a +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/base/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/base/test_base_constructs.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/conftest.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/data/make_inputs.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/data/manual_F3A_P23.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/data/p23.BIN +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/data/p23.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/data/p23_box.f3a +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/data/p23_fc.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/data/p23_flight.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/data/vtol_hover.bin +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/data/vtol_hover.json +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_environment/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_environment/test_environment.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_environment/test_environment_wind.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_fields.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_flight.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_model/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_model/test_model_coefficients.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_model/test_model_flow.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_origin.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_state/__init__.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_state/test_state.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_state/test_state_builders.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_state/test_state_conversions.py +0 -0
- {flightdata-0.2.13 → flightdata-0.2.14}/test/test_state/test_state_measurements.py +0 -0
|
@@ -135,19 +135,24 @@ class Table:
|
|
|
135
135
|
axis=0,
|
|
136
136
|
ignore_index=True
|
|
137
137
|
).set_index("t", drop=False))
|
|
138
|
-
|
|
138
|
+
|
|
139
|
+
def zero_index(self):
|
|
140
|
+
data = self.data.copy()
|
|
141
|
+
return self.__class__(data.set_index(data.index - data.index[0]))
|
|
142
|
+
|
|
139
143
|
@classmethod
|
|
140
|
-
def stack(Cls,
|
|
144
|
+
def stack(Cls, sts: list, overlap: int=1) -> Self:
|
|
141
145
|
"""Stack a list of Tables on top of each other.
|
|
142
|
-
The overlap is the number of rows to overlap between each
|
|
146
|
+
The overlap is the number of rows to overlap between each st
|
|
143
147
|
"""
|
|
144
|
-
|
|
148
|
+
t0 = sts[0].data.index[0]
|
|
149
|
+
sts = [st.zero_index() for st in sts]
|
|
145
150
|
if overlap > 0:
|
|
146
|
-
offsets = np.cumsum([0] + [
|
|
147
|
-
dfs = [
|
|
151
|
+
offsets = np.cumsum([0] + [s0.data.index[-overlap] for s0 in sts[:-1]])
|
|
152
|
+
dfs = [st.data.iloc[:-overlap] for st in sts[:-1]] + [sts[-1].data]
|
|
148
153
|
elif overlap == 0:
|
|
149
|
-
offsets = np.cumsum([0] + [sec.duration + sec.dt[-1] for sec in
|
|
150
|
-
dfs = [
|
|
154
|
+
offsets = np.cumsum([0] + [sec.duration + sec.dt[-1] for sec in sts[:-1]])
|
|
155
|
+
dfs = [st.data for st in sts]
|
|
151
156
|
else:
|
|
152
157
|
raise AttributeError("Overlap must be >= 0")
|
|
153
158
|
|
|
@@ -155,7 +160,7 @@ class Table:
|
|
|
155
160
|
df.index = np.array(df.index) - df.index[0] + offset
|
|
156
161
|
combo = pd.concat(dfs)
|
|
157
162
|
combo.index.name = "t"
|
|
158
|
-
|
|
163
|
+
combo.index = combo.index + t0
|
|
159
164
|
combo["t"] = combo.index
|
|
160
165
|
|
|
161
166
|
return Cls(combo)
|
|
@@ -74,6 +74,12 @@ def test_stack(tab_full):
|
|
|
74
74
|
assert len(tfn) == 2 * len(tab_full) - 1
|
|
75
75
|
|
|
76
76
|
|
|
77
|
+
tfn = Table.stack([tfn.label(manoeuvre='m1'),tfn.label(manoeuvre='m2')])
|
|
78
|
+
assert tfn.data.index.is_monotonic_increasing
|
|
79
|
+
tfn2 = Table.stack(list(tfn.split_labels().values()))
|
|
80
|
+
assert tfn.duration == tfn2.duration
|
|
81
|
+
|
|
82
|
+
|
|
77
83
|
def test_shift_multi(tab_full):
|
|
78
84
|
tabs = Table.stack([tab_full.label(element='e0'), tab_full.label(element='e1')], overlap=1).split_labels()
|
|
79
85
|
tb1, tb2 = Table.shift_multi(2, tabs['e0'], tabs['e1'])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|