загрузить специфицированные c каналы из файла mdf (.mf4) - PullRequest
0 голосов
/ 17 января 2020

Я загружаю много больших .mf4 файлов, используя пакет asammdf . Эти файлы имеют много каналов, которые мне не интересны, и вход является узким местом моей программы. Итак, мой вопрос:

Могу ли я каким-либо образом загружать указанные c каналы из файла, чтобы ускорить процесс ввода?

Что я делаю сейчас, так это загружаю весь файл и задаю каналы при конвертации в pandas Dataframe.

from asammdf import MDF

if __name__ == '__main__':
    path = 'C:/path/to/some/file.mf4'
    mdfObj = MDF(path, version='4.10')
    columns=['A','B','C']
    df = mdfObj.to_dataframe(channels=columns)

1 Ответ

0 голосов
/ 17 января 2020

Вы уже используете правильные методы. Когда файл открыт, загружаются только метаданные, а фактические выборки канала читаются только по мере необходимости (когда вы вызываете to_dataframe ).

Узким местом может быть тот факт, что вы не укажите аргумент растр (см. документацию здесь https://asammdf.readthedocs.io/en/latest/api.html#asammdf .mdf.MDF.to_dataframe ), и в этом случае выходной кадр данных будет создан с использованием объединения всех временных меток выделенные каналы и делать интерполяцию для всех столбцов. Поиграйте с растровым аргументом

from asammdf import MDF

if __name__ == '__main__':
    path = 'C:/path/to/some/file.mf4'
    mdfObj = MDF(path, version='4.10')
    columns=['A','B','C']
    # 0.1s
    df = mdfObj.to_dataframe(channels=columns, raster=0.1)
    # or use the time stamps of channel 'A'
    df = mdfObj.to_dataframe(channels=columns, raster='A')  
...