Source code for pyacs.gts.lib.primitive.extract_ndates_around_date


###################################################################
[docs] def extract_ndates_around_date(self,date,n): ################################################################### """ Extract n values before and n values after a given date. If n values are not available, returns all available values. .data is set to None if no value at all is available. Parameters ---------- date : float Date in decimal year. n : int Number of observations to extract on each side. Returns ------- Gts New Gts with at most n observations before and n after the given date. """ # import import inspect import numpy as np # check data is not None from pyacs.gts.lib.errors import GtsInputDataNone try: if self.data is None: # raise exception raise GtsInputDataNone(inspect.stack()[0][3],__name__,self) except GtsInputDataNone as error: # print PYACS WARNING print( error ) return( self ) # copy new_Gts=self.copy( data_xyz=None ) new_Gts.data=None try: sel_data_after=np.copy(self.data[np.where((self.data[:,0]>date))]) except: print("-- time series ",self.code," does not have data after ",date) return(new_Gts) try: sel_data_before=np.copy(self.data[np.where((self.data[:,0]<date))]) except: print("-- time series ",self.code," does not have data before ",date) return(new_Gts) # extract data if sel_data_after.shape[0]>n: sel_data_after=sel_data_after[:n,:] if sel_data_before.shape[0]>n: sel_data_before=sel_data_before[-n:,:] sel_data=np.vstack(( sel_data_before, sel_data_after)) new_Gts.data=sel_data return(new_Gts)