roc-film 1.13.4__py3-none-any.whl → 1.14.0__py3-none-any.whl
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.
- roc/__init__.py +2 -1
- roc/film/__init__.py +2 -2
- roc/film/commands.py +372 -323
- roc/film/config/__init__.py +0 -1
- roc/film/constants.py +101 -65
- roc/film/descriptor.json +126 -95
- roc/film/exceptions.py +28 -27
- roc/film/tasks/__init__.py +16 -16
- roc/film/tasks/cat_solo_hk.py +86 -74
- roc/film/tasks/cdf_postpro.py +438 -309
- roc/film/tasks/check_dds.py +39 -45
- roc/film/tasks/db_to_anc_bia_sweep_table.py +381 -0
- roc/film/tasks/dds_to_l0.py +232 -180
- roc/film/tasks/export_solo_coord.py +147 -0
- roc/film/tasks/file_handler.py +91 -75
- roc/film/tasks/l0_to_hk.py +117 -103
- roc/film/tasks/l0_to_l1_bia_current.py +38 -30
- roc/film/tasks/l0_to_l1_bia_sweep.py +417 -329
- roc/film/tasks/l0_to_l1_sbm.py +250 -208
- roc/film/tasks/l0_to_l1_surv.py +185 -130
- roc/film/tasks/make_daily_tm.py +40 -37
- roc/film/tasks/merge_tcreport.py +77 -71
- roc/film/tasks/merge_tmraw.py +102 -89
- roc/film/tasks/parse_dds_xml.py +21 -20
- roc/film/tasks/set_l0_utc.py +51 -49
- roc/film/tests/cdf_compare.py +565 -0
- roc/film/tests/hdf5_compare.py +84 -62
- roc/film/tests/test_dds_to_l0.py +93 -51
- roc/film/tests/test_dds_to_tc.py +8 -11
- roc/film/tests/test_dds_to_tm.py +8 -10
- roc/film/tests/test_film.py +161 -116
- roc/film/tests/test_l0_to_hk.py +64 -36
- roc/film/tests/test_l0_to_l1_bia.py +10 -14
- roc/film/tests/test_l0_to_l1_sbm.py +14 -19
- roc/film/tests/test_l0_to_l1_surv.py +68 -41
- roc/film/tests/test_metadata.py +21 -20
- roc/film/tests/tests.py +743 -396
- roc/film/tools/__init__.py +5 -5
- roc/film/tools/dataset_tasks.py +34 -2
- roc/film/tools/file_helpers.py +390 -269
- roc/film/tools/l0.py +402 -324
- roc/film/tools/metadata.py +147 -127
- roc/film/tools/skeleton.py +12 -17
- roc/film/tools/tools.py +109 -92
- roc/film/tools/xlsx2skt.py +161 -139
- {roc_film-1.13.4.dist-info → roc_film-1.14.0.dist-info}/LICENSE +127 -125
- roc_film-1.14.0.dist-info/METADATA +60 -0
- roc_film-1.14.0.dist-info/RECORD +50 -0
- {roc_film-1.13.4.dist-info → roc_film-1.14.0.dist-info}/WHEEL +1 -1
- roc/film/tasks/l0_to_anc_bia_sweep_table.py +0 -348
- roc_film-1.13.4.dist-info/METADATA +0 -120
- roc_film-1.13.4.dist-info/RECORD +0 -48
roc/film/tools/metadata.py
CHANGED
@@ -11,20 +11,25 @@ from poppy.pop.plugins import Plugin
|
|
11
11
|
|
12
12
|
from roc.film.exceptions import UnknownPipeline, InvalidDataVersion
|
13
13
|
from roc.film.tools import valid_data_version
|
14
|
-
from roc.film.constants import
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
14
|
+
from roc.film.constants import (
|
15
|
+
PLUGIN,
|
16
|
+
TIME_DAILY_STRFORMAT,
|
17
|
+
CDF_TRANGE_STRFORMAT,
|
18
|
+
UNKNOWN_IDB,
|
19
|
+
DATA_VERSION,
|
20
|
+
)
|
21
|
+
|
22
|
+
__all__ = [
|
23
|
+
"init_l0_meta",
|
24
|
+
"init_cdf_global",
|
25
|
+
"get_data_version",
|
26
|
+
"set_logical_file_id",
|
27
|
+
"get_logical_file_id",
|
28
|
+
"get_spice_kernels",
|
29
|
+
]
|
30
|
+
|
31
|
+
|
32
|
+
def init_cdf_global(l0_attrs, task, master_path, overwrite=None):
|
28
33
|
"""
|
29
34
|
Define global attributes data to save into the CDF from the content of the L0 file and task.
|
30
35
|
See roc.film.tasks.l0.init_l0_meta for the list of specific L0 meta
|
@@ -42,79 +47,80 @@ def init_cdf_global(l0_attrs, task, master_path,
|
|
42
47
|
# by import master CDF global attributes
|
43
48
|
meta = dict(CDF(master_path).attrs)
|
44
49
|
|
45
|
-
pipeline_id = Configuration.manager[
|
46
|
-
pipeline_version = Configuration.manager[
|
50
|
+
pipeline_id = Configuration.manager["descriptor"]["pipeline.identifier"].upper()
|
51
|
+
pipeline_version = Configuration.manager["descriptor"]["pipeline.release.version"]
|
47
52
|
|
48
|
-
if pipeline_id ==
|
53
|
+
if pipeline_id == "RGTS":
|
49
54
|
# Specific to RGTS
|
50
|
-
|
55
|
+
pipeline_name = pipeline_id + ">ROC Ground Test SGSE"
|
51
56
|
|
52
57
|
try:
|
53
|
-
meta[
|
54
|
-
meta[
|
55
|
-
meta[
|
56
|
-
|
57
|
-
meta[
|
58
|
-
meta[
|
59
|
-
meta[
|
60
|
-
|
58
|
+
meta["Test_name"] = l0_attrs["Test_name"].encode("utf-8")
|
59
|
+
meta["Test_uuid"] = l0_attrs["Test_uuid"]
|
60
|
+
meta["Test_description"] = l0_attrs["Test_description"].encode("utf-8")
|
61
|
+
meta["Test_creation_date"] = l0_attrs["Test_creation_date"]
|
62
|
+
meta["Test_launched_date"] = l0_attrs["Test_launched_date"]
|
63
|
+
meta["Test_terminated_date"] = l0_attrs["Test_terminated_date"]
|
64
|
+
meta["Test_log_file"] = l0_attrs["Test_log_file"]
|
65
|
+
|
66
|
+
if "Free_field" in l0_attrs and len(l0_attrs["Free_field"].strip()) > 0:
|
67
|
+
meta["Free_field"] = l0_attrs["Free_field"]
|
68
|
+
|
69
|
+
# provider in the good format
|
70
|
+
meta["Provider"] = l0_attrs["Provider"]
|
61
71
|
|
62
72
|
# ID of the test for the ROC internal use
|
63
|
-
meta[
|
73
|
+
meta["Test_id"] = l0_attrs["Test_id"]
|
64
74
|
except Exception:
|
65
75
|
logger.warning('No "Test_*" attribute found for the input l0')
|
66
76
|
|
67
|
-
elif pipeline_id ==
|
68
|
-
|
69
|
-
meta['Pipeline_name'] = pipeline_id + '>RPW Operation and Data Pipeline'
|
70
|
-
pass
|
77
|
+
elif pipeline_id == "RODP":
|
78
|
+
pipeline_name = pipeline_id + ">RPW Operation and Data Pipeline"
|
71
79
|
else:
|
72
|
-
raise UnknownPipeline(f
|
73
|
-
f' {pipeline_id}, ABORTING!')
|
80
|
+
raise UnknownPipeline(f"UNKNOWN PIPELINE TYPE: {pipeline_id}, ABORTING!")
|
74
81
|
|
75
82
|
# Common global attributes
|
76
83
|
try:
|
77
84
|
# Perform some verifications on metadata
|
78
|
-
if
|
79
|
-
logger.warning(
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
meta[
|
86
|
-
meta[
|
87
|
-
meta[
|
85
|
+
if pipeline_name != str(l0_attrs["Pipeline_name"]):
|
86
|
+
logger.warning(
|
87
|
+
"Pipeline_name is inconsistent "
|
88
|
+
f"between the pipeline ({meta['Pipeline_name']})"
|
89
|
+
f"and the input L0 file ({l0_attrs['Pipeline_name']})!"
|
90
|
+
)
|
91
|
+
|
92
|
+
meta["Pipeline_name"] = pipeline_name
|
93
|
+
meta["Pipeline_version"] = pipeline_version
|
94
|
+
meta["Parents"] = ["CDF>" + l0_attrs["Logical_file_id"]]
|
95
|
+
# meta['Parent_version'] = valid_data_version(l0_attrs['Data_version'])
|
96
|
+
meta["Software_version"] = Plugin.manager[PLUGIN].version
|
88
97
|
|
89
98
|
# Use for building filename
|
90
|
-
meta[
|
91
|
-
|
92
|
-
# provider in the good format
|
93
|
-
meta['Provider'] = l0_attrs['Provider']
|
99
|
+
meta["Datetime"] = l0_attrs["Datetime"]
|
94
100
|
|
95
101
|
# Get file naming convention
|
96
|
-
meta[
|
102
|
+
meta["File_naming_convention"] = l0_attrs["File_naming_convention"]
|
97
103
|
except Exception:
|
98
|
-
logger.error(
|
104
|
+
logger.error("Missing attributes in l0 file!")
|
99
105
|
|
100
106
|
# the name of the software (plugin) that generated the file, from the
|
101
107
|
# descriptor information
|
102
|
-
meta[
|
108
|
+
meta["Software_name"] = PLUGIN
|
103
109
|
|
104
110
|
# Initialize Validate (0 = no validation)
|
105
|
-
meta[
|
111
|
+
meta["Validate"] = "0"
|
106
112
|
|
107
113
|
# Initialize data_version to "01"
|
108
|
-
meta[
|
114
|
+
meta["Data_version"] = get_data_version(task)
|
109
115
|
|
110
116
|
# If overwrite keyword, then replace g.attrs value
|
111
117
|
if overwrite:
|
112
118
|
for key, val in overwrite.items():
|
113
119
|
meta[key] = val
|
114
|
-
logger.debug(f
|
120
|
+
logger.debug(f"{key} g.attribute value set to {val}")
|
115
121
|
|
116
122
|
# Initialize logical_file_id
|
117
|
-
meta[
|
123
|
+
meta["Logical_file_id"] = set_logical_file_id(meta)
|
118
124
|
|
119
125
|
return meta
|
120
126
|
|
@@ -127,13 +133,16 @@ def get_idb_version(task, **kwargs):
|
|
127
133
|
:return: string with idb_version
|
128
134
|
"""
|
129
135
|
|
130
|
-
idb_version = task.pipeline.get(
|
131
|
-
|
136
|
+
idb_version = task.pipeline.get(
|
137
|
+
"idb_version", default=kwargs.get("idb_version", UNKNOWN_IDB)
|
138
|
+
)
|
132
139
|
try:
|
133
|
-
idb_version = task.inputs[
|
140
|
+
idb_version = task.inputs["raw_data"].value.packet_parser.idb_version
|
134
141
|
except Exception:
|
135
|
-
logger.debug(
|
136
|
-
|
142
|
+
logger.debug(
|
143
|
+
"No IDB version found in the input raw_data:\n"
|
144
|
+
f"attempting to retrieve value from pipeline properties: {idb_version}"
|
145
|
+
)
|
137
146
|
|
138
147
|
return idb_version
|
139
148
|
|
@@ -146,19 +155,21 @@ def get_idb_source(task, **kwargs):
|
|
146
155
|
:return: string with idb_source
|
147
156
|
"""
|
148
157
|
|
149
|
-
idb_source = task.pipeline.get(
|
150
|
-
|
158
|
+
idb_source = task.pipeline.get(
|
159
|
+
"idb_source", default=kwargs.get("idb_source", UNKNOWN_IDB)
|
160
|
+
)
|
151
161
|
try:
|
152
|
-
idb_source = task.inputs[
|
162
|
+
idb_source = task.inputs["raw_data"].value.packet_parser.idb_source
|
153
163
|
except Exception:
|
154
|
-
logger.debug(
|
155
|
-
|
164
|
+
logger.debug(
|
165
|
+
"No IDB source found in the input raw_data:\n"
|
166
|
+
f"attempting to retrieve value from pipeline properties: {idb_source}"
|
167
|
+
)
|
156
168
|
|
157
169
|
return idb_source
|
158
170
|
|
159
171
|
|
160
|
-
def init_l0_meta(task,
|
161
|
-
extra_attrs={}):
|
172
|
+
def init_l0_meta(task, extra_attrs={}):
|
162
173
|
"""
|
163
174
|
Initialize RPW L0 metadata
|
164
175
|
|
@@ -172,100 +183,110 @@ def init_l0_meta(task,
|
|
172
183
|
|
173
184
|
# Retrieve required values from the pipeline properties
|
174
185
|
# Get pipeline ID ("RGTS" or "RODP")
|
175
|
-
pipeline_id = task.pipeline.properties.configuration[
|
186
|
+
pipeline_id = task.pipeline.properties.configuration[
|
187
|
+
"environment.ROC_PIP_NAME"
|
188
|
+
].upper()
|
176
189
|
|
177
190
|
# Get input RawData value
|
178
191
|
try:
|
179
|
-
raw_data = task.inputs[
|
192
|
+
raw_data = task.inputs["raw_data"].value
|
180
193
|
except Exception:
|
181
194
|
raw_data = None
|
182
195
|
|
183
196
|
# Get metadata specific to ROC-SGSE
|
184
|
-
if pipeline_id ==
|
185
|
-
|
186
|
-
meta['Pipeline_name'] = pipeline_id + '>ROC Ground Test SGSE'
|
197
|
+
if pipeline_id == "RGTS":
|
198
|
+
meta["Pipeline_name"] = pipeline_id + ">ROC Ground Test SGSE"
|
187
199
|
|
188
200
|
try:
|
189
201
|
# Get the 7 first characters of the test log SHA
|
190
202
|
test_sha = raw_data.sha1
|
191
203
|
test_short_sha = raw_data.short_sha1
|
192
204
|
|
193
|
-
meta[
|
194
|
-
meta[
|
195
|
-
meta[
|
196
|
-
meta[
|
197
|
-
meta[
|
198
|
-
meta[
|
199
|
-
meta[
|
200
|
-
meta[
|
201
|
-
|
202
|
-
meta[
|
203
|
-
|
204
|
-
|
205
|
-
|
205
|
+
meta["Test_name"] = raw_data.name
|
206
|
+
meta["Test_uuid"] = raw_data.uuid
|
207
|
+
meta["Test_description"] = raw_data.description
|
208
|
+
meta["Test_creation_date"] = str(raw_data.creation_date)
|
209
|
+
meta["Test_launched_date"] = str(raw_data.date)
|
210
|
+
meta["Test_terminated_date"] = str(raw_data.terminated_date)
|
211
|
+
meta["Test_log_file"] = osp.basename(raw_data.file_path)
|
212
|
+
meta["Test_id"] = test_short_sha + ">" + test_sha
|
213
|
+
|
214
|
+
meta["Free_field"] = "-".join(
|
215
|
+
[task.pipeline.provider[:3].lower(), test_short_sha]
|
216
|
+
)
|
217
|
+
meta["Datetime"] = "-".join(
|
218
|
+
[
|
219
|
+
raw_data.time_min.strftime(CDF_TRANGE_STRFORMAT),
|
220
|
+
raw_data.time_max.strftime(CDF_TRANGE_STRFORMAT),
|
221
|
+
]
|
222
|
+
)
|
206
223
|
except Exception:
|
207
|
-
logger.warning(
|
208
|
-
meta[
|
209
|
-
meta[
|
224
|
+
logger.warning("No input test log found!")
|
225
|
+
meta["Free_field"] = ""
|
226
|
+
meta["Datetime"] = datetime.now().strftime(TIME_DAILY_STRFORMAT)
|
210
227
|
|
211
|
-
meta[
|
212
|
-
|
213
|
-
|
228
|
+
meta["File_naming_convention"] = (
|
229
|
+
"<Source_name>_<LEVEL>_<Descriptor>_<Datetime>_V<Data_version>_<Free_field>"
|
230
|
+
)
|
214
231
|
|
215
|
-
elif pipeline_id ==
|
232
|
+
elif pipeline_id == "RODP":
|
216
233
|
# Get metadata specific to RODP
|
217
234
|
# TODO - Complete metadata for RPW L0
|
218
235
|
|
219
|
-
meta[
|
220
|
-
|
236
|
+
meta["File_naming_convention"] = (
|
237
|
+
"<Source_name>_<LEVEL>_<Descriptor>_<Datetime>_V<Data_version>"
|
238
|
+
)
|
221
239
|
|
222
|
-
meta[
|
223
|
-
meta[
|
240
|
+
meta["Pipeline_name"] = pipeline_id + ">RPW Operation and Data Pipeline"
|
241
|
+
meta["Free_field"] = ""
|
224
242
|
|
225
243
|
# Define Datetime value
|
226
|
-
datetime_attr = extra_attrs.pop(
|
244
|
+
datetime_attr = extra_attrs.pop("Datetime", None)
|
227
245
|
if datetime_attr is None:
|
228
|
-
if
|
246
|
+
if (
|
247
|
+
raw_data is not None
|
248
|
+
and hasattr(raw_data, "datetime")
|
249
|
+
and raw_data.datetime is not None
|
250
|
+
):
|
229
251
|
datetime_attr = raw_data.datetime.strftime(TIME_DAILY_STRFORMAT)
|
230
252
|
else:
|
231
|
-
datetime_attr = task.pipeline.get(
|
253
|
+
datetime_attr = task.pipeline.get("datetime")
|
232
254
|
if datetime_attr is None:
|
233
|
-
logger.warning(
|
255
|
+
logger.warning("Unknown Datetime attribute value")
|
234
256
|
else:
|
235
257
|
datetime_attr = datetime_attr.strftime(TIME_DAILY_STRFORMAT)
|
236
258
|
|
237
|
-
meta[
|
259
|
+
meta["Datetime"] = datetime_attr
|
238
260
|
|
239
261
|
else:
|
240
|
-
raise UnknownPipeline(f
|
241
|
-
f' {pipeline_id}, ABORTING!')
|
262
|
+
raise UnknownPipeline(f"UNKNOWN PIPELINE TYPE: {pipeline_id}, ABORTING!")
|
242
263
|
|
243
264
|
# Common metadata
|
244
|
-
meta[
|
245
|
-
meta[
|
246
|
-
meta[
|
247
|
-
meta[
|
248
|
-
meta[
|
249
|
-
meta[
|
250
|
-
meta[
|
251
|
-
meta[
|
265
|
+
meta["Project"] = "SOLO>Solar Orbiter"
|
266
|
+
meta["Source_name"] = "SOLO>Solar Orbiter"
|
267
|
+
meta["Software_name"] = PLUGIN
|
268
|
+
meta["Software_version"] = Plugin.manager[PLUGIN].version
|
269
|
+
meta["Dataset_ID"] = "SOLO_L0_RPW"
|
270
|
+
meta["Descriptor"] = "RPW>Radio and Plasma Waves instrument"
|
271
|
+
meta["LEVEL"] = "L0>Level 0 data processing"
|
272
|
+
meta["Provider"] = ">".join(
|
252
273
|
[
|
253
274
|
task.pipeline.provider[:3].upper(),
|
254
275
|
task.pipeline.provider,
|
255
276
|
]
|
256
277
|
)
|
257
278
|
|
258
|
-
meta[
|
259
|
-
|
279
|
+
meta["Pipeline_version"] = Configuration.manager["descriptor"][
|
280
|
+
"pipeline.release.version"
|
260
281
|
]
|
261
282
|
|
262
283
|
# Initialize data_version
|
263
|
-
data_version = extra_attrs.pop(
|
284
|
+
data_version = extra_attrs.pop("Data_version", None)
|
264
285
|
if data_version is None:
|
265
286
|
# Initialize data_Version to "01"
|
266
|
-
meta[
|
287
|
+
meta["Data_version"] = get_data_version(task)
|
267
288
|
else:
|
268
|
-
meta[
|
289
|
+
meta["Data_version"] = data_version
|
269
290
|
|
270
291
|
# Add extra attributes (if any)
|
271
292
|
if extra_attrs:
|
@@ -273,7 +294,7 @@ def init_l0_meta(task,
|
|
273
294
|
meta[key] = val
|
274
295
|
|
275
296
|
# Initialize logical_file_id
|
276
|
-
meta[
|
297
|
+
meta["Logical_file_id"] = set_logical_file_id(meta)
|
277
298
|
|
278
299
|
return meta
|
279
300
|
|
@@ -286,7 +307,7 @@ def get_data_version(task):
|
|
286
307
|
:return: string containing Data_version value
|
287
308
|
"""
|
288
309
|
|
289
|
-
data_version = task.pipeline.get(
|
310
|
+
data_version = task.pipeline.get("data_version", default=None, args=True)
|
290
311
|
if data_version is None:
|
291
312
|
data_version = DATA_VERSION
|
292
313
|
else:
|
@@ -296,7 +317,7 @@ def get_data_version(task):
|
|
296
317
|
try:
|
297
318
|
return valid_data_version(data_version)
|
298
319
|
except Exception:
|
299
|
-
raise InvalidDataVersion(f
|
320
|
+
raise InvalidDataVersion(f"Input data version is invalid: {data_version}")
|
300
321
|
|
301
322
|
|
302
323
|
def set_logical_file_id(metadata):
|
@@ -308,16 +329,16 @@ def set_logical_file_id(metadata):
|
|
308
329
|
"""
|
309
330
|
|
310
331
|
# Get expected fields in the file_naming_convention
|
311
|
-
logical_file_id = str(metadata[
|
312
|
-
for field in re.findall(r
|
332
|
+
logical_file_id = str(metadata["File_naming_convention"])
|
333
|
+
for field in re.findall(r"<([A-Za-z0-9_\-]+)>", logical_file_id):
|
313
334
|
# Extract value from metadata
|
314
|
-
value = str(metadata[field]).split(
|
315
|
-
if field ==
|
335
|
+
value = str(metadata[field]).split(">")[0]
|
336
|
+
if field == "Datetime" or field == "LEVEL":
|
316
337
|
value = value.upper()
|
317
338
|
else:
|
318
339
|
value = value.lower()
|
319
340
|
|
320
|
-
logical_file_id = logical_file_id.replace(
|
341
|
+
logical_file_id = logical_file_id.replace("<" + field + ">", value)
|
321
342
|
|
322
343
|
return logical_file_id
|
323
344
|
|
@@ -334,20 +355,19 @@ def get_logical_file_id(filename):
|
|
334
355
|
return osp.basename(osp.splitext(filename)[0])
|
335
356
|
|
336
357
|
|
337
|
-
def get_spice_kernels(time_instance=None,
|
338
|
-
pattern=None):
|
358
|
+
def get_spice_kernels(time_instance=None, pattern=None):
|
339
359
|
# If time_instance not passed as input argument,
|
340
360
|
# then initialize it from Time class (singleton)
|
341
361
|
if time_instance is None:
|
342
362
|
from roc.rpl.time import Time
|
363
|
+
|
343
364
|
time_instance = Time()
|
344
365
|
|
345
366
|
# get all loaded kernels
|
346
367
|
loaded_kernels = time_instance.spice.kall()
|
347
368
|
|
348
369
|
if pattern is not None:
|
349
|
-
loaded_kernels = [kfile for kfile in loaded_kernels.keys()
|
350
|
-
if pattern in kfile]
|
370
|
+
loaded_kernels = [kfile for kfile in loaded_kernels.keys() if pattern in kfile]
|
351
371
|
else:
|
352
372
|
loaded_kernels = list(loaded_kernels.keys())
|
353
373
|
|
roc/film/tools/skeleton.py
CHANGED
@@ -19,12 +19,12 @@ from roc.film.tools import DESCRIPTOR
|
|
19
19
|
__all__ = ["IDBToExcel"]
|
20
20
|
|
21
21
|
|
22
|
-
|
23
22
|
class IDBToExcel(object):
|
24
23
|
"""
|
25
24
|
Class used to convert the IDB in XML format to the excel format needed by
|
26
25
|
the converter from excel to CDF skeleton format by Xavier.
|
27
26
|
"""
|
27
|
+
|
28
28
|
def __init__(self, args):
|
29
29
|
"""
|
30
30
|
Store arguments from the command line.
|
@@ -94,8 +94,8 @@ class IDBToExcel(object):
|
|
94
94
|
|
95
95
|
# save the excel file in the output directory
|
96
96
|
outfile = osp.join(
|
97
|
-
|
98
|
-
|
97
|
+
self.args.directory, data_descr["template"].replace(".cdf", ".xlsx")
|
98
|
+
)
|
99
99
|
logger.info("Saving {0}".format(outfile))
|
100
100
|
workbook.save(outfile)
|
101
101
|
|
@@ -119,8 +119,7 @@ class IDBToExcel(object):
|
|
119
119
|
|
120
120
|
if version is None:
|
121
121
|
raise ValueError(
|
122
|
-
"Skeleton version is not set in the HK skeleton " +
|
123
|
-
"template."
|
122
|
+
"Skeleton version is not set in the HK skeleton " + "template."
|
124
123
|
)
|
125
124
|
|
126
125
|
# remove surrounds
|
@@ -130,8 +129,8 @@ class IDBToExcel(object):
|
|
130
129
|
if re.match("^[0-9]{2}$", version) is None:
|
131
130
|
raise ValueError(
|
132
131
|
(
|
133
|
-
"Bad format for the skeleton version in the HK "
|
134
|
-
"template with value {0}"
|
132
|
+
"Bad format for the skeleton version in the HK "
|
133
|
+
+ "template with value {0}"
|
135
134
|
).format(version)
|
136
135
|
)
|
137
136
|
|
@@ -164,13 +163,11 @@ class IDBToExcel(object):
|
|
164
163
|
|
165
164
|
# logical source
|
166
165
|
elif name == "Logical_source":
|
167
|
-
row[3].value = "_".join([items[0].lower(),
|
168
|
-
"_HK_",
|
169
|
-
items[2].lower()])
|
166
|
+
row[3].value = "_".join([items[0].lower(), "_HK_", items[2].lower()])
|
170
167
|
|
171
168
|
# descriptor
|
172
169
|
elif name == "Descriptor":
|
173
|
-
row[3].value =
|
170
|
+
row[3].value = items[2].upper() + ">" + items[2].upper()
|
174
171
|
|
175
172
|
elif name == "MODS":
|
176
173
|
row[3].value = dt.datetime.utcnow().isoformat()
|
@@ -178,8 +175,8 @@ class IDBToExcel(object):
|
|
178
175
|
# TEXT field
|
179
176
|
elif name == "TEXT":
|
180
177
|
row[3].value = (
|
181
|
-
"This file contains RPW {0} housekeeping."
|
182
|
-
"Parameters are returned in the TM_{0}_HK packets."
|
178
|
+
"This file contains RPW {0} housekeeping."
|
179
|
+
+ "Parameters are returned in the TM_{0}_HK packets."
|
183
180
|
).format(items[2].split("-")[1])
|
184
181
|
|
185
182
|
def base_workbook(self):
|
@@ -217,7 +214,7 @@ class IDBToExcel(object):
|
|
217
214
|
for row in rows:
|
218
215
|
for cell in row:
|
219
216
|
cell.value = None
|
220
|
-
#sheet._garbage_collect()
|
217
|
+
# sheet._garbage_collect()
|
221
218
|
|
222
219
|
return wb, attributes
|
223
220
|
|
@@ -278,9 +275,7 @@ class IDBToExcel(object):
|
|
278
275
|
attributes["LABLAXIS"]["value"] = parameter.definition.name
|
279
276
|
attributes["SRDB_PARAM_ID"]["value"] = str(parameter)
|
280
277
|
if self.idb_parser.is_enumeration(parameter):
|
281
|
-
attributes["SRDB_ENUM_ID"][
|
282
|
-
"value"
|
283
|
-
] = self.idb_parser.enumeration_srdb(
|
278
|
+
attributes["SRDB_ENUM_ID"]["value"] = self.idb_parser.enumeration_srdb(
|
284
279
|
parameter.definition.data_type,
|
285
280
|
parameter.type,
|
286
281
|
)
|