def do_fapar(save_dir, f_retval, n_site=1, year=2001, lad=1): # Write files which will be used by Fortran for calculation of fAPAR dir_params = save_dir # dir_fapar_mean = save_dir+'output_fapar_mean/' # f_fapar_mean = save_dir + 'output_fapar_mean/fapar_in_Ne%d_%d.dat' % (n_site, year) dir_fapar_sd = save_dir + "output_fapar_sd/" if not os.path.exists(save_dir + "output_fapar_nadim_mean"): os.makedirs(save_dir + "output_fapar_nadim_mean") if not os.path.exists(save_dir + "output_fapar_nadim_sd"): os.makedirs(save_dir + "output_fapar_nadim_sd") prior_orig = pickle.load(open(save_dir + "prior_%d_%d.pkl" % (year, n_site), "rb")) try: (f_fapar_mean, f_fapar_sd) = write_fapar_in( f_retval, year, dir_params, dir_fapar_sd, n_train=50, n_site=n_site, lad=lad, prior=prior_orig ) except ValueError: print "Something wrong with write_fapar_in()..." # compile fortran code using the system call os.system("f2py -c -m fapar_py nadimtools.f nadimbrf.f fapar_py.f90") # Call fortran functions for fapar out_fapar_mean = save_dir + "output_fapar_nadim_mean/fapar_out_Ne%d_%d.dat" % (n_site, year) fapar_py.fapar_mean(f_fapar_mean, out_fapar_mean) out_fapar_sd = [] # print 'dir_fapar_sd=', dir_fapar_sd # print 'dir_fapar_sd[-1]=', dir_fapar_sd[-1] for day_sd in range(1, 366): out_fapar_sd = np.append( out_fapar_sd, save_dir + "output_fapar_nadim_sd/fapar_out_Ne%d_%d_%d.dat" % (n_site, year, day_sd) ) # print 'out_fapar_sd=', out_fapar_sd fapar_py.fapar_mean(dir_fapar_sd + "fapar_in_Ne%d_%d_%d.dat" % (n_site, year, day_sd), out_fapar_sd[-1]) return f_fapar_mean, f_fapar_sd, out_fapar_mean, out_fapar_sd
os.system("f2py -c -m fapar_py nadimtools.f nadimbrf.f fapar_py_2.f90") for n_site in [3]: for year in [2007]: f_fapar_mean = save_dir + 'output_fapar_mean/fapar_in_Ne%d_%d_mean.dat' % (n_site, year) dir_fapar_sd = save_dir+'output_fapar_sd/' f_retval = save_dir+'misr_etm_all_Ne%d_%d_ang7.pkl'%(n_site, year) prior_orig = pickle.load(open(save_dir+'prior_%d_%d.pkl' % (year, n_site), "rb")) write_fapar_in(f_retval, year, dir_params, f_fapar_mean, dir_fapar_sd, n_train=50,\ n_site=n_site, lad=lad, prior=prior_orig) # Call fortran functiooutput_fapar_nadim_meanns for fapar fapar_py.fapar_mean(f_fapar_mean, save_dir_nad +\ 'output_fapar_nadim_mean/fapar_out_Ne%d_%d_mean.dat' %\ (n_site, year)) for day_sd in range(1, 366): fapar_py_2.fapar_sd(dir_fapar_sd +\ 'fapar_in_Ne%d_%d_%d_ang7.dat'%(n_site, year, day_sd),\ save_dir_nad +\ 'output_fapar_nadim_sd/fapar_out_Ne%d_%d_%d.dat' %\ (n_site, year, day_sd)) # fapar = np.loadtxt(save_dir + 'output_fapar_nadim_sd/fapar_out_Ne%d_%d_%d.dat' % (n_site, year, day_sd)) # plot retrieved FAPAR # plt.plot(-2.*np.log(prior.mu['xlai']), label='prior') # plt.title('year %d' % year) # plt.plot(fapar, label='retrieved year %d' % year) # plt.xlim(1, 366) # plt.legend()