seabirdfilehandler 0.7.0__tar.gz → 0.7.2__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.

Potentially problematic release.


This version of seabirdfilehandler might be problematic. Click here for more details.

Files changed (16) hide show
  1. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/PKG-INFO +1 -1
  2. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/pyproject.toml +1 -1
  3. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/cnvfile.py +13 -14
  4. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/file_collection.py +1 -1
  5. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/parameter.py +37 -4
  6. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/processing_steps.py +35 -0
  7. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/LICENSE +0 -0
  8. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/README.md +0 -0
  9. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/__init__.py +0 -0
  10. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/bottlefile.py +0 -0
  11. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/bottlelogfile.py +0 -0
  12. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/datafiles.py +0 -0
  13. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/geomar_ctd_file_parser.py +0 -0
  14. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/hexfile.py +0 -0
  15. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/utils.py +0 -0
  16. {seabirdfilehandler-0.7.0 → seabirdfilehandler-0.7.2}/src/seabirdfilehandler/xmlfiles.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: seabirdfilehandler
3
- Version: 0.7.0
3
+ Version: 0.7.2
4
4
  Summary: Library of parsers to interact with SeaBird CTD files.
5
5
  Keywords: CTD,parser,seabird,data
6
6
  Author: Emil Michels
@@ -20,7 +20,7 @@ urls.homepage = "https://ctd-software.pages.io-warnemuende.de/seabirdfilehandler
20
20
  urls.repository = "https://git.io-warnemuende.de/CTD-Software/SeabirdFileHandler"
21
21
  urls.documentation = "https://ctd-software.pages.io-warnemuende.de/seabirdfilehandler"
22
22
  dynamic = []
23
- version = "0.7.0"
23
+ version = "0.7.2"
24
24
 
25
25
  [tool.poetry]
26
26
 
@@ -95,7 +95,7 @@ class CnvFile(DataFile):
95
95
 
96
96
  """
97
97
  time_parameter = None
98
- for parameter in self.df.columns:
98
+ for parameter in self.parameters.keys():
99
99
  if parameter.lower().startswith("time"):
100
100
  time_parameter = parameter
101
101
  if time_parameter and self.start_time:
@@ -106,8 +106,9 @@ class CnvFile(DataFile):
106
106
  timedelta(days=float(time)) + self.start_time
107
107
  if time_parameter == "timeJ"
108
108
  else timedelta(seconds=float(time)) + self.start_time
109
- for time in self.df[time_parameter]
110
- ]
109
+ for time in self.parameters[time_parameter].data
110
+ ],
111
+ dtype=str,
111
112
  ),
112
113
  )
113
114
  return True
@@ -159,7 +160,7 @@ class CnvFile(DataFile):
159
160
  def array2cnv(self) -> list:
160
161
  result = []
161
162
  for row in self.parameters.full_data_array:
162
- formatted_row = "".join(f"{elem:11}" for elem in row)
163
+ formatted_row = "".join(elem.rjust(11) for elem in row)
163
164
  result.append(formatted_row + "\n")
164
165
  return result
165
166
 
@@ -216,23 +217,21 @@ class CnvFile(DataFile):
216
217
  self.data = self.array2cnv()
217
218
  self.file_data = [*self.header, *self.data]
218
219
 
219
- def add_processing_metadata(self, addition: str | list):
220
+ def add_processing_metadata(self, module: str, key: str, value: str):
220
221
  """
221
222
  Adds new processing lines to the list of processing module information
222
223
 
223
224
  Parameters
224
225
  ----------
225
- addition: str:
226
- the new information line
226
+ module: str :
227
+ the name of the processing module
228
+ key: str :
229
+ the description of the value
230
+ value: str :
231
+ the information
227
232
 
228
233
  """
229
- if isinstance(addition, str):
230
- addition = [addition]
231
- self.processing_steps.append(
232
- self.processing_steps.create_step_instance(
233
- module=addition[0].split("_")[0], raw_info=addition
234
- )
235
- )
234
+ self.processing_steps.add_info(module, key, value)
236
235
  self._update_header()
237
236
 
238
237
  def add_station_and_event_column(self) -> bool:
@@ -445,7 +445,7 @@ class CnvCollection(FileCollection):
445
445
  A list of ProcessingSteps.
446
446
  """
447
447
  individual_processing_steps = [
448
- file.processing_steps for file in self.data
448
+ file.processing_steps.modules for file in self.data
449
449
  ]
450
450
  for index, step_info in enumerate(individual_processing_steps):
451
451
  if step_info != individual_processing_steps[0]:
@@ -78,7 +78,7 @@ class Parameters(UserDict):
78
78
  for i in range(0, len(line) - n, n)
79
79
  ]
80
80
  )
81
- return np.array(row_list, dtype=float)
81
+ return np.array(row_list, dtype="str")
82
82
 
83
83
  def create_parameter_instances(
84
84
  self,
@@ -176,7 +176,7 @@ class Parameters(UserDict):
176
176
  for line in post
177
177
  }
178
178
 
179
- def add_parameter(self, parameter: Parameter):
179
+ def add_parameter(self, parameter: Parameter, position: str = ""):
180
180
  """
181
181
  Adds one parameter instance to the collection.
182
182
 
@@ -186,13 +186,36 @@ class Parameters(UserDict):
186
186
  The new parameter
187
187
 
188
188
  """
189
- self.data[parameter.name] = parameter
189
+ position_index = -1
190
+ # add to parameter dict at given
191
+ if position:
192
+ new_dict = {}
193
+ for index, (key, value) in enumerate(self.data.items()):
194
+ new_dict[key] = value
195
+ if key == position:
196
+ new_dict[parameter.name] = parameter
197
+ position_index = index + 1
198
+ self.data = new_dict
199
+
200
+ else:
201
+ self.data[parameter.name] = parameter
202
+
203
+ # update metadata dict
204
+ self.metadata = {
205
+ parameter.name: parameter.metadata
206
+ for parameter in self.data.values()
207
+ }
208
+ # add to full numpy data array
209
+ self.full_data_array = np.insert(
210
+ self.full_data_array, position_index, parameter.data, axis=1
211
+ )
190
212
 
191
213
  def create_parameter(
192
214
  self,
193
215
  data: np.ndarray | int | float | str,
194
216
  metadata: dict = {},
195
217
  name: str = "",
218
+ position: str = "",
196
219
  ) -> Parameter:
197
220
  """
198
221
  Creates a new parameter instance with the given data and metadata.
@@ -233,7 +256,7 @@ class Parameters(UserDict):
233
256
  shape=self.full_data_array.shape[0],
234
257
  )
235
258
  parameter = Parameter(data=data, metadata=metadata)
236
- self.add_parameter(parameter)
259
+ self.add_parameter(parameter, position)
237
260
  return parameter
238
261
 
239
262
  def add_default_metadata(
@@ -426,6 +449,7 @@ class Parameter:
426
449
  self.data = data
427
450
  self.metadata = metadata
428
451
  self.name = metadata["shortname"]
452
+ self.parse_to_float()
429
453
  self.update_span()
430
454
 
431
455
  def __str__(self) -> str:
@@ -457,6 +481,15 @@ class Parameter:
457
481
  except KeyError:
458
482
  return
459
483
 
484
+ def parse_to_float(self):
485
+ """
486
+ Tries to parse the data array type to float.
487
+ """
488
+ try:
489
+ self.data = self.data.astype("float64")
490
+ except ValueError:
491
+ pass
492
+
460
493
  def update_span(self):
461
494
  """
462
495
  Updates the data span.
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
  from collections import UserList
3
+ import copy
3
4
 
4
5
 
5
6
  class CnvProcessingSteps(UserList):
@@ -28,6 +29,7 @@ class CnvProcessingSteps(UserList):
28
29
  def _form_processing_info(self) -> list:
29
30
  out_list = []
30
31
  for module in self.data:
32
+ module = copy.deepcopy(module)
31
33
  if "vars" in module.metadata and module.name != "wildedit":
32
34
  module.metadata["date"] = (
33
35
  module.metadata["date"]
@@ -167,6 +169,39 @@ class CnvProcessingSteps(UserList):
167
169
  return self.data[index]
168
170
  return None
169
171
 
172
+ def add_info(
173
+ self,
174
+ module: str,
175
+ key: str,
176
+ value: str,
177
+ ) -> ProcessingStep | None:
178
+ """
179
+ Adds new processing lines to the list of processing module information
180
+
181
+ Parameters
182
+ ----------
183
+ module: str :
184
+ the name of the processing module
185
+ key: str :
186
+ the description of the value
187
+ value: str :
188
+ the information
189
+
190
+ Returns
191
+ -------
192
+ the altered ProcessingStep
193
+
194
+ """
195
+ if module in self.modules:
196
+ step_info = self.get_step(module)
197
+ if step_info:
198
+ step_info.metadata[key] = value
199
+ else:
200
+ step_info = ProcessingStep(name=module, metadata={key: value})
201
+ self.data.append(step_info)
202
+ self.modules.append(module)
203
+ return step_info
204
+
170
205
 
171
206
  class ProcessingStep:
172
207
  """