Saltar al contenido

Cómo leer formato de datos comunes (CDF) en Python

Presta atención ya que en esta división vas a encontrar la respuesta que buscas.Esta sección fue evaluado por nuestros especialistas para garantizar la calidad y exactitud de nuestro post.

Solución:

La respuesta de @miraculixx es correcta, pero se supone que ya instaló la biblioteca CDF C.

Aquí hay una guía fácil de seguir si ni siquiera sabía cuál era el formato de archivo CDF antes de encontrar esta pregunta en SO.

1. Descargue la última versión de la biblioteca CDF C:

Puede encontrar la última versión estable en este enlace. Toma el código fuente usando wgety extráigalo. Nota: lo siguiente creará un directorio en la carpeta actual ./ si desea descargar el código en una ruta diferente, asegúrese de cambiar el código a continuación.

wget -r -l1 -np -nd -nc http://cdaweb.gsfc.nasa.gov/pub/software/cdf/dist/latest-release/linux/ -A cdf*-dist-all.tar.gz
tar xf cdf*-dist-all.tar.gz -C ./
cd cdf*dist

2. Instala todas las dependencias:

SpacePy y la biblioteca CDF tienen varias dependencias (como lo señaló @Michal Dyzma). Puede instalarlos todos usando conda o pip, y apt.

pip install numpy scipy h5py matplotlib networkx
apt install build-essential gfortran libncurses5-dev

3. Compile la biblioteca C:

Deberías haber descargado un README.install que contiene muchos más detalles sobre este paso de los que proporcionaré. Los dos centavos son que desea verificar qué variables de compilación son requeridas / opcionales para su sistema y necesidades.

make all.help

Construiré la distribución para Linux usando el compilador GNU C. No estoy interesado en la interfaz FORTRAN y mi sistema operativo admite bibliotecas compartibles. Quiero instalar los programas del kit de herramientas basado en Curses que permiten usar las herramientas CDF interactivas basadas en la línea de comandos (es por eso que instalamos libncurses5-dev dependencia en el paso 2). Como resultado, este es el comando make final:

make OS=linux ENV=gnu CURSES=yes FORTRAN=no UCOPTIONS=-O2 SHARED=yes -j4 all
make install #no sudo

La instalación debe funcionar sin problemas y agregar todos los archivos en el ./bin, ./includey ./lib subdirectorios.

4. Configure las variables de entorno:

Debe haber un archivo en ./bin llamado definitions.B que hace esto automáticamente por usted, hágalo ejecutable con chmod+x y agregue la siguiente línea a su ~/.bashrc (Nota: 1) Supongo que instaló la biblioteca en la ruta $HOME/Libraries/; 2) Hay un espacio después del .):

. $HOME/Libraries/cdf/cdf36_3-dist/bin/definitions.B

NOTA IMPORTANTE:
El archivo de arriba tiene un error en linea 68en lugar de agregar a la variable de entorno LD_LIBRARY_PATH lo sobrescribe. La solución es fácil, reemplace linea 68 con lo siguiente:

export LD_LIBRARY_PATH=$HOME/Libraries/cdf/cdf36_3-dist/lib:$LD_LIBRARY_PATH

Si por alguna razón definitions.B no está allí, simplemente agregue lo siguiente:

export CDF_BASE=$HOME/Libraries/cdf/cdf36_3-dist
export CDF_INC=$CDF_BASE/include
export CDF_LIB=$CDF_BASE/lib
export CDF_BIN=$CDF_BASE/bin
export LD_LIBRARY_PATH=$CDF_BASE/lib:$LD_LIBRARY_PATH

5. Ya está todo listo, ve y haz el bien:

Suponiendo que instaló spacepy con pip lo siguiente debería funcionar fuera de la caja:

from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)

Si tiene instalada la herramienta de paquete de Python, pip, puede obtener la biblioteca spacepy cdf de la siguiente manera:

$ pip install git+https://github.com/spacepy/spacepy.git

Tenga en cuenta que esto instalará muchas dependencias, incluidas numpy y scipy. Estos pueden ser un poco difíciles de instalar desde cero. Es posible que desee instalar primero un paquete ya preparado, por ejemplo, anaconda. Una vez hecho esto, solo use el comando anterior y spacepy debería instalarse como una brisa.

Una vez que la instalación de spacepy fue exitosa, de acuerdo con este ejemplo, debería funcionar de la siguiente manera:

from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)

Hace un tiempo tuve el mismo problema. Supongo que trabajas en Windows…

De acuerdo con la documentación de Spacepy, necesita varias dependencias para usar su módulo cdf.

Primero de todo, SpacePy admite oficialmente solo la versión de Python de 32 bits, por lo tanto, debe tener Python en 323 bits.

Segundo, requiere la biblioteca NASA CDF instalada en su sistema (también versión de 32 bits). Puedes agarrarlo desde aquí.

Tercera proceder con las dependencias de Spacepy:

  • entumecido
  • espía
  • matplotlib
  • h5py
  • redx
  • ffnet

La mayoría de ellos son parte del paquete Anaconda. Si no lo son y hay que instalarlos simplemente pip install .

Si tiene problemas con la compilación de las fuentes, le aconsejo que vaya al sitio web de Christoph Gohlke y obtenga archivos binarios preconstruidos para Windows que coincidan con su versión de Python. http://www.lfd.uci.edu/~gohlke/pythonlibs/

Esto debería ponerte en marcha con el módulo Spacepy CDF.

También puede intentar otro enfoque. Descargue el convertidor de CDF a netCDF de la página de la NASA y ejecútelo en su archivo CDF.

Python tiene un buen módulo netCDF, que se puede instalar desde GitHub o python repo. En este caso, también necesita varias dependencias como HDF5, netCDF-4, numpy, cython.

Una vez que tenga el archivo netCDF, puede acceder a él con el módulo netCDF o scipy.io módulo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *