blq_file=blq_file, mode='GPS+GLONASS', ElDepWeight=ElDepWeight, ElMin=ElMin, pos_s=pos_s, wetz_s=wetz_s, PPPtype=PPPtype, years_list=years_list, cache_path=cache_path, VMF1_dir=VMF1_dir, project_name=project_name_construct, static_clk=static_clk, ambres=ambres) #the GNSS_class single project name staDb_path = gen_staDb(tmp_dir=tmp_dir, project_name=project_name, stations_list=stations_list, IGS_logs_dir=IGS_logs_dir) stations_list_arrays = _np.array_split(stations_list, num_nodes) for i in range(len(stations_list_arrays)): code = gen_code( stations_list=list(stations_list_arrays[i]), cache_path=cache_path, tropNom_input=tropNom_input, ambres=ambres, ElMin=ElMin, ElDepWeight=ElDepWeight, staDb_path=staDb_path, years_list=years_list, num_cores=num_cores, tmp_dir=tmp_dir, project_name=project_name,
def __init__( self, project_name, stations_list, #add check for duplicates in stations_list as staDb-based functions may crash years_list, tree_options, mode, hatanaka, cddis=False, cache_path='/run/user/1017', rnx_dir='/mnt/Data/bogdanm/GNSS_data/BIGF_data/daily30s', tmp_dir='/mnt/Data/bogdanm/tmp_GipsyX/bigf_tmpX', blq_file='/mnt/Data/bogdanm/tmp_GipsyX/otl/ocnld_coeff/bigf_glo.blq', VMF1_dir='/mnt/Data/bogdanm/Products/VMF1_Products', tropNom_type='30h_tropNominalOut_VMF1.tdp', IGS_logs_dir='/mnt/Data/bogdanm/GNSS_data/BIGF_data/station_log_files', IONEX_products='/mnt/Data/bogdanm/Products/IONEX_Products', rate=300, gnss_products_dir='/mnt/Data/bogdanm/Products/JPL_GPS_Products_IGb08/Final', ionex_type='igs', #No ionex dir required as ionex merged products will be put into tmp directory by ionex class eterna_path='/home/bogdanm/Desktop/otl/eterna', hardisp_path='/home/bogdanm/Desktop/otl/hardisp/hardisp', num_cores=8, # integer of string ElMin=7, # degrees ElDepWeight='SqrtSin', #ElDepWeighting function pos_s=0.57, # mm/sqrt(s) wetz_s=0.1, # mm/sqrt(s) PPPtype='kinematic', static_clk=False, tqdm=True, ambres=True, staDb_path=None, trees_df=None): self.tqdm = tqdm self.hatanaka = hatanaka, self.cache_path = _os.path.abspath(cache_path) self.PPPtype = self._check_PPPtype(PPPtype) self.mode = self._check_mode(mode) self.project_name_core = project_name # original project name (core or family name) self.project_name = project_name + gx_aux.mode2label( mode=self.mode) #UPDATING PROJECT NAME DEPENDING ON THE MODE self.IGS_logs_dir = _os.path.abspath(IGS_logs_dir) self.rnx_dir = _os.path.abspath(rnx_dir) self.tmp_dir = _os.path.abspath(tmp_dir) self.cddis = cddis self.stations_list = stations_list self.years_list = years_list self.num_cores = num_cores self.blq_file = blq_file self.VMF1_dir = VMF1_dir self.tropNom_type = tropNom_type self.tree_options = tree_options # self.selected_rnx = gx_convert.select_rnx(tmp_dir=self.tmp_dir,rnx_dir=self.rnx_dir,stations_list=self.stations_list,years_list=self.years_list,cddis=self.cddis) self.staDb_path = gx_aux.gen_staDb( self.tmp_dir, self.project_name, self.stations_list, self.IGS_logs_dir) if staDb_path is None else staDb_path self.gnss_products_dir = _os.path.abspath(gnss_products_dir) self.ionex_type = ionex_type self.IONEX_products = _os.path.abspath(IONEX_products) self.ionex = gx_ionex.ionex( ionex_prods_dir=self.IONEX_products, #IONEX dir ionex_type=self.ionex_type, #type of files num_cores=self.num_cores, cache_path=self.cache_path, tqdm=self.tqdm) self.rate = rate self.refence_xyz_df = gx_aux.get_ref_xyz_sites( staDb_path=self.staDb_path) self.eterna_path = eterna_path self.hardisp_path = hardisp_path self.ElMin = ElMin self.ElDepWeight = ElDepWeight self.static_clk = static_clk self.ambres = ambres self.pos_s = pos_s if self.PPPtype == 'kinematic' else 'N/A' # no pos_s for static self.wetz_s = wetz_s if self.PPPtype == 'kinematic' else 0.05 # penna's value for static self.trees_df = trees_df