LINUX.ORG.RU

Надо отреверсить софт, который создаёт эти файлы. Внутри может быть всё, что угодно. Пальцем в небо: там данные по 8 каналам, каждый канал - 12 битов. А как эти биты упакованы, это уже хз. В том числе может быть и какое-нибудь сжатие, причём с немаленькой вероятностью, т.к. сигнал ЭКГ сжимается очень хорошо.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

а вот этот код поможет решить проблему?

import pandas as pd
import numpy as np
import wfdb
import ast

def load_raw_data(df, sampling_rate, path):
    if sampling_rate == 100:
        data = [wfdb.rdsamp(path+f) for f in df.filename_lr]
    else:
        data = [wfdb.rdsamp(path+f) for f in df.filename_hr]
    data = np.array([signal for signal, meta in data])
    return data

path = 'path/to/ptbxl/'
sampling_rate=100

# load and convert annotation data
Y = pd.read_csv(path+'ptbxl_database.csv', index_col='ecg_id')
Y.scp_codes = Y.scp_codes.apply(lambda x: ast.literal_eval(x))

# Load raw signal data
X = load_raw_data(Y, sampling_rate, path)

# Load scp_statements.csv for diagnostic aggregation
agg_df = pd.read_csv(path+'scp_statements.csv', index_col=0)
agg_df = agg_df[agg_df.diagnostic == 1]

def aggregate_diagnostic(y_dic):
    tmp = []
    for key in y_dic.keys():
        if key in agg_df.index:
            tmp.append(agg_df.loc[key].diagnostic_class)
    return list(set(tmp))

# Apply diagnostic superclass
Y['diagnostic_superclass'] = Y.scp_codes.apply(aggregate_diagnostic)

# Split data into train and test
test_fold = 10
# Train
X_train = X[np.where(Y.strat_fold != test_fold)]
y_train = Y[(Y.strat_fold != test_fold)].diagnostic_superclass
# Test
X_test = X[np.where(Y.strat_fold == test_fold)]
y_test = Y[Y.strat_fold == test_fold].diagnostic_superclass

https://physionet.org/content/ptb-xl/1.0.1/ - сайт откуда это в3ято

bad_master
() автор топика
Ответ на: комментарий от bad_master

Вот и разберись. Ты всерьёз надеешься, что найдётся дурак, который за тебя это сделает?

Ты подожди, конечно, вдруг кто-нибудь уже сталкивался и даст ссылку ина готовое решение, но если не, то в job.

WitcherGeralt ★★
()
Ответ на: комментарий от bad_master

Ну судя по коду вызывается функция wfdb.rdsamp, исходники её доступны по ссылке, кури.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.