def complete_postprocessing(config_filename=False, directory_path=False, decay=True, extraction=True, reduction=True, delete=False): """ Choose Experiment-folder from config-file. Apply beta-decay to all data-files, SAVE AS '*_decayed.npy'!! Extract Re-Os-data from data-files and decayed-data-files, SAVE AS 'extract_..._.npy' Reduce extracted data to reasonable pandas-csv-files, save in experiment-folder and results-folder! delete-option: execute extraction, with suboption "do not consider files were Y_Re-187 or Y_Os-187 = 0" """ if config_filename: config = cp.ConfigParser() config.read(config_filename) dir_data = config["montecarlo parameters"]["directory_name"] elif directory_path: dir_data = directory_path else: raise TypeError("Wrong use of keyword arguments!"+ "'config_filename' or 'directory_path' must be given!") print "Mucking around in directory: %s"%(dir_data) if decay: print "Applying decay" decay_instance = Decay(dir_name=dir_data) #make instance of decay-class decay_instance() #do the stuff for Re-Os if extraction: print "Applying extraction" extract_instance = Extract(dir_name=dir_data) #make instance of extract-class extract_instance.check_filename_level = 1 #check Y_hat(Re-187) and Y_hat(Os-187) from pid-in filename extract_instance() #do the stuff for Re-Os extract_instance(nsm=True) if reduction: print "Applying reduction" reduce_instance = Reduce(dir_name=dir_data) #make instance of reduce-class reduce_instance() #do the stuff for Re-Os reduce_instance(nsm=True) results_folder = Foldermap().hume_folder() + "latex/thesis/results/" + dir_data.split("/")[-1] print "Results-folder: %s"%(results_folder) try: os.mkdir(results_folder) except OSError: #folder already exists pass reduce_instance.set_save_dir(results_folder) reduce_instance() reduce_instance(nsm=True) return
### import modules ### #local module for project from directory_master import Foldermap folder = Foldermap() folder.activate_environ() #GCE calculation and local visualization module from omega import omega from visualize import visualize #get some bestfit-value from 'Eris' from bestfit_param_omega.find_bestfit_param_v0.set_param_from_eris import * #get values and filename from document from read_parameter_space import read_param #Set cmdline arguments try: from sys import argv n = int(argv[1]) except IndexError: n = 10 #Run calculations of GCE with 'Omega' timesteps = n loa_inflow_vals, save_name = read_param( "inflow_rate") #get values from 'parameter_space.txt' print "Using inflow values: ", loa_inflow_vals bestfit_mgal = 1.0e+10 loa_omega_inst = [ omega(special_timesteps=timesteps, in_out_control=True, inflow_rate=inflow, imf_type=bestfit_imf_type,
""" Purpose: Make a class that that inherits from 'Omega', takes a 'namespace' as argument and call on 'Omega' with all the parameters from 'namespace'. Also add a function for saving relevant data to a 2D numpy-matrix. Description: """ #get folder-handling-script from directory_master import Foldermap folder = Foldermap() folder.activate_environ() #set environment/directory for omega #NuPyCEE one-zone chemical evolution code from omega import omega class child_omega(omega): def __init__(self, bestfit_namespace): omega.__init__( self, galaxy=bestfit_namespace.bestfit_galaxy, in_out_control=bestfit_namespace.bestfit_in_out_control, SF_law=bestfit_namespace.bestfit_SF_law, DM_evolution=bestfit_namespace.bestfit_DM_evolution, Z_trans=bestfit_namespace.bestfit_Z_trans, f_dyn=bestfit_namespace.bestfit_f_dyn, sfe=bestfit_namespace.bestfit_sfe, outflow_rate=bestfit_namespace.bestfit_outflow_rate, inflow_rate=bestfit_namespace.bestfit_inflow_rate,
""" """ #Import modules for plotting and modelling #import sys; sys.path.append("/home/oyvind/github_uio/NuPyCEE") from directory_master import Foldermap Foldermap().activate_environ() #set os.eviron to correct path from omega import omega ##################################################### ### Class inheriting omega for experimental usage ### ##################################################### class omega_new(omega): def __init__(self, bestfit_namespace): omega.__init__( self, galaxy=bestfit_namespace.bestfit_galaxy, in_out_control=bestfit_namespace.bestfit_in_out_control, SF_law=bestfit_namespace.bestfit_SF_law, DM_evolution=bestfit_namespace.bestfit_DM_evolution, Z_trans=bestfit_namespace.bestfit_Z_trans, f_dyn=bestfit_namespace.bestfit_f_dyn, sfe=bestfit_namespace.bestfit_sfe, outflow_rate=bestfit_namespace.bestfit_outflow_rate, inflow_rate=bestfit_namespace.bestfit_inflow_rate, rand_sfh=bestfit_namespace.bestfit_rand_sfh, cte_sfr=bestfit_namespace.bestfit_cte_sfr, m_DM_0=bestfit_namespace.bestfit_m_DM_0, mass_loading=bestfit_namespace.bestfit_mass_loading, t_star=bestfit_namespace.bestfit_t_star,
""" Description: -Make a class that inherits everything from omega or sygma -change the functions that uses sygma to get yields -add a funky factor to the yields of a single isotope """ ###################################### ### Various imports and structures ### ###################################### #get folder-handling-script from directory_master import Foldermap folder = Foldermap() folder.activate_environ() #set environment for omega before importing #NuPyCEE one-zone chemical evolution code from omega import * #use pandas for data-storage import pandas as pd #import namespace of the default bestfit-parameters import bestfit_param_omega.bestfit_file as default_bestfit_namespace ##################################################### ### Class inheriting omega for experimental usage ### ##################################################### class experiment(omega): def __init__(self, input_isotope='Re-187', input_factor=1.0, input_timesteps=30, dt=0, bestfit_namespace=default_bestfit_namespace): self.experiment_isotope = input_isotope self.experiment_factor = input_factor ### initialize omega ###
""" This file contains the default parameters of 'Omega'. Copy-paste the parameter-space from the bottom and insert into any 'Omega'-instance to set all bestfit-parameters to default. """ import numpy as np #only do this for the default parameters from directory_master import Foldermap folder = Foldermap() ### Initialize bestfit-parameters with the initial parameters ### bestfit_galaxy = 'none' bestfit_in_out_control = False bestfit_SF_law = False bestfit_DM_evolution = False bestfit_Z_trans = 1e-20 bestfit_f_dyn = 0.1 bestfit_sfe = 0.1 bestfit_outflow_rate = -1.0 bestfit_inflow_rate = -1.0 bestfit_rand_sfh = 0.0 bestfit_cte_sfr = 1.0 bestfit_m_DM_0 = 1.0e11 bestfit_mass_loading = 1.0 bestfit_t_star = -1.0 bestfit_sfh_file = 'none' bestfit_in_out_ratio = 1.0 bestfit_stellar_mass_0 = -1.0 bestfit_z_dependent = True bestfit_exp_ml = 2.0 bestfit_nsmerger_bdys = [8, 100] bestfit_imf_type = 'kroupa'
""" This script is for picking an experiment on the stornext folder, get all the adequate results and write them to the results-folder in \thesis\ """ import os from save_results import save_results from directory_master import Foldermap folder = Foldermap() stornext_folder = folder.stornext_folder() hume_folder = folder.hume_folder() results_folder = "latex/thesis/results/" #direction to thesis-results-folder from /Master/ if __name__ == '__main__': #which experiment? inventory = dict(enumerate(os.listdir(stornext_folder))) question = "Choose the index of the appropriate experiment?\n%s" % ( inventory) response = int(raw_input(question)) experiment = inventory[response] get_directory = stornext_folder + experiment + "/" save_directory = hume_folder + results_folder + experiment + "/" #which arrays? loa_array_strings = [] #nb_nsm, rate_nsm loa_array_strings.append("num_nsm") #elem & iso yield+ism iso_list = ["Re-185", "Re-187", "Os-187", "Os-188", "Os-186", "W-184"] elem_list = ["Re", "Os", "W"]
#fraction of os-187/Re-187 at the time of formation of the solar system (with absolute uncertainty) f_187_fsos = [0.136, 0.0032] #same for current time f_187_now = [0.226, 57.9e-3] if fsos: ax.axhspan(f_187_fsos[0]+f_187_fsos[1], f_187_fsos[0]-f_187_fsos[1], alpha=0.5, label="$f_{187}(t_{f,sos})$", color="g") if now: ax.axhspan(f_187_now[0]+f_187_now[1], f_187_now[0]-f_187_now[1], alpha=0.5, label="$f_{187}(t_{now})$", color="g") return if __name__ == '__main__': #find app. directory from directory_master import Foldermap directory = Foldermap().results + "MCExperiment_revised_2_delmax/" #find app. data loa_filenames = os.listdir(directory) for filename in loa_filenames: if ("reduce" in filename) and ("div" in filename) \ and ("timeevol" in filename) and ("decay" in filename): app_filename = filename time, mean, uncertainty_up, uncertainty_down = get_data(directory+app_filename) #plot data fig = pl.figure() ax = fig.gca() bool_std = True add_meteor_data(ax=ax) plot_timeevol((time, mean, mean+uncertainty_up, mean-uncertainty_down), ax, color='k-', bool_std=bool_std, plot_string="data")
""" Calculate the mean, median, 1 sigma, 2 sigma, and default array of a specific array from a data-folder. """ #import statements and global varaibles import os, sys import numpy as np from directory_master import Foldermap folder = Foldermap() stornext_dir = folder.stornext_folder() default_filename_postamble = "default.npy" #Final string of default-datafile-name index_filename = "data_indeces.txt" ### Set global location directory to stornext ### location_dir = stornext_dir loa_contents = os.listdir(location_dir) loa_folders = [] for content in loa_contents: #loop over all strings in cwd if not ('.' in content): #string is not a filename, but folder loa_folders.append(content) #find folder name print "Current available folders: ", dict(enumerate(loa_folders)) response = raw_input( "What folder would you like to choose? (full path or index)") try: #is response the index of folder-list? response = int(response) input_index = response input_datafolder = loa_folders[response]
""" Go through /stornext/-directories and plot various data-sets with mean + regions and such. Decide which data is to be stored in /results/ """ from directory_master import Foldermap from plot_data_files import plot_all_mean_sigma_extrema, plot_all_time_hist import matplotlib.pyplot as pl #Get relevant directory-names for uio-systems folder_instance = Foldermap() dir_stornext = folder_instance.stornext_folder() dir_hume = folder_instance.hume_folder() #decide on variables to plot! loa_elem = ["Re", "Os"] loa_re_isos = ["Re-187", "Re-185"] loa_os_isos = ["Os-187", "Os-188"] loa_ism_isos = ["ism_iso_" + iso for iso in loa_re_isos + loa_os_isos] loa_ism_elem = ["ism_elem_" + elem for elem in loa_elem] loa_yield_isos = ["yield_" + iso for iso in loa_re_isos + loa_os_isos] loa_array_strings = ["num_nsm", "m_locked"] + \ loa_ism_elem + \ loa_ism_isos + \ loa_yield_isos if __name__ == '__main__': print "Plotting data for the following arrays:" print loa_array_strings dir_experiment = dir_stornext + "MCExperiment1/"
""" Plot the current bestfit-parameters, in 'current_bestfit.py'. Then add the plots to a folder, 'current_bestfit_plots/'. Input arguments: n: int Number of special-timesteps. A value of zero disables special timesteps, meaning constant timesteps. """ ### Get modules ### import sys, time from directory_master import Foldermap #structure of directory folder = Foldermap() folder.activate_environ() #set NuPyCEE-folder from omega import omega #GCE from visualize import visualize #visualization of Omega and Eris from bestfit_param_omega.current_bestfit import * ### User-made exception ### class Wtf(Exception): def __init__(self): print "What the F**K did you do?!" sys.exit("Exiting!") ### Set global parameters ### n = 5 save_dir = "current_bestfit_plots/" try: n = int(sys.argv[1]) except:
plt.figure(figsize=(7.0,5.3)) # Get the CC SNe and kilona rates r_sne = o.history.sn2_numbers[1:] / o.history.timesteps r_kilo = o.history.nsm_numbers[1:] / o.history.timesteps # Plot results plt.plot(np.array(o.history.age[1:])/1e9, r_sne, color='b', label='CC SNe') plt.plot(np.array(o.history.age[1:])/1e9, r_kilo, color='r', label='Kilonovae') plt.yscale('log') plt.ylim(1e-7,1e0) """ from directory_master import Foldermap as FM folder = FM() folder.activate_environ() from bestfit_param_omega.current_bestfit import * import matplotlib.pyplot as pl from omega import omega bestfit_special_timesteps = 100 O1 = omega(special_timesteps=bestfit_special_timesteps, ns_merger_on=True) O2 = omega(galaxy=bestfit_galaxy, in_out_control=bestfit_in_out_control, SF_law=bestfit_SF_law, DM_evolution=bestfit_DM_evolution, Z_trans=bestfit_Z_trans, f_dyn=bestfit_f_dyn, sfe=bestfit_sfe, outflow_rate=bestfit_outflow_rate,
def add_meteor_data(ax, fsos=True, now=False): #fraction of os-187/Re-187 at the time of formation of the solar system (with absolute uncertainty) f_187_fsos = [0.136, 0.0323] #same for current time f_187_now = [0.226, 57.9e-3] if fsos: ax.axhspan(f_187_fsos[0]+f_187_fsos[1], f_187_fsos[0]-f_187_fsos[1], alpha=0.5, label="obs. $f_{187}(t_{f,sos})$", color="g") if now: ax.axhspan(f_187_now[0]+f_187_now[1], f_187_now[0]-f_187_now[1], alpha=0.5, label="obs. $f_{187}(t_{now})$", color="g") return if __name__ == '__main__': from directory_master import Foldermap result_dir = Foldermap().results #.hume_folder() + "latex/thesis/results/" # result_dir = result_dir+"MCExperiment_revised_2_delmax/" # result_dir = result_dir+"MCExperiment_revised_2_imfslope/" result_dir = result_dir+"MCExperiment_revised_2_numnsm/" loa_fullpaths = get_full_filenames(result_dir) print "All paths in %s:"%(result_dir) for fullpath in loa_fullpaths: print fullpath.split('/')[-1] if raw_input("continue? y/n\t") == "y": pass else: sys.exit("Exiting!") # plot_all_single_paths(loa_fullpaths=loa_fullpaths) doa_figs = plot_combined_plots(loa_fullpaths=loa_fullpaths, save_dir=result_dir)
#add '/' to experiment_folder if necessary if experiment_folder[-1] != '/': experiment_folder = experiment_folder + '/' #get list of filenames with desired quantities csv_file_list = [ experiment_folder + filename for filename in file_list if (".csv" in filename) ] return csv_file_list if __name__ == '__main__': from directory_master import Foldermap result_dir = Foldermap( ).results #.hume_folder() + "latex/thesis/results/" #.stornext_folder() +... result_dir = result_dir + "MCExperiment_revised_2_numnsm/" loa_fullpaths = get_full_filenames(result_dir) print "All paths in %s:" % (result_dir) for fullpath in loa_fullpaths: print fullpath.split('/')[-1] if True: #if raw_input("continue? y/n\t") == "y": pass else: sys.exit("Exiting!") loa_num_paths = [ path for path in loa_fullpaths if "num" in path.split("/")[-1] ]