Most construct data wiped when unary operator taken of field
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza reproduciendo el problema con cf.example_fields() y la negación unaria de un campo, comparando -f[0] con -1*f[0]. Sigue el punto de entrada del signo menos unario de Field y comprueba por qué se borran los datos del constructo de metadatos; la corrección estará completa cuando los constructos conserven sus datos y el caso cf-plot cfp.vect(u=c, v=-g) ya no genere AttributeError.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Here's a funky one for the end of the working week! When taking the additive inverse i.e. negative of a field, the additive inverse of the (field) data is correctly taken but it results, as an unintended side effect, in all of the data for the metadata constructs being wiped, somehow (no time to investigate until next week, and I won't speculate quite how this even happens!). Note that an operation of -f shows this bug but -1*f does not, which implies it is likely an issue with the setup/logic of the - operator on a field.
Quick examples:
>>> f = cf.example_fields()
>>> print(f[0].data) # all good
[[0.007, ..., 0.013]] 1
>>> print(-f[0].data) # all good
[[-0.007, ..., -0.013]] 1
>>> print(-f[0]) # not all good - see the dim coords
Field: specific_humidity (ncvar%q)
----------------------------------
Data : specific_humidity(latitude(5), longitude(8)) 1
Cell methods : area: mean
Dimension coords: latitude(5) =
: longitude(8) =
: time(1) =
>>> print(-1*f[0]) # also all good
Field: specific_humidity (ncvar%q)
----------------------------------
Data : specific_humidity(latitude(5), longitude(8)) 1
Cell methods : area: mean
Dimension coords: latitude(5) = [-75.0, ..., 75.0] degrees_north
: longitude(8) = [22.5, ..., 337.5] degrees_east
: time(1) = [2019-01-01 00:00:00]
>>>
>>> print(-f[1]) # note from this result that other constructs are affected too
Field: air_temperature (ncvar%ta)
---------------------------------
Data : air_temperature(atmosphere_hybrid_height_coordinate(1), grid_latitude(10), grid_longitude(9)) K
Cell methods : grid_latitude(10): grid_longitude(9): mean where land (interval: 0.1 degrees) time(1): maximum
Field ancils : air_temperature standard_error
Dimension coords: atmosphere_hybrid_height_coordinate(1) =
: grid_latitude(10) =
: grid_longitude(9) =
: time(1) =
Auxiliary coords: latitude
: longitude
: long_name=Grid latitude name
Cell measures : measure:area
Coord references: grid_mapping_name:rotated_latitude_longitude
: standard_name:atmosphere_hybrid_height_coordinate
Domain ancils : atmosphere_hybrid_height_coordinate
: ncvar%b
: surface_altitude
I noticed this during working through issues in the cf-plot basic test suite, whereby a call to cfp.vect(u=c, v=-g) was failing with the error AttributeError: DimensionCoordinate has no data due to the underlying issue whereby the - operation is taken for the field input as the v argument. Which indicates it is more than a representational issue (i.e. the data is missing from the printed output), but I am yet to explore further.
Environment
Using the main branch:
>>> cf.environment()
Platform: Linux-6.5.13-7-MANJARO-x86_64-with-glibc2.39
HDF5 library: 1.14.2
netcdf library: 4.9.2
udunits2 library: /home/slb93/miniconda3/envs/cf-env-312/lib/libudunits2.so.0
esmpy/ESMF: 8.4.2 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/esmpy/__init__.py
Python: 3.12.0 /home/slb93/miniconda3/envs/cf-env-312/bin/python
dask: 2024.7.0 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/dask/__init__.py
netCDF4: 1.6.5 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/netCDF4/__init__.py
psutil: 5.9.5 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/psutil/__init__.py
packaging: 23.2 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/packaging/__init__.py
numpy: 1.26.4 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/numpy/__init__.py
scipy: 1.11.3 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/scipy/__init__.py
matplotlib: 3.8.0 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/matplotlib/__init__.py
cftime: 1.6.2 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/cftime/__init__.py
cfunits: 3.3.7 /home/slb93/miniconda3/envs/cf-env-312/lib/python3.12/site-packages/cfunits/__init__.py
cfplot: 3.3.0 /home/slb93/git-repos/cf-plot/cfplot/__init__.py
cfdm: 1.11.1.0 /home/slb93/git-repos/cfdm/cfdm/__init__.py
cf: 3.16.2 /home/slb93/git-repos/cf-python/cf/__init__.py
- Lenguaje dominante
- Python
- Estrellas
- 151
- Forks
- 23
- Merge medio
- 21 h 29 min
- PR fusionados (30 d)
- 1
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de NCAS-CMS/cf-python
-
code tidy
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Attempt at unsupported conservative 3D mesh regriddingPosiblemente ocupada @sadielbartholomew la tomó hace 22 días. Abiertobug?
-
Release: migrate from deprecated build commandPosiblemente ocupada @sadielbartholomew la tomó hace 24 días. Abiertorelease
-
Remove support for Python 3.10 (EOL)Posiblemente ocupada @sadielbartholomew la tomó hace 24 días. Abiertoenhancement
-
error from netCDF in cf.writeAbiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Todos los issues de NCAS-CMS/cf-python
Issues similares
-
adr
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
kristofdegrave/homeassistant-smart-charging#1607 ·
Los mantenedores suelen responder en 1 día
-
namespace operations
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
EclipseFdn/open-vsx.org#13665 ·
Los mantenedores suelen responder en 1 día
-
doc good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
collective/icalendar#1865 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
canonical/opentelemetry-collector-operator#409 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
mozilla/addons-release-tests#1243 ·
Los mantenedores suelen responder en 1 día