def run_post_p_wt(
    output_folder='/home/alex/LabGit/ECG_random_walk/experiments/record_test/result0607/post_p/'
):
    import glob, json
    from mcmc.post_p import post_p_wt

    def fix_P_annots(raw_sig, annots):
        P_annots = filter(lambda x: x[1][0] == 'P', annots)
        annots = filter(lambda x: x[1][0] != 'P', annots)
        P_annots = post_p_wt(raw_sig, P_annots, 500.0)
        annots.extend(P_annots)
        return annots

    files = glob.glob(
        '/home/alex/LabGit/ECG_random_walk/experiments/record_test/result0607/*.json'
    )
    avg_result_folder = '/home/alex/LabGit/ECG_random_walk/experiments/record_test/hiking/avg/'
    cloader = ECGLoader(2, 1)
    for result_file_name in files:
        cID = os.path.split(result_file_name)[-1]
        cID = cID.split('.')[0]
        print 'Ploting cID:', cID
        with open(result_file_name, 'r') as fin:
            annots = json.load(fin)
        # with open(avg_result_folder + '%s.json' % cID, 'r') as fin:
        # avg_annots = json.load(fin)

        raw_sig = cloader.loadID(cID)

        annots = fix_P_annots(raw_sig, annots)
        # with open(output_folder + '%s.json' % cID, 'w') as fout:
        # json.dump(annots, fout)
        # plot_result(raw_sig, annots)
        pdb.set_trace()
def debug_plot_result():
    import glob, json
    files = glob.glob(
        '/home/alex/LabGit/ECG_random_walk/experiments/record_test/hiking/avg/*.json'
    )
    avg_result_folder = '/home/alex/LabGit/ECG_random_walk/experiments/record_test/hiking/'
    cloader = ECGLoader(2, 1)
    for result_file_name in files:
        cID = os.path.split(result_file_name)[-1]
        cID = cID.split('.')[0]
        print 'Ploting cID:', cID
        with open(result_file_name, 'r') as fin:
            hiking_annots = json.load(fin)
        with open(avg_result_folder + '%s.json' % cID, 'r') as fin:
            avg_annots = json.load(fin)

        raw_sig = cloader.loadID(cID)
        # plot_result(raw_sig, annots)
        fig, ax = plt.subplots(1, 1, figsize=(25, 6))
        plt.plot(raw_sig)
        plt.grid(True)
        hiking_annots = filter(lambda x: x[0] >= 0 and x[0] < len(raw_sig),
                               hiking_annots)
        plotExpertLabels(ax,
                         raw_sig,
                         hiking_annots,
                         color_in='r',
                         label_prefix='Normal ')
        plotExpertLabels(ax, raw_sig, avg_annots, label_prefix='Hiking ')
        plt.title(u'长庚 ' + cID)
        plt.xlim((750, len(raw_sig) - 750))

        # plt.savefig('/home/alex/图片/work_pngs/RandomWalkPath/hiking/hiking_%s.png' % cID)
        plt.show(block=False)
        pdb.set_trace()
def debug_plot_result_post_p():
    import glob, json
    from mcmc.post_p import post_p_mcmc

    def fix_P_annots(raw_sig, annots):
        P_annots = filter(lambda x: x[1][0] == 'P', annots)
        annots = filter(lambda x: x[1][0] != 'P', annots)
        P_annots = post_p_mcmc(raw_sig, P_annots, 500.0)
        annots.extend(P_annots)
        return annots

    files = glob.glob(
        '/home/alex/LabGit/ECG_random_walk/experiments/record_test/result0607/*.json'
    )
    postp_result_folder = '/home/alex/LabGit/ECG_random_walk/experiments/record_test/result0607/post_p/'
    cloader = ECGLoader(2, 1)
    fig, ax = plt.subplots(1, 1, figsize=(25, 6))
    for result_file_name in files:
        cID = os.path.split(result_file_name)[-1]
        cID = cID.split('.')[0]
        print 'Ploting cID:', cID
        with open(result_file_name, 'r') as fin:
            annots = json.load(fin)

        if os.path.exists(postp_result_folder + '%s.json' % cID) == False:
            continue
        with open(postp_result_folder + '%s.json' % cID, 'r') as fin:
            postp_annots = json.load(fin)

        raw_sig = cloader.loadID(cID)

        ax.cla()
        plt.plot(raw_sig)
        plotExpertLabels(ax, raw_sig, annots, label_prefix='Normal')

        postp_annots = filter(lambda x: x[1][0] == 'P', postp_annots)
        plotExpertLabels(ax,
                         raw_sig,
                         postp_annots,
                         color_in='y',
                         label_prefix='post_p ')
        plt.title(u'长庚 ' + cID)
        plt.xlim((750, len(raw_sig) - 750))

        plt.grid(True)
        # plt.savefig('/home/alex/图片/work_pngs/RandomWalkPath/hiking/hiking_%s.png' % cID)
        plt.show(block=False)
        pdb.set_trace()
