Switch to side-by-side view

--- a
+++ b/python/aux1/generate_graphics_2.py
@@ -0,0 +1,193 @@
+import matplotlib.pyplot as plt
+import numpy as np
+from features_ECG import *
+import os
+import csv
+import gc
+import cPickle as pickle
+
+import numpy as np
+import matplotlib.pyplot as plt
+from scipy.signal import medfilt
+import scipy.stats
+import pywt
+import time
+import sklearn
+from sklearn import decomposition
+from sklearn.decomposition import PCA, IncrementalPCA
+
+from features_ECG import *
+
+
+# DS: contains the patient list for load
+# winL, winR: indicates the size of the window centred at R-peak at left and right side
+# do_preprocess: indicates if preprocesing of remove baseline on signal is performed
+
+DS = [101, 106, 108, 109, 112, 114, 115, 116, 118, 119, 122, 124, 201, 203, 205, 207, 208, 209, 215, 220, 223, 230]
+winL = 90
+winR = 90
+do_preprocess = True
+class_ID = [[] for i in range(len(DS))]
+beat = [[] for i in range(len(DS))] # record, beat, lead
+R_poses = [ np.array([]) for i in range(len(DS))]
+Original_R_poses = [ np.array([]) for i in range(len(DS))]   
+valid_R = [ np.array([]) for i in range(len(DS))]
+my_db = mit_db()
+patients = []
+
+# Lists 
+# beats = []
+# classes = []
+# valid_R = np.empty([])
+# R_poses = np.empty([])
+# Original_R_poses = np.empty([])
+
+size_RR_max = 20
+
+pathDB = '/home/mondejar/dataset/ECG/'
+DB_name = 'mitdb'
+fs = 360
+jump_lines = 1
+
+# Read files: signal (.csv )  annotations (.txt)    
+fRecords = list()
+fAnnotations = list()
+
+lst = os.listdir(pathDB + DB_name + "/csv")
+lst.sort()
+for file in lst:
+    if file.endswith(".csv"):
+        if int(file[0:3]) in DS:
+            fRecords.append(file)
+    elif file.endswith(".txt"):
+        if int(file[0:3]) in DS:
+            fAnnotations.append(file)        
+
+MITBIH_classes = ['N', 'L', 'R', 'e', 'j', 'A', 'a', 'J', 'S', 'V', 'E', 'F']#, 'P', '/', 'f', 'u']
+AAMI_classes = []
+AAMI_classes.append(['N', 'L', 'R'])                    # N
+AAMI_classes.append(['A', 'a', 'J', 'S', 'e', 'j'])     # SVEB 
+AAMI_classes.append(['V', 'E'])                         # VEB
+AAMI_classes.append(['F'])                              # F
+#AAMI_classes.append(['P', '/', 'f', 'u'])              # Q
+
+RAW_signals = []
+r_index = 0
+
+#for r, a in zip(fRecords, fAnnotations):
+#for r in range(0, len(fRecords)):
+r = 4
+print("Processing signal " + str(r) + " / " + str(len(fRecords)) + "...")
+
+# 1. Read signalR_poses
+filename = pathDB + DB_name + "/csv/" + fRecords[r]
+print filename
+f = open(filename, 'rb')
+reader = csv.reader(f, delimiter=',')
+next(reader) # skip first line!
+MLII_index = 1
+V1_index = 2
+if int(fRecords[r][0:3]) == 114:
+    MLII_index = 2
+    V1_index = 1
+
+MLII = []
+V1 = []
+for row in reader:
+    MLII.append((int(row[MLII_index])))
+    V1.append((int(row[V1_index])))
+f.close()
+
+
+RAW_signals.append((MLII, V1)) ## NOTE a copy must be created in order to preserve the original signal
+# display_signal(MLII)
+
+# 2. Read annotations
+filename = pathDB + DB_name + "/csv/" + fAnnotations[r]
+print filename
+f = open(filename, 'rb')
+next(f) # skip first line!
+
+annotations = []
+for line in f:
+    annotations.append(line)
+f.close
+
+
+
+# 1 Display signal
+##############################################################################
+plt.figure(figsize=(11.69, 8.27))
+ax1 = plt.subplot(311)
+plt.plot(MLII[22500:24500])
+
+
+# 3. Preprocessing signal!
+baseline = medfilt(MLII, 71) 
+baseline = medfilt(baseline, 215) 
+
+# Remove Baseline
+for i in range(0, len(MLII)):
+    MLII[i] = MLII[i] - baseline[i]
+# TODO Remove High Freqs
+
+
+
+for i in range(0, len(MLII)):
+    MLII[i] = MLII[i] - baseline[i]
+    
+# 2 Remove Noise
+##############################################################################
+ax2 = plt.subplot(312)
+plt.plot(MLII[22500:24500])
+
+
+# Extract the R-peaks from annotations
+for a in annotations:
+    aS = a.split()
+    
+    pos = int(aS[1])
+    originalPos = int(aS[1])
+    classAnttd = aS[2]
+    if pos > size_RR_max and pos < (len(MLII) - size_RR_max):
+        index, value = max(enumerate(MLII[pos - size_RR_max : pos + size_RR_max]), key=operator.itemgetter(1))
+        pos = (pos - size_RR_max) + index
+
+    peak_type = 0
+    #pos = pos-1
+    
+    if classAnttd in MITBIH_classes:
+        if(pos > winL and pos < (len(MLII) - winR)):
+            beat[r].append( (MLII[pos - winL : pos + winR], V1[pos - winL : pos + winR]))
+            for i in range(0,len(AAMI_classes)):
+                if classAnttd in AAMI_classes[i]:
+                    class_AAMI = i
+                    break #exit loop
+            #convert class
+            class_ID[r].append(class_AAMI)
+
+            valid_R[r] = np.append(valid_R[r], 1)
+        else:
+            valid_R[r] = np.append(valid_R[r], 0)
+    else:
+        valid_R[r] = np.append(valid_R[r], 0)
+    
+    R_poses[r] = np.append(R_poses[r], pos)
+    Original_R_poses[r] = np.append(Original_R_poses[r], originalPos)
+
+
+# 3 Mark Fiducial Points 
+##############################################################################
+ax3 = plt.subplot(313)
+plt.plot(MLII[22500:24500])
+
+for pose in R_poses[r]:
+    if pose > 22500 and pose < 24500:
+        circle = plt.Circle((pose - 22500, MLII[int(pose)]), radius= 10, color='g')
+        ax3.add_patch(circle)
+
+#plt.show()
+
+plt.savefig('/home/mondejar/graphic_2.pdf', dpi=None, facecolor='w', edgecolor='w',
+    orientation='landscape', papertype='a4', format='pdf', transparent=True, bbox_inches=None, 
+    pad_inches=0.1, frameon=None)