170 ''' |
170 ''' |
171 |
171 |
172 self.info['Temperature'] = 10.0 |
172 self.info['Temperature'] = 10.0 |
173 self.info['Pressure'] = 930.0 |
173 self.info['Pressure'] = 930.0 |
174 |
174 |
175 |
175 def subtract_dark(self): |
|
176 |
|
177 if not self.dark_measurement: |
|
178 raise IOError('No dark measurements have been imported yet.') |
|
179 |
|
180 for (channel_name, dark_channel) in self.dark_measurement.channels.iteritems(): |
|
181 dark_profile = dark_channel.average_profile() |
|
182 channel = self.channels[channel_name] |
|
183 |
|
184 for measurement_time, data in channel.data.iteritems(): |
|
185 channel.data[measurement_time] = data - dark_profile |
|
186 |
|
187 channel.update() |
|
188 |
176 def save_as_netcdf(self, filename): |
189 def save_as_netcdf(self, filename): |
177 """Saves the measurement in the netcdf format as required by the SCC. |
190 """Saves the measurement in the netcdf format as required by the SCC. |
178 Input: filename |
191 Input: filename |
179 """ |
192 """ |
180 params = self.extra_netcdf_parameters |
193 params = self.extra_netcdf_parameters |
448 condition = (tim >= starttime) & (tim <= endtime) |
461 condition = (tim >= starttime) & (tim <= endtime) |
449 sl = data[condition, :] |
462 sl = data[condition, :] |
450 t = tim[condition] |
463 t = tim[condition] |
451 return sl,t |
464 return sl,t |
452 |
465 |
453 def av_profile(self, tim, duration = datetime.timedelta(seconds = 0), signal_type = 'rc'): |
466 def profile_for_duration(self, tim, duration = datetime.timedelta(seconds = 0), signal_type = 'rc'): |
|
467 """ Calculates the profile around a specific time (tim). """ |
454 starttime = tim - duration/2 |
468 starttime = tim - duration/2 |
455 endtime = tim + duration/2 |
469 endtime = tim + duration/2 |
456 d,t = self.get_slice(starttime, endtime, signal_type = signal_type) |
470 d,t = self.get_slice(starttime, endtime, signal_type = signal_type) |
457 prof = np.mean(d, axis = 0) |
471 prof = np.mean(d, axis = 0) |
458 tmin = min(t) |
472 tmin = min(t) |
459 tmax = max(t) |
473 tmax = max(t) |
460 tav = tmin + (tmax-tmin)/2 |
474 tav = tmin + (tmax-tmin)/2 |
461 return prof,(tav, tmin,tmax) |
475 return prof,(tav, tmin,tmax) |
462 |
476 |
|
477 def average_profile(self): |
|
478 """ Return the average profile (NOT range corrected) for all the duration of the measurement. """ |
|
479 prof = np.mean(self.matrix, axis = 0) |
|
480 return prof |
|
481 |
463 def plot(self, signal_type = 'rc', filename = None, zoom = [0,12000,0,-1], show_plot = True, cmap = plt.cm.jet): |
482 def plot(self, signal_type = 'rc', filename = None, zoom = [0,12000,0,-1], show_plot = True, cmap = plt.cm.jet): |
464 #if filename is not None: |
483 #if filename is not None: |
465 # matplotlib.use('Agg') |
484 # matplotlib.use('Agg') |
466 |
485 |
467 fig = plt.figure() |
486 fig = plt.figure() |