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

###############################################################################
[docs] def cdata(self,data=False,data_xyz=False, tol= 0.001 ,verbose=False): ############################################################################### """Check data and/or data_xyz attributes for consistency and validity. Parameters ---------- data : bool, optional If True, check the data attribute. Default is False. data_xyz : bool, optional If True, check the data_xyz attribute. Default is False. tol : float, optional Tolerance in days for two dates to be considered the same. Default is 0.001. verbose : bool, optional If True, print details. Default is False. Returns ------- bool True if checks pass, False otherwise. Notes ----- In future, this routine may also check consistency between .data and .data_xyz. """ # import import inspect import numpy as np from pyacs.gts.lib.errors import GtsInputDataNone , GtsInputData_xyzNone , GtsInputData_allNone from pyacs.gts.lib.errors import GtsInputDataTypeError , GtsInputDataBadDim , GtsInputDataBadNcolumns, GtsInputDataBadNrows from pyacs.gts.lib.errors import GtsInputData_xyzTypeError , GtsInputData_xyzBadDim , GtsInputData_xyzBadNcolumns, GtsInputData_xyzBadNrows from pyacs.gts.lib.errors import GtsInputDataDiffShape , GtsInputDataDiffDate # CASE EITHER data OR data_xyz where asked to be checked # is there the required data try: if ( self.data is None ) and ( data ): # raise exception raise GtsInputDataNone(inspect.stack()[0][3],__name__,self) except GtsInputDataNone as error: # print PYACS WARNING print( error ) return( False ) # is there the required data_xyz try: if ( self.data_xyz is None ) and ( data_xyz ): # raise exception raise GtsInputData_xyzNone(inspect.stack()[0][3],__name__,self) except GtsInputData_xyzNone as error: # print PYACS WARNING print( error ) return( False ) # GENERAL CASE # is there some data? try: if ( self.data is None ) and ( self.data_xyz is None ): # raise exception raise GtsInputData_allNone(inspect.stack()[0][3],__name__,self) except GtsInputData_allNone as error: # print PYACS WARNING print( error ) return( False ) # .data case if self.data is not None: # .data numpy array? try: if not isinstance(self.data,np.ndarray): # raise exception raise GtsInputDataTypeError(inspect.stack()[0][3],__name__,self) except GtsInputDataTypeError as error: # print PYACS WARNING print( error ) return( False ) # .data with right dimensions? try: if self.data.ndim != 2: # raise exception raise GtsInputDataBadDim(inspect.stack()[0][3],__name__,self) except GtsInputDataBadDim as error: # print PYACS WARNING print( error ) return( False ) # .data with the right shape? try: if self.data.shape[1] not in [7,10]: # raise exception raise GtsInputDataBadNcolumns(inspect.stack()[0][3],__name__,self) except GtsInputDataBadNcolumns as error: # print PYACS WARNING print( error ) return( False ) # .data with at least one observation? try: if self.data.shape[0] < 1: # raise exception raise GtsInputDataBadNrows(inspect.stack()[0][3],__name__,self) except GtsInputDataBadNrows as error: # print PYACS WARNING print( error ) return( False ) # .data_xyz case if self.data_xyz is not None: # .data numpy array? try: if not isinstance(self.data_xyz,np.ndarray): # raise exception raise GtsInputData_xyzTypeError(inspect.stack()[0][3],__name__,self) except GtsInputData_xyzTypeError as error: # print PYACS WARNING print( error ) return( False ) # .data with right dimensions? try: if self.data_xyz.ndim != 2: # raise exception raise GtsInputData_xyzBadDim(inspect.stack()[0][3],__name__,self) except GtsInputData_xyzBadDim as error: # print PYACS WARNING print( error ) return( False ) try: if self.data_xyz.shape[1] not in [7,10]: # raise exception raise GtsInputData_xyzBadNcolumns(inspect.stack()[0][3],__name__,self) except GtsInputData_xyzBadNcolumns as error: # print PYACS WARNING print( error ) return( False ) try: if self.data_xyz.shape[0] < 1: # raise exception raise GtsInputData_xyzBadNrows(inspect.stack()[0][3],__name__,self) except GtsInputData_xyzBadNrows as error: # print PYACS WARNING print( error ) return( False ) # check .data and .data_xyz consistency if ( self.data is not None ) and ( self.data_xyz is not None ): # check both have the same length try: if self.data.shape[0] != self.data_xyz.shape[0]: raise GtsInputDataDiffShape(inspect.stack()[0][3],__name__,self) except GtsInputDataDiffShape as error: # print PYACS WARNING print( error ) return( False ) # check both have the same dates try: if np.max((self.data[:,0]- self.data_xyz[:,0])**2) > tol / 365.25: raise GtsInputDataDiffDate(inspect.stack()[0][3],__name__,self) except GtsInputDataDiffDate as error: # print PYACS WARNING print( error ) return( False ) return(True)