Как читать общий формат данных (CDF) в Python
Мне нужно прочитать файл CDF с использованием python. Я нашел библиотеки, но я не понимал, как их использовать. Например при этом (pythong lib), мне нужно скачать CDF lib, я не знаю, где скачать. Существует страница загрузки для CDF, но это кажется неуместным с этой библиотекой.
3 ответов
на ответ by @miraculixx правильно, но предполагается, что вы уже установили библиотека CDF c.
вот простое руководство, если вы даже не знали, какой формат файла CDF был до того, как вы нашли этот вопрос на SO.
1. Скачать последнюю версию библиотеки CDF C:
вы можете найти последнюю стабильную версию по этой ссылке. Захватить исходный код используя wget
, и извлечь его. Примечание: следующее создаст каталог в текущей папке ./
если вы хотите загрузить код по другому пути, убедитесь, что вы изменили код ниже.
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. Установите все зависимости:
SpacePy и библиотека CDF имеют несколько зависимостей (как указал @Michal Dyzma). Вы можете установить их с помощью стадион conda или Пип и apt.
pip install numpy scipy h5py matplotlib networkx
apt install build-essential gfortran libncurses5-dev
3. Скомпилируйте библиотеку C:
вы должны были загружены в README.install
файл, который содержит гораздо больше деталей на этом шаге, чем я предоставлю. Два цента - это то, что вы хотите проверить, какие переменные компиляции необходимы/необязательны для вашей системы и потребностей.
make all.help
я буду создавать дистрибутив для Linux с помощью компилятора GNU C. Меня не интересует Интерфейс FORTRAN и моя операционная система поддерживают общие библиотеки. Я хочу установить программы инструментария на основе проклятий, которые позволяют использовать интерактивные инструменты CDF на основе командной строки (Вот почему мы установили libncurses5-dev
зависимость на Шаге 2). В результате это последняя команда make:
make OS=linux ENV=gnu CURSES=yes FORTRAN=no UCOPTIONS=-O2 SHARED=yes -j4 all
make install #no sudo
установка должна выполняться плавно и добавлять все файлы в ./bin
, ./include
и ./lib
суб-каталоги.
4. Настройка среды переменные:
должен быть файл в ./bin
под названием definitions.B
что делает это автоматически для вас, сделайте его исполняемым с chmod+x
и добавьте следующую строку в свой ~/.bashrc
(Примечание: 1) я предполагаю, что вы установили библиотеку по пути $HOME/Libraries/
; 2) после .
):
. $HOME/Libraries/cdf/cdf36_3-dist/bin/definitions.B
ВАЖНОЕ ПРИМЕЧАНИЕ:
Файл выше имеет ошибку в линия 68, вместо добавления к окружающей среде переменная LD_LIBRARY_PATH
он перезаписывает его. Исправить это легко, заменить линия 68 следующим образом:
export LD_LIBRARY_PATH=$HOME/Libraries/cdf/cdf36_3-dist/lib:$LD_LIBRARY_PATH
если по какой-то причине definitions.B
нет, просто добавьте следующую строку:
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. Вы все готовы, идите и делайте добро:
предполагая, что вы установили spacepy
С pip следующее должно работать:
from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)
Если у вас есть инструмент пакета Python,Пип установлено, вы можете получить библиотеку cdf spacepy следующим образом:
$ pip install git+https://github.com/spacepy/spacepy.git
обратите внимание, что это установит много зависимостей, включая numpy и scipy. Это может быть немного трудно установить с нуля. Возможно, вы захотите сначала установить готовый пакет, например анаконда. Как только это будет сделано, просто используйте вышеуказанную команду, и spacepy должен установить как ветер.
после установки spacepy был успешным, согласно этому пример он должен работать примерно так:
from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)
некоторое время назад у меня была такая же проблема. Я полагаю, вы работаете с Windows...
согласно документации Spacepy вам нужно несколько зависимостей для использования модуля cdf.
первый из всего этого SpacePy официально поддерживает только 32-битную версию python, поэтому у вас должен быть python в 323bit.
второй, для этого требуется библиотека CDF NASA, установленная в вашей системе (также 32-разрядная версия). Вы можете схватить его от здесь.
третий продолжить с зависимостями Spacepy:
- включает в себя
- scipy
- библиотек matplotlib
- h5py
- networkx
- ffnet
большинство из них являются частью пакета Anaconda. Если они не являются, и вы должны установить их просто pip install <package name>
.
Если у вас есть проблемы с компиляцией из источников, я советую пойти к Кристофу Голке веб-сайт и захватить предварительно построенные двоичные файлы для Windows, соответствующие вашей версии python. http://www.lfd.uci.edu / ~gohlke / pythonlibs/
Это должно заставить вас работать с модулем Spacepy CDF.
вы также можете попробовать другой подход. Скачайте CDF-to-netCDF converter со страницы NASA и запустите его в файле CDF.
Python имеет хороший модуль netCDF, который может быть установлен из GitHub или Python repo. В этом случае вам также нужно несколько зависимостей, таких как HDF5, netCDF-4, numpy, cython.
Как только у вас есть файл netCDF, вы можете получить к нему доступ с помощью модуля netCDF или scipy.io
модуль.