Source code for pycif.plugins.datastreams.fluxes.GCP_1x1_N2O.utils

import datetime
import glob
import os
import calendar 
import numpy as np


[docs] def find_valid_file(ref_dir, file_format, dd): # Get all files and dates matching the file and format #print('Here, basic listing of all available files') list_files_orig = os.listdir(ref_dir) list_files_avail = [] for f in list_files_orig: try: check = datetime.datetime.strptime(f, file_format) list_files_avail.append(f) except: continue #print('All availables files',list_files_avail) list_files = [] list_dates = [] # XXXXXXX sans closest year pour le moment, A AJOUTER PLUS TARD XXXXXX # actually in each file, information every month for f in list_files_avail: year_beg_file = (f.split('-')[0]).split('.')[-1] #date_beg = datetime.datetime(year = int(year_beg_file), month = 1, day = 15) year_end_file = (f.split('-')[1]).split('.')[0] #date_end = datetime.datetime(year = int(year_end_file), month = 12, day = 15) nb_deltas = (int(year_end_file) - int(year_beg_file) + 1 ) * 12 list_dates_covered = [] yy = int(year_beg_file) mm =1 for k in range(nb_deltas): list_dates_covered.append(datetime.datetime(year = yy , month = mm , day =15)) mm = mm + 1 if mm == 13 : yy = yy + 1 mm =1 for d in list_dates_covered: list_files.append(f) list_dates.append(d) list_files = np.array(list_files) list_dates = np.array(list_dates) # Sorting along dates isort = np.argsort(list_dates) list_dates = list_dates[isort] list_files = list_files[isort] if list_files == []: raise Exception("Did not find any valid GCP flux files in {} " "with format {}. Please check your yml file" .format(ref_dir, file_format)) # Compute deltas mask = (list_dates - dd) <= datetime.timedelta(0) #print(mask) file_ref1 = ref_dir + list_files[mask][np.argmax(list_dates[mask])] date_ref1 = list_dates[mask].max() #print('111111111',file_ref1, date_ref1) mask = (list_dates - dd) >= datetime.timedelta(0) #print('mmmm',mask) file_ref2 = ref_dir + list_files[mask][np.argmin(list_dates[mask])] date_ref2 = list_dates[mask].min() #print('2222222222',file_ref2, date_ref2) return [file_ref1, file_ref2], [date_ref1, date_ref2]