В настоящее время я пытаюсь изменить общий рабочий процесс моей лаборатории и сталкиваюсь с концептуальным препятствием, которое во многом связано с моим общим отсутствием знаний в этой области. В настоящее время наши данные организованы в типичной структуре файловой системы следующим образом:
Дата\Ячейка #\Развертка #
где на определенную дату обычно существует несколько папок ячеек, а в этих папках ячеек есть несколько файлов развертки (это относительно простые файлы .csv, в которых параметры записи сохраняются отдельно в файлах .xml). Таким образом, в любой папке Date может быть от нескольких десятков до нескольких сотен файлов для записей за этот день, организованных в нескольких подкаталогах Cell.
Наш рабочий процесс обычно включает в себя открытие нескольких файлов развертки в папке Cell, их усреднение, а затем усреднение файлов с точками данных из других папок Cell, часто в течение нескольких дней.
Это относительно просто сделать с Pandas и Numpy, хотя при удаленном доступе к папкам, сохраненным на лабораторном сервере, возникает определенное «ручное» ощущение. Мы также иногда сталкиваемся с проблемами, потому что нам часто приходится извлекать данные из многих из этих файлов одновременно. Хотя обычно это не проблема, размер файлов может варьироваться от нескольких МБ до 1000 МБ. В последнем случае мы должны предпринять шаги, чтобы не загружать весь файл в память (или, по крайней мере, не загружать несколько файлов одновременно), чтобы избежать проблем с памятью.
В рамках этого редизайна я читал о Pytables для организации данных и для доступа к наборам данных, которые могут быть слишком большими для хранения в памяти. Итак, я думаю, что мои 2 основных вопроса:
- Если проблемы с нехваткой памяти несущественны (т. е. эта утилита не будет использоваться часто), есть ли какие-либо существенные преимущества в использовании чего-то вроде Pytables для организации данных по сравнению с простым обслуживанием файловой системы на сервере (или локально). ?
- Есть ли причина НЕ идти по маршруту базы данных Pytables? Мы перепроектируем наш сбор данных, а также наше хранилище, и один из вариантов — собирать данные непосредственно в фреймы данных Pandas и сохранять файлы в формате HDF5. В настоящее время я взвешиваю затраты и выгоды от этого по сравнению с текущей системой, когда данные хранятся в файлах csv, а затем загружаются в Pandas для последующего анализа.
Я думаю, что, создав базу данных по сравнению с файловой системой, которая у нас есть, мы можем 1. иметь возможность уменьшить (в любом случае) размер файла на диске за счет сжатия, которое предлагает hdf5, и 2. доступ к данным может в целом стать проще из-за возможности делать запросы по разным параметрам. Но меня беспокоит то, что в конечном итоге, поскольку мы обычно просто открываем весь файл, мы не будем использовать его для функциональности так много - что мы в основном будем выполнять те же шаги, которые нам нужно было бы выполнить. чтобы открыть файл (или серию файлов) в файловой системе. Это заставляет меня задаться вопросом, стоят ли предварительные усилия, которые потребуются для этого, с точки зрения нашего общего рабочего процесса.