def initData():
    initialization = InitDataSet()
    doas = initialization.get_dataset_as_doas()
    encoding = Encoding('./../../data_to_be_saved/alphabet_3.txt')
    # SAU 1 SAU 2
    #  1 th
    mark_bursts_regions_one_threshold(doas)

    # diff th
    # mark_bursts_regions(doas)

    # remove_bursted_trials_when_segment(doas)


    # doas_train, doas_test, ind_test = train_test_doa(doas, 0.2)
    # sa imi fac propriul test and train
    doas_train, doas_test, ind_test = train_test_doa_check_trials(doas, 0.2)

    train_data = ExtractData(doas_train, [channel], ['light', 'medium', 'deep'], [segment], ['all'])
    test_data = ExtractData(doas_test, [channel], ['light', 'medium', 'deep'], [segment], ['all'])

    # doar fft features
    X_train, y_train = obtain_TESPAR_A_FFT_features(train_data)
    x_test, y_test = obtain_TESPAR_A_FFT_features(test_data)

    return X_train, y_train, x_test, y_test
Exemple #2
0
from utils.DataSpliting import train_test_doa, obtain_features_labels

# data frame that keeps avr and std of the runs
columns = ['ch train', 'ch test', 'segment', 'acc avr', 'acc std_dev', 'f1-sc avr', 'f1-sc std_dev']
df_results = DataFrame(columns=columns)
# df_results.to_csv(csv_results, mode='a', header=True)

train_channels = [4, 6, 12, 2, 14]  # good over all
test_channels = [21, 20, 29, 16, 19]  # bad over all

segment = 'spontaneous'

# how many models to train a for a channel-segment pair
run_nr = 10

initialization = InitDataSet()
doas = initialization.get_dataset_as_doas()
encoding = Encoding('./../../data_to_be_saved/alphabet_1_150hz.txt')

# ############################## train on good channel, test on good chnannel ###############################3
# accuracies = [[[] for i in range(len(train_channels))] for j in range(len(train_channels))]
# f1scores = [[[] for i in range(len(train_channels))] for j in range(len(train_channels))]
#
# for run in range(run_nr):
#     # firstly split the input into train test
#     doas_train, doas_test, ind_test = train_test_doa(doas, 0.2)
#
#     for ind_train, ch_train in enumerate(train_channels):
#         for ind_test, ch_test in enumerate(train_channels):
#             print("start running for channel " + str(ch_train) + ' and ' + str(ch_test) + ' ' + segment + '\n')
#
                        for ind_tuple in range(len(outside_in) - 1):
                            # get the beginning and ending of the inter bursts zone
                            index_start = outside_out[ind_tuple][0]
                            index_end = outside_in[ind_tuple + 1][0]
                            dist_within = index_end - index_start

                            distances.append(dist_within)

    quantile = np.quantile(distances, q=q)

    print(f'quantile={quantile} for q = {q}')

    return quantile


initialization = InitDataSet(levels=['deep', 'medium', 'light'])
doas = initialization.get_dataset_as_doas()

# print('start marking interbursts')
# mark_burst_basic_one_threshold(doas, threshold=19.94)
# print('see inter bursts distances')
# see_procents_distances(doas)
#
# '''
#     output of the script: quantile=364.0 for q = 0.95
#
# '''

mark_burst_basic(doas, thresholds={'deep': 19.74, 'medium': 24.97, 'light': 32.00})
see_procents_distances(doas)
import os

from feature_extraction.TESPAR.Encoding import Encoding
from input_reader.InitDataSet import InitDataSet
from utils.mark_bursts.MarkOutsiderWithBurstFlags_SeparateThresholds import mark_bursts_regions
from utils.mark_bursts.MarkOutsidersWithBurstsFlags import remove_bursted_trials_when_segment
from vizualization.TESPAR.PlotTESPARMatrices import get_channel_matrix_A, get_channel_trial_matrix_A

data_dir = os.path.join('..', '..')
initialization = InitDataSet(current_directory=data_dir,
                             subject_directory='m014',
                             filtering_directory='classic',
                             levels=['deep2', 'medium3', 'light4'])
doas = initialization.get_dataset_as_doas()

# mark_bursts_regions(doas)

# remove_bursted_trials_when_segment(doas)

encoding = Encoding('./../../data_to_be_saved/alphabet_3.txt')

# good_channels = [2, 3, 4]
# deep_trials = [5, 6, 11, 14]
# medium_trials = [5, 6, 14]
# light_trials = [8, 11, 14]
# for i in range(len(good_channels)):
#     for j in range(len(light_trials)):
#         get_channel_trial_matrix_A(encoding, doas, 'light', good_channels[i], light_trials[j], log=False)

get_channel_trial_matrix_A(encoding, doas, 'deep2', 2, 14, log=False)
Exemple #5
0
run_nr = 10

channels_range = 7
# all_channels = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30,
#                 31, 32]
all_channels = [6, 7, 15, 20, 26, 27]

segments = ['spontaneous', 'stimulus', 'poststimulus']

# data frame that keeps all runs for all channels, that will be added to .csv file
column_names = ['channel', 'segment', 'accuracy', 'f1-score']
df_all = DataFrame(columns=column_names)
df_all.to_csv(csv_file, mode='a', header=True)

# initialization = InitDataSet()
initialization = InitDataSet(trials_to_skip=[1, 2])
doas = initialization.get_dataset_as_doas()
# mark_outsiders(doas, max_interbursts_dist=500)
# encoding = Encoding('./../../data_to_be_saved/alphabet_3.txt')
encoding = Encoding('./../../data_to_be_saved/alphabet_5.txt')
'''
for calculating the average acc or af1-score
we need
dictionary to keep array of 30 values for 3 segments for 30 channels
'''
accuracies = [[[] for i in range(channels_range - 1)]
              for j in range(len(segments))]
f1scores = [[[] for i in range(channels_range - 1)]
            for j in range(len(segments))]

for run in range(run_nr):
channel = 1
segment = 'spontaneous'

encoding = Encoding('./../../data_to_be_saved/alphabet_3.txt')

print('SVM 0.2 seg=' + str(segment) + ' ch=' + str(segment))

for ind_interval, interval in enumerate(intervals):

    print('interval= ' + str(interval))

    accuracies = []
    f1scores = []

    initialization = InitDataSet(trials_to_skip=interval)
    doas = initialization.get_dataset_as_doas()

    for run in range(run_nr):
        # firstly split the input into train test
        doas_train, doas_test, ind_test = train_test_doa(doas, 0.2)
        print('lengths: train deep {}, light {}'.format(
            len(doas_train[0].channels[0].trials),
            len(doas_train[1].channels[0].trials)))
        print('lengths: test deep {}, light {}'.format(
            len(doas_test[0].channels[0].trials),
            len(doas_test[1].channels[0].trials)))
        #
        print("run: {}".format(run))

        train_data = SplitData(doas_train, [channel], ['light', 'deep'],