открытие только части больших файлов TDMS в python, как это делает Labview - PullRequest
1 голос
/ 11 февраля 2020

У меня есть большие (> 20 ГБ, больше, чем RAM) файлы .tdms, созданные в Labview для открытия в python3. Я могу использовать nptdms с параметром memamp_dir, чтобы оставить ОЗУ без изменений. Но это записывает другой большой файл на диск, что иногда является проблемой, и это медленно.

Labview имеет возможность читать только часть файла, довольно быстро. Возможно ли это в python с nptdms или другим?

(Кажется, здесь обсуждается , но я не могу найти простое решение. Также, nptdms.tdms_segment.py может быть частью решения, но мне сложно понять, как оно работает)

1 Ответ

1 голос
/ 17 февраля 2020

Должно быть возможно с iqtools библиотекой. Я регулярно использую его для перехода к определенной позиции очень больших файлов (проверено около 5 ГБ), используя seek, и читаю только часть, а не весь файл. Как правило, вы должны рассмотреть файл TDMS, содержащий огромную строку точек данных с небольшим количеством сложного формата данных внутри, длина кадров , количество кадров в основном числа для вашего анализа. «Прыжок» выполняется с использованием аргумента начальный кадр .

from iqtools import *
filename ='blah.tdms'
myiq=TDMSData(filename)
myiq.read(nframes=100, lframes=1024, sframes=400)

Это означает чтение 100 кадров каждые 1024 выборки длиной, начиная с выборки 400.

Для очень маленьких файлов есть еще одна функция read_complete_file. В библиотеке есть много других инструментов для спектрального анализа, таких как 1D и 2D спектрограммы, мульти-конус et c. В репозитории есть несколько примеров.

Кстати. Библиотека iqtools имеет также GUI интерфейс, называемый IQ GUI, который, хотя и не так универсален, как интерфейс библиотеки, может использоваться для "обхода" через файл времени с помощью визуального слайдера.

может быть, это может помочь.

...