Страница 1 из 1

Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 11 ноя 2017, 12:12
nickleb
Здравствуйте. Какой R-package проявляет себя как самый быстрый для чтения NetCDF-файлов? Пользовался library("ncdf4") (читал в цикле все variables из нескольких тысяч уже скачанных из сети NetCDF-файлов и писал их в tibble) - и очень что-то медленно... У кого есть опыт ? Подскажите, пожалуйста.

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 11 ноя 2017, 17:40
rhot
Не знаю других пакетов, кроме ncdf4 и RNetCDF.

Может быть эта информация поможет https://stackoverflow.com/questions/199 ... rom-netcdf

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 11 ноя 2017, 22:30
nickleb
rhot писал(а):
11 ноя 2017, 17:40
Может быть эта информация поможет https://stackoverflow.com/questions/199 ... rom-netcdf
rhot, Спасибо!

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 12 ноя 2017, 09:39
gamm
nickleb писал(а):
11 ноя 2017, 12:12
читал в цикле все variables
если вы в цикле читали по одной переменной, то это проблема - нужно найти что-то, что читает и парсит весь файл сразу, во что-то типа списка. И вторая проблема - R много времени тратит на создание внутренних структур (таблиц и т.д.).

Есть подозрение, что они вам не нужны (и даже вредны), и хватит нормальных матриц, которые можно быстро читать и писать бинарными операциями (я так читаю и пишу сетки SURFER 6 версии, с 7 мороки много). Т.е. если есть двоичное чтение из NetCDF, то лучше прямо его и использовать.

Или написать небольшую утилитку на С++/Питоне, которая будет разваливать NetCDF в набор двоичных файлов с созданием списка (что куда записалось), а потом читать бинарным способом в матрицы R, используя этот список.

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 12 ноя 2017, 11:15
nickleb
gamm писал(а):
12 ноя 2017, 09:39
если вы в цикле читали по одной переменной, то это проблема - нужно найти что-то, что читает и парсит весь файл сразу, во что-то типа списка. И вторая проблема - R много времени тратит на создание внутренних структур (таблиц и т.д.).

Есть подозрение, что они вам не нужны (и даже вредны), и хватит нормальных матриц, которые можно быстро читать и писать бинарными операциями (я так читаю и пишу сетки SURFER 6 версии, с 7 мороки много). Т.е. если есть двоичное чтение из NetCDF, то лучше прямо его и использовать.

Или написать небольшую утилитку на С++/Питоне, которая будет разваливать NetCDF в набор двоичных файлов с созданием списка (что куда записалось), а потом читать бинарным способом в матрицы R, используя этот список.
Уважаемый gamm, спасибо за дельные советы. netcdf эти с различным набором переменных, поэтому читаю все сначала с их атрибутами (name, missvalue, ...) и размером... да и значения списком сразу... пишу в tibble - этакие "улучшенные" data.frame's... одна строка tibble - это у меня столбцы информации о каждой переменной (и список её значений) одного netcdf... м.б., по Вашему совету и уже по своему желанию проверить попробую в матрицы писать (м.б., действительно, критично время add_row для tibble?), а затем уже их merge'ить/bind'ить... так-то работает у меня и в написанном варианте с tibble'ами, но медленно.... хотя, если на "парцайки" поделить 8-час. работы notebook'а, - то, на каждую ночь заряжая, за недели четыре можно и сделать...

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 12 ноя 2017, 11:24
nickleb
gamm писал(а):
12 ноя 2017, 09:39
...что читает и парсит весь файл сразу...
да-да, верно... списками - даже без as.vector(unlist(...)) и без структуризации в tibble's попробовать на первом этапе "чисто-чтива" netcdf'ов... спасибо, gamm!

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 12 ноя 2017, 13:20
gamm
я бы для начала попробовал создать матрицу double, и писал туда. Если размер неизвестен, то можно (по мере заполнения) пересоздавать с увеличением размера, и перезаписывать начальную часть. Мы измеряли, всякие перестройки типа добавления строк и вставки в середину списка - страшно тормозные. Нужны эксперименты :mrgreen:

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 12 ноя 2017, 13:26
nickleb
gamm писал(а):
12 ноя 2017, 13:20
я бы для начала попробовал создать матрицу double, и писал туда. Если размер неизвестен, то можно (по мере заполнения) пересоздавать с увеличением размера, и перезаписывать начальную часть. Мы измеряли, всякие перестройки типа добавления строк и вставки в середину списка - страшно тормозные. Нужны эксперименты
принял к сведению Ваш опыт и рекомендации! поэкспериментирую!

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 13 ноя 2017, 06:32
nplatonov
мой опыт, правда это было достаточно давно, когда tibble еще не так не назывались - для создания этой таблицы уходило больше времени, чем на создание data.frame

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 13 ноя 2017, 07:20
nickleb
nplatonov писал(а):
13 ноя 2017, 06:32
мой опыт, правда это было достаточно давно, когда tibble еще не так не назывались - для создания этой таблицы уходило больше времени, чем на создание data.frame
интересно... спасибо!

Re: Какой R-package самый быстрый для чтения NetCDF-файлов?

Добавлено: 20 ноя 2017, 10:17
nickleb
... а с library("pbdNCDF4") кто-нибудь работал? если "да", - то как этот package по скорости чтения в сравнении с упомянутыми выше ncdf4 и RNetCDF ?