def plot_meteo(region_buttons, ini_date, end_date, actions): region = region_buttons.value sd = ini_date.value #datetime.strptime(ini_date.value, "%m-%d-%Y") ed = end_date.value m = meteo.Meteo(sd, ed, region) meteo_output = m.get_meteo() data = pd.read_csv(meteo_output['output'], delimiter=',', decimal=',') data['Date'] = pd.to_datetime(data['Date']) #data["Temp"] = float(data["Temp"]) data data.plot(x='Date', y='Temp') plt.show()
def test_file1_method1(supply_params): os.mkdir('datasets') os.mkdir('datasets/%s' % supply_params[0]) config.METEO_API_TOKEN = supply_params[5] config.METEO_API_URL = supply_params[6] m = meteo.Meteo(supply_params[1], supply_params[2], supply_params[0]) m.params = supply_params[3] meteo_output = m.get_meteo() hash_code = hashlib.md5(file_as_bytes(open(meteo_output['output'], 'rb'))).hexdigest() os.remove(meteo_output['output']) os.rmdir('datasets/%s' % supply_params[0]) os.rmdir('datasets') assert hash_code == supply_params[4]
def test_metadata_attachment(supply_params): config.onedata_mode = 1 config.onedata_token = supply_params[7] config.onedata_url = supply_params[9] config.onedata_api = supply_params[10] os.mkdir('datasets') os.mkdir('datasets/%s' % supply_params[0]) config.METEO_API_TOKEN = supply_params[5] config.METEO_API_URL = supply_params[6] # rg = supply_params[0] # ons = supply_params[11] m = meteo.Meteo(supply_params[1], supply_params[2], supply_params[0]) m.params = supply_params[3] meteo_output = m.get_meteo() file_out = meteo_output['output'] file_out = file_out.replace('datasets/', '') url = ("https://cloud-90-147-75-163.cloud.ba.infn.it/api/v3/oneprovider" "/metadata/json/LifeWatch/CdP/temp_2018-10-10_2018-11-11.csv") r = requests.get(url, headers=supply_params[8]) os.remove(meteo_output['output']) os.rmdir('datasets/%s' % supply_params[0]) os.rmdir('datasets') assert r.status_code == 200
def prepare_model(start_date, end_date, region, path, onedata_token): #Parameters ini_date_str = start_date.strftime('%Y-%m-%d')+' 00:00:00' end_date_str = end_date.strftime('%Y-%m-%d')+' 00:00:00' print("Generating new model"+'/model_'+start_date.strftime('%Y-%m-%d')+'_'+end_date.strftime('%Y-%m-%d')+'/') try: shutil.copytree(path+region+'/model', path+region+'/model_'+start_date.strftime('%Y-%m-%d')+'_'+end_date.strftime('%Y-%m-%d')+'/') except FileExistsError: shutil.rmtree(path+region+'/model_'+start_date.strftime('%Y-%m-%d')+'_'+end_date.strftime('%Y-%m-%d')+'/') shutil.copytree(path+region+'/model', path+region+'/model_'+start_date.strftime('%Y-%m-%d')+'_'+end_date.strftime('%Y-%m-%d')+'/') base_path = path+region+'/model_'+start_date.strftime('%Y-%m-%d')+'_'+end_date.strftime('%Y-%m-%d')+'/' fmt = '%Y-%m-%d %H:%M:%S' ini_date = datetime.strptime(ini_date_str, fmt) end_date = datetime.strptime(end_date_str, fmt) f1 = open(base_path+'test_1.mdf','r') f2 = open(base_path+'test_1_v2.mdf','w') #Layers k = 35 print(modeling_file.minutes_between_date(ini_date,end_date)) #Check Wind file wind_input = '' #Search once. If it is not found, it tries to download the data try: print("Searching Wind data") wind_input = path+region+'/'+find_dataset_type(ini_date.date(),end_date.date(),'wind',onedata_token)[0]["file"] except Exception as e: print(e) print("Getting data") m = meteo.Meteo(ini_date.date(), end_date.date(), region) m.params = ["ID","date","speed","dir"] wind_input = m.get_meteo()['output'] #Second time. If it is not found, it generates a generic file. try: if wind_input == '': print("Searching Wind data again") wind_input = path + region + '/' + find_dataset_type(ini_date.date(),end_date.date(),'wind',onedata_token)[0]["file"] except: wf = open(base_path+'wind_generic.csv','w') line = "date;speed;dir\n\"%s\";2.72;277\n\"%s\";2.72;277\n" % (ini_date_str, end_date_str) wf.write(line) wf.close() wind_input = base_path+'wind_generic.csv' print("Creating file .wnd from CSV: %s" % wind_input) wind_file_name = "wind_"+ini_date.strftime('%Y-%m-%d%H%M%S')+"_"+end_date.strftime('%Y-%m-%d%H%M%S')+".wnd" modeling_file.csv_to_wind(wind_input, ini_date, end_date, base_path+wind_file_name) print("Wind file created: %s" % wind_file_name) #Check initial conditions #TODO For the moment, only with uniform values print("Searching Initial data") print("Getting initial data") print("Creating initial data file .ini") ini_file_name = "initial_"+ini_date.strftime('%Y-%m-%d%H%M%S')+"_"+end_date.strftime('%Y-%m-%d%H%M%S')+".ini" print("Initial file created: %s" % ini_file_name) #Check Radiation file print("Searching Radiation data") print("Getting data") try: rad_input = path+find_dataset_type(ini_date.date(),end_date.date(),'rad')[0]['file'] except: rf = open(base_path+'rad_generic.csv','w') line = "date;hum;temp;rad\n\"%s\";22.72;12.4;0\n\"%s\";22.72;12.4;200\n" % (ini_date_str, end_date_str) rf.write(line) rf.close() rad_input = base_path+'rad_generic.csv' print("Creating file .tem") rad_file_name = "rad_"+ini_date.strftime('%Y-%m-%d%H%M%S')+"_"+end_date.strftime('%Y-%m-%d%H%M%S')+".tem" modeling_file.csv_to_tem(rad_input, ini_date, end_date, base_path+rad_file_name) print("Radiation file created: %s" % rad_file_name) #Input-Output flow print("Searching flow data") print("Getting data") #Uniform output out_dic = {1: {'Name':'Presa','Flow': 0.5}} presa_bct = 'Presa.bct' #input_csv = 'data/' #csv_to_bct(out_dic,presa_bct,input_csv,ini_date,end_date) modeling_file.gen_uniform_output_bct(out_dic,base_path+presa_bct,ini_date,end_date) out_dic = {1: {'Name':'Presa','Temperature': 12.5, 'Salinity': 0.03}} presa_bcc = 'Presa.bcc' modeling_file.gen_uniform_output_bcc(out_dic,base_path+presa_bcc,ini_date,end_date) input_dic = {1: {'Name': 'Duero', 'Flow': 0.4, 'Temperature': 12.5, 'Salinity': 0.03}, 2: {'Name': 'Revinuesa', 'Flow': 0.4, 'Temperature': 12.5, 'Salinity': 0.03}, 3: {'Name':'Ebrillos', 'Flow': 0.4, 'Temperature': 12.5, 'Salinity': 0.03}, 4: {'Name': 'Dehesa', 'Flow': 0.4, 'Temperature': 12.5, 'Salinity': 0.03}, 5: {'Name': 'Remonicio', 'Flow': 0.4, 'Temperature': 12.5, 'Salinity': 0.03}} input_dis = 'tributaries.dis' #input_dis_csv_folder = 'data/' #try: # csv_to_dis(input_dic,input_dis_csv_folder,input_dis,ini_date,end_date) #except: modeling_file.gen_uniform_intput_dis(input_dic,base_path+input_dis,ini_date,end_date) #Parameters update dic = {'Itdate': "#"+ini_date.strftime('%Y-%m-%d')+"#\n", 'Tstart': "%i\n" % modeling_file.minutes_between_date(datetime.strptime(ini_date.strftime('%Y-%m-%d'),'%Y-%m-%d'),ini_date), 'Tstop': "%i\n" % modeling_file.minutes_between_date(ini_date,end_date), 'Filwnd': "#" + wind_file_name + "#\n", 'Filtmp': "#" + rad_file_name + "#\n", 'FilbcT': "#" + presa_bct + "#\n", 'FilbcC':"#" + presa_bcc + "#\n", 'Fildis': "#" + input_dis + "#\n", 'Flmap' : "0 360 %i" % modeling_file.minutes_between_date(ini_date,end_date), 'Zeta0' : "0\n" } #Update params modeling_file.update_param_value(dic,f1,f2) f1.close() #f1 = open(base_path+'test_1.mdf','r') #f2 = open(base_path+'test_1_v2.mdf','w') os.rename(base_path+'test_1.mdf', base_path+'test_old.mdf') os.rename(base_path+'test_1_v2.mdf',base_path+'test_1.mdf') # WATER QUALITY ini_date_str = start_date.strftime('%Y/%m/%d') + '-00:00:00' end_date_str = end_date.strftime('%Y/%m/%d')+'-00:00:00' q1 = open(base_path+'test_1.inp','r') q2 = open(base_path+'test_1_v2.inp','w') #TODO wind_data = ini_date_str + ' 2.55\n' + end_date_str + ' 1.55\n' rad_data = ini_date_str + ' 255.5\n' + end_date_str + ' 155.5\n' #Layers k = 35 #Check Wind file print("Searching Wind data") print("Getting data") wind_block = False rad_block = False for line in q1: if wind_block==False and rad_block==False: if '2012.01.02 00:00:00' in line: line = line.replace('2012.01.02',start_date.strftime('%Y')+'.'+start_date.strftime('%m') + '.' + start_date.strftime('%d')) if '2012/01/02-00:00:00' in line: line = line.replace('2012/01/02-00:00:00',ini_date_str) if '2012/01/05-00:00:00' in line: line = line.replace('2012/01/05-00:00:00',end_date_str) q2.write(line) if '; wind_start' in line: wind_block = True q2.write(wind_data) if '; rad_start' in line: wind_block = True q2.write(rad_data) elif wind_block: if '; wind_end' in line: q2.write(line) wind_block = False elif rad_block: if '; rad_end' in line: q2.write(line) rad_block = False q1.close() q2.close() os.rename(base_path+'test_1.inp', base_path+'test_old.inp') os.rename(base_path+'test_1_v2.inp',base_path+'test_1.inp') try: deployment_id = launch_orchestrator_job('hydro',region+'/model_'+start_date.strftime('%Y-%m-%d')+'_'+end_date.strftime('%Y-%m-%d')+'/') except Exception as e: print(e) print("PaaS Orchestrator disconnected. Run the model manually") return path+region+'/model_'+start_date.strftime('%Y-%m-%d')+'_'+end_date.strftime('%Y-%m-%d')+'/' return deployment_id