Source code for pyacs.gts.lib.format.series

"""
Read GipsyX series format time series.
"""


###################################################################
## Loads Gts from GAMIT/GLOBK  pos file format for time series
###################################################################
[docs] def read_series(self, tsdir='.', tsfile=None, xyz=True, verbose=False): """ Read GipsyX series time series file. Parameters ---------- tsdir : str, optional Directory containing the series file. tsfile : str, optional Series file to load. If None, looks for CODE*.series. xyz : bool, optional If True, keep/store XYZ; otherwise NEU. verbose : bool, optional Verbose mode. Notes ----- This format does not include the absolute position; relative only. """ # import import numpy as np import pyacs.lib.astrotime import pyacs.lib.coordinates import os import logging import pyacs.message.message as MESSAGE import pyacs.message.verbose_message as VERBOSE import pyacs.message.error as ERROR import pyacs.message.warning as WARNING import pyacs.message.debug_message as DEBUG # name of the file to be read - if not provided, tries to guess if (tsfile is None): if (self.code is not None): from glob import glob try: pos_file = glob(tsdir + '/' + self.code.upper() + '*.series')[0] except: ERROR("Could not find any time series file for code ", self.code) return () else: ERROR("no code or file provided.") else: pos_file = tsfile # file self.ifile = os.path.abspath(pos_file) # actual read # get site code from pathlib import Path self.code = Path(pos_file).stem if len(self.code) != 4: WARNING("I was expecting 4-char code for file name. code will be %s" % self.code) # reads data try: self.data = np.atleast_2d( np.genfromtxt(pos_file, usecols=(0,2,1,3,5,4,6,7,9,8))) except: # there is a big problem ERROR("Could not read dN,dE,dU from file: %s " % pos_file, exit=True) # check duplicate or non-ordered entries if self.data.shape[0] > 1: if np.min(np.diff(self.data[:, 0])) <= 0: WARNING("time series not properly ordered by dates or dates duplicated. Fixing that.") self.reorder() # force clean self.offsets_dates = [] self.offsets_values = None self.outliers = [] self.annual = None self.semi_annual = None self.velocity = None self.data_xyz = None WARNING("This format is missing longitude, latitude, He information") return (self)