Ejemplo n.º 1
0
    def prepareData(self, data):
        # prepare the data for classification

        aux = preprocessing.norm9(data, R=200, sigma=1.5)

        out = {
            'segments': data,
            '3-medianWaves-norm': misc.median_waves(aux, 3),
            '3-medianWaves': misc.median_waves(data, 3),
            '5-medianWaves': misc.median_waves(data, 5),
        }

        return out
Ejemplo n.º 2
0
    def prepareData(self, data):
        # prepare the data for classification

        # normalize
        data = preprocessing.norm9(data, R=200, sigma=1.5)

        out = {'5-medianWaves': misc.median_waves(data, 5)}

        return out
Ejemplo n.º 3
0
def get_data(info, data_type, label):

    #sampling_rate = info['filter_paramenters']['sampling_rate'] ##

    out = {}
    for run in info['%s_patterns' % label]:
        out[run] = {}
        for name in info['%s_patterns' % label][run]:
            # get data corresponding to info['label_patterns']
            recid = info['%s_patterns' % label][run][name][1]
            good_idxs = []
            map(lambda i: good_idxs.append(int(i)),
                info['%s_patterns' % label][run][name][0])

            # temp
            fd = gzip.open(
                'D:/experiments/CVP/data/segmentation/engzee/output-%d' %
                recid, 'rb')
            data = scipy.array(cPickle.load(fd)[data_type])  ##
            fd.close()

            #            a = pylab.find(data['R'] <= info['%s_time'%label][1]*sampling_rate)##
            #            b = pylab.find(data['R'] >= info['%s_time'%label][0]*sampling_rate)##
            #            idxs_time = scipy.intersect1d(a,b) ##
            #            data_idxs = scipy.intersect1d(idxs_time, good_idxs) ##

            data_idxs = good_idxs
            data = data[data_idxs]  ##
            #data = db2data(data_type, info['database'], refine={'_id': recid})[data_idxs]

            if info['subtractmean']:
                data -= scipy.mean(data)

            if info['normalization'][0]:
                if info['normalization'][1] == 'meanofmaxs':
                    data /= scipy.mean(numpy.max(data, 1))
                elif info['normalization'][1] == 'medianofmaxs':
                    data /= scipy.median(numpy.max(data, 1))

            if info['subpattern'][0]:
                data = featureextraction.subpattern(
                    data, range(info['subpattern'][1], info['subpattern'][2]))

            # determine mean waves
            if info['number_mean_waves_%s' % label] == 'all':
                data = misc.mean_waves(data, len(data))
            elif info['number_mean_waves_%s' % label] > 1:
                data = misc.mean_waves(data,
                                       info['number_mean_waves_%s' % label])
            # determine median waves
            elif info['number_median_waves_%s' % label] == 'all':
                data = misc.median_waves(data, len(data))
            elif info['number_median_waves_%s' % label] > 1:
                data = misc.median_waves(
                    data, info['number_median_waves_%s' % label])

            # get n random indexes
            # ...

            # quantization
            if info['quantization'] > 0:
                data = misc.quantize(data, levels=info['quantization'])

            if info['patterns2strings']:
                res = []
                for i, si in enumerate(data):
                    line = ''.join('%d' % i for i in si)
                    res.append(line)
                data = res

            out[run][name] = data
    return out
Ejemplo n.º 4
0
def get_data(st, info, data_type, label):
    out = {}
    for run in info['%s_patterns' % label]:
        out[run] = {}
        for name in info['%s_patterns' % label][run]:
            # get data corresponding to info['label_patterns']
            recid = info['%s_patterns' % label][run][name][1]
            data_idxs = []
            map(lambda i: data_idxs.append(int(i)),
                info['%s_patterns' % label][run][name][0])
            data = st.db2data(data_type,
                              refine={'_id':
                                      [recid]})[recid][0]['signal'][:, :, 4:7]
            # data = st.db2data(data_type, refine={'_id': [recid]})[recid][0]['signal'].swapaxes(0, 1)

            # temp
            R = st.db.records.getEvent(recid, '/ECG/hand/zee5to20/R/engzee',
                                       0)['timeStamps']
            filt = st.db.records.getSignal(
                recid, '/ECG/hand/zee5to20/Segments/engzee', 0)['signal']
            if R[0] < 200:
                # remove first segment
                data = data[1:]
            elif len(filt) - R[-1] < 400:
                # remove last segment
                data = data[:-1]

            # outliers
            data = data[data_idxs]

            # normalization
            if info['normalization'] == 'mean':
                data /= scipy.mean(numpy.max(data, 0))

            if info['subpattern']:
                data = featureextraction.subpattern(data, range(165, 238))

            # determine mean waves
            if info['number_mean_waves_%s' % label] > 1:
                data = misc.mean_waves(data,
                                       info['number_mean_waves_%s' % label])

            elif info['number_median_waves_%s' % label] > 1:
                data = misc.median_waves(
                    data, info['number_median_waves_%s' % label])

            # get n random indexes
            # ...

            # quantization
            if info['quantization'] > 0:
                data = misc.quantize(data, levels=info['quantization'])

            if info['patterns2strings']:
                res = []
                for i, si in enumerate(data):
                    line = ''.join('%d' % i for i in si)
                    res.append(line)
                data = res

            out[run][name] = data
    return out