Skip to content

Commit 2024cdb

Browse files
committed
Add method to remove field from obs
1 parent 7e6017a commit 2024cdb

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

src/py_eddy_tracker/observations/observation.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,29 @@ def obs_dimension(cls, handler):
383383
if candidate in handler.dimensions.keys():
384384
return candidate
385385

386+
def remove_fields(self, *fields):
387+
"""
388+
Copy with fields listed remove
389+
"""
390+
nb_obs = self.obs.shape[0]
391+
fields = set(fields)
392+
only_variables = set(self.obs.dtype.names) - fields
393+
track_extra_variables = set(self.track_extra_variables) - fields
394+
array_variables = set(self.array_variables) - fields
395+
new = self.__class__(
396+
size=nb_obs,
397+
track_extra_variables=track_extra_variables,
398+
track_array_variables=self.track_array_variables,
399+
array_variables=array_variables,
400+
only_variables=only_variables,
401+
raw_data=self.raw_data,
402+
)
403+
new.sign_type = self.sign_type
404+
for name in new.obs.dtype.names:
405+
logger.debug("Copy of field %s ...", name)
406+
new.obs[name] = self.obs[name]
407+
return new
408+
386409
def add_fields(self, fields=list(), array_fields=list()):
387410
"""
388411
Add a new field.
@@ -401,10 +424,9 @@ def add_fields(self, fields=list(), array_fields=list()):
401424
raw_data=self.raw_data,
402425
)
403426
new.sign_type = self.sign_type
404-
for field in self.obs.dtype.descr:
405-
logger.debug("Copy of field %s ...", field)
406-
var = field[0]
407-
new.obs[var] = self.obs[var]
427+
for name in self.obs.dtype.names:
428+
logger.debug("Copy of field %s ...", name)
429+
new.obs[name] = self.obs[name]
408430
return new
409431

410432
def add_rotation_type(self):

0 commit comments

Comments
 (0)