示例#4
0
def debug_plot_result():
    import glob, json
    files = glob.glob(
        '/home/alex/LabGit/ECG_random_walk/experiments/record_test/hiking/*.json'
    )
    avg_result_folder = '/home/alex/LabGit/ECG_random_walk/experiments/record_test/hiking/avg/'
    cloader = ECGLoader(2, 1)
    for result_file_name in files:
        cID = os.path.split(result_file_name)[-1]
        cID = cID.split('.')[0]
        print 'Ploting cID:', cID
        with open(result_file_name, 'r') as fin:
            annots = json.load(fin)
        with open(avg_result_folder + '%s.json' % cID, 'r') as fin:
            avg_annots = json.load(fin)

        raw_sig = cloader.loadID(cID)
        test_tools.plot_result(raw_sig, annots)
示例#5
0
def TestChanggeng(debug=False):
    import json
    from randomwalk.test_api import Testing

    with open(
            '/home/alex/LabGit/ECG_random_walk/tools/annotations/inputs/IDlist.json',
            'r') as fin:
        # with open('/home/alex/LabGit/ECG_random_walk/experiments/record_test/hiking/normal/IDlist.json', 'r') as fin:
        IDlist = json.load(fin)
    avg_save_result_folder = '/home/alex/LabGit/ECG_random_walk/experiments/record_test/result0607/'
    hiking_save_result_folder = '/home/alex/LabGit/ECG_random_walk/experiments/record_test/hiking/QRS_bias/hiking/'
    cloader = ECGLoader(1, 1)

    for cID in IDlist:
        print 'Testing cID:', cID

        raw_sig = cloader.loadID(cID)
        model_folder = '/home/alex/LabGit/ECG_random_walk/randomwalk/data/annots0605/db2/'
        annots = randomwalk.TestingWithModelFolder(raw_sig, 500.0,
                                                   model_folder)
        with open(avg_save_result_folder + '%s.json' % cID, 'w') as fout:
            json.dump(annots, fout, indent=4)
def testing(
        changgengID='8790',
        leadname='II',
        model_folder='/home/alex/LabGit/ECG_random_walk/randomwalk/data/annots0605/db2/',
        test_method='normal'):

    cloader = ECGLoader(1, 1)
    sig = cloader.loadID(changgengID, leadname=leadname)

    fs = 500.0
    sig = scipy.signal.resample(sig, int(len(sig) / float(fs) * 250.0))
    fs_inner = 250.0

    walker = RandomWalker(target_label='T',
                          random_pattern_file_name=model_folder +
                          'random_pattern.json')
    walker.load_model(model_folder + 'T.mdl')
    feature_extractor = walker.GetFeatureExtractor(sig)

    def test_seed(seed_position, label='T', plot_path=True):
        path = walker.testing_walk_extractor(feature_extractor,
                                             seed_position,
                                             iterations=1000)
        path_len = len(path)
        pos_list = [x[0] for x in path]
        output_position = np.mean(pos_list[path_len / 2:])

        if plot_path:
            plt.figure(1)
            plt.clf()
            plt.subplot(2, 1, 1)
            plt.plot(sig)
            amp_list = np.linspace(0, -2, len(pos_list))
            plt.plot(pos_list, amp_list, 'r', alpha=0.5, lw=2)
            plt.xlim((min(pos_list) - 200, max(pos_list) + 200))
            plt.plot(output_position,
                     sig[output_position],
                     'ro',
                     markersize=12)

            # Path and confidence
            # plt.figure(2)
            # plt.clf()
            plt.subplot(2, 1, 2)
            plt.plot(pos_list, label='Path')
            m1 = min(pos_list)
            m2 = max(pos_list)
            confidence_list = [x[1] * (m2 - m1) + m1 for x in path]
            plt.plot(
                confidence_list,
                label='Confidence',
                alpha=0.9,
            )
            plt.show(block=False)
            pdb.set_trace()
            # plt.savefig('/home/alex/图片/work_pngs/RandomWalkPath/confidence-%s.png' % seed_position)

        return (output_position, label)

    from hiking_test import hiking

    def hiking_test(seed_position, label='T'):
        path = walker.testing_walk_extractor(feature_extractor,
                                             seed_position,
                                             iterations=1000)
        pos = hiking(path)
        return (pos, label)

    def avg_test(seed_position, label='T'):
        path = walker.testing_walk_extractor(feature_extractor,
                                             seed_position,
                                             iterations=1000)
        pos_list = [x[0] for x in path]
        pos = np.mean(pos_list[len(pos_list) / 2:])
        return (pos, label)

    dpi = DPI(debug_info=dict())
    r_list = dpi.QRS_Detection(sig, fs=fs_inner)
    # annots = list()
    annots = zip(r_list, [
        'R',
    ] * len(r_list))

    # for seed in xrange(100, len(sig), 200):
    for rpos in r_list:
        seed = rpos + fs_inner * 0.26
        if seed >= len(sig):
            continue
        # print 'testing seed:', seed
        if test_method == 'hiking':
            annots.append(hiking_test(seed))
        elif test_method == 'normal':
            annots.append(avg_test(seed))
        elif test_method == 'test_seed':
            annots.append(test_seed(seed))

    # plot_result(sig, annots)
    return annots
def show_result_ECG(cID='8790'):
    loader = ECGLoader(1, 1)
    sig = loader.loadID(cID)

    plot_result(sig, annots)
示例#8
0
def testing(
    changgengID='8790',
    leadname='II',
    model_folder='/home/alex/LabGit/ECG_random_walk/randomwalk/data/annots0605/db2/'
):

    cloader = ECGLoader(1, 1)
    sig = cloader.loadID(changgengID, leadname=leadname)

    fs = 500.0
    # sig = scipy.signal.resample(sig, int(len(sig) / float(fs) * 250.0))

    walker = RandomWalker(target_label='T',
                          random_pattern_file_name=model_folder +
                          'random_pattern.json')
    walker.load_model(model_folder + 'T.mdl')
    feature_extractor = walker.GetFeatureExtractor(sig)

    def test_seed(seed_position, label='T', plot_path=True):
        path = walker.testing_walk_extractor(feature_extractor,
                                             seed_position,
                                             iterations=1000)
        path_len = len(path)
        pos_list = [x[0] for x in path]
        output_position = np.mean(pos_list[path_len / 2:])

        if plot_path:
            plt.figure(1)
            plt.clf()
            plt.subplot(2, 1, 1)
            plt.plot(sig)
            amp_list = np.linspace(0, -2, len(pos_list))
            plt.plot(pos_list, amp_list, 'r', alpha=0.5, lw=2)
            plt.xlim((min(pos_list) - 200, max(pos_list) + 200))
            plt.plot(output_position,
                     sig[output_position],
                     'ro',
                     markersize=12)
            plt.plot(hiking(path),
                     sig[output_position],
                     'sm',
                     markersize=13,
                     alpha=0.5)

            # Path and confidence
            # plt.figure(2)
            # plt.clf()
            plt.subplot(2, 1, 2)
            plt.plot(pos_list, label='Path')
            m1 = min(pos_list)
            m2 = max(pos_list)
            confidence_list = [x[1] * (m2 - m1) + m1 for x in path]
            plt.plot(
                confidence_list,
                label='Confidence',
                alpha=0.9,
            )

            plt.figure(2)
            plt.clf()
            plt.hist(pos_list, bins=30)

            plt.show(block=False)

            pdb.set_trace()

        return (output_position, label)

    annots = list()
    for seed in xrange(100, len(sig), 250):
        print 'testing seed:', seed
        annots.append(test_seed(seed))

    test_tools.plot_result(sig, annots)