4 Alberto Gomez-Casado (c) 2010 University of Twente
7 from libhooke import WX_GOOD
9 wxversion.select(WX_GOOD)
10 from wx import PostEvent
13 import libinput as linp
18 warnings.simplefilter('ignore',np.RankWarning)
23 def do_review(self,args):
27 Presents curves (in current playlist) in groups of ten. User can indicate which curves will be selected to be saved in a separate directory for further analysis.
28 By default curves are presented separated -30 nm in x and -100 pN in y.
29 Curve number one of each set is the one showing the approach.
32 review [x spacing (nm)] [y spacing (pN]
40 xgap=int(args[0])*1e-9 #scale to SI units
41 ygap=int(args[1])*1e-12
43 print 'Spacings must be numeric! Using defaults'
50 print 'Processing playlist...'
55 print 'You can stop the review at any moment by entering \'q\' you can go back ten curves entering \'b\''
56 print 'What curve no. you would like to start? (Enter for starting from the first)'
59 if skip.isdigit()==False:
63 print 'Skipping '+str(skip)+ ' curves'
66 while c < len(self.current_list):
69 #take a group of ten curves and plot them with some spacing
71 curveset=self.current_list[c:c+10]
76 multiplot=copy.deepcopy(self._get_displayed_plot(0))
77 self.current.curve.close_all()
80 if i >= len(curveset):
81 print 'End of the list'
82 print 'WARNING: maybe you want to finish!'
85 if not nextitem.identify(self.drivers):
87 nextplot=self.plotmanip_correct(nextitem.curve.default_plots()[0],nextitem)
88 nextvect=nextplot.vectors
89 nextitem.curve.close_all()
94 ymedian=np.median(nexty)
96 for j in range(0,len(nextx)):
97 nextx[j]=nextx[j]+i*xgap
98 nexty[j]=nexty[j]+i*ygap-ymedian
99 multiplot.add_set(nextx,nexty)
100 multiplot.styles.append('lines')
101 multiplot.colors.append(None)
103 self._send_plot([multiplot])
106 print 'Which ones you want to keep?'
110 print 'Going back ten curves'
113 print 'We are already at the start'
119 for i in keep.split():
120 if i.isdigit() and int(i)>0 and int(i)<11: #if it is not digit the int() call is never made, so no exception should be happening
121 keep_item=curveset[int(i)-1].path
122 if keep_item in keep_list:
123 print 'This curve ('+keep_item+') was already selected, skipping'
125 keep_list.append(keep_item)
127 print 'You entered an invalid value: '+i
131 #FIXME I don't know why the print below gives errors sometimes
133 print 'Kept '+str(len(keep_list))+' curves from '+str(min(c+i+1,len(self.current_list)))
135 print 'Display error, never mind, we continue. Below the amount of kept and total curves:'
136 print str(len(keep_list))
137 print str(len(self.current_list))
139 allok=0 #flag to keep from losing all the work in a slight mistake
141 if len(keep_list) == 0:
143 save=linp.safeinput('Do you want to save the selected curves?',['y','n'])
145 savedir=linp.safeinput('Destination directory?')
146 savedir=os.path.abspath(savedir)
147 if not os.path.isdir(savedir):
148 print 'Destination is not a directory. Try again'
154 for item in keep_list:
156 shutil.copy(item, savedir)
158 except (OSError, IOError):
159 print 'Cannot copy file. '+item+' Perhaps you gave me a wrong directory?'