def run_all(fiducial, simulation_runs, face, statistics, savename, multicore=True, ncores=10, verbose=True): fiducial_timesteps = np.sort([os.path.join(fiducial, x) for x in os.listdir(fiducial) if os.path.isdir(os.path.join(fiducial, x))]) timesteps_labels = [x[-8:] for x in fiducial_timesteps] if verbose: print "Simulation runs to be analyzed: %s" % (simulation_runs) print "Started at "+str(datetime.now()) # Distances will be stored in an array of dimensions # # statistics x # sim runs x # timesteps # The +1 in the second dimensions is to include the # fiducial case against itself. distances_storage = np.zeros((len(statistics), len(simulation_runs), len(fiducial_timesteps))) for i, run in enumerate(simulation_runs): timesteps = np.sort([os.path.join(run, x) for x in os.listdir(run) if os.path.isdir(os.path.join(run, x))]) if verbose: print "On Simulation %s/%s" % (i+1, len(simulation_runs)) print str(datetime.now()) if multicore: pool = Pool(processes=ncores) distances = pool.map(single_input, izip(fiducial_timesteps, timesteps, repeat(statistics))) pool.close() pool.join() distances_storage[:, i, :] = \ sort_distances(statistics, distances).T else: for ii, timestep in enumerate(timesteps): fiducial_dataset = fromfits(fiducial_timesteps[ii], keywords) testing_dataset = fromfits(timestep, keywords) if i == 0: distances, fiducial_models = \ wrapper(fiducial_dataset, testing_dataset, statistics=statistics, filenames=[fiducial_timesteps[ii], timestep]) all_fiducial_models = fiducial_models else: distances = \ wrapper(fiducial_dataset, testing_dataset, fiducial_models=all_fiducial_models, statistics=statistics, filenames=[fiducial_timesteps[ii], timestep]) distances = [distances] distances_storage[:, i, ii:ii+1] = \ sort_distances(statistics, distances).T return distances_storage, timesteps_labels
def timestep_wrapper(fiducial_timestep, testing_timestep, statistics): fiducial_dataset = fromfits(fiducial_timestep, keywords) testing_dataset = fromfits(testing_timestep, keywords) distances = stats_wrapper(fiducial_dataset, testing_dataset, statistics=statistics, multicore=True, filenames=[fiducial_timestep, testing_timestep]) return distances
def timestep_wrapper(fiducial, design, statistics): fiducial_dataset = fromfits(fiducial, keywords) design_dataset = fromfits(design, keywords) distances = stats_wrapper(fiducial_dataset, design_dataset, statistics=statistics, multicore=True, filenames=[fiducial, design]) return distances
def run_all(fiducial, simulation_runs, face, statistics, savename, multicore=True, ncores=10, verbose=True): fiducial_timesteps = np.sort([os.path.join(fiducial, x) for x in os.listdir(fiducial) if os.path.isdir(os.path.join(fiducial, x))]) timesteps_labels = [x[-8:] for x in fiducial_timesteps] if verbose: print "Simulation runs to be analyzed: %s" % (simulation_runs) print "Started at "+str(datetime.now()) # Distances will be stored in an array of dimensions # # statistics x # sim runs x # timesteps # The +1 in the second dimensions is to include the # fiducial case against itself. distances_storage = np.zeros((len(statistics), len(simulation_runs), len(fiducial_timesteps))) for i, run in enumerate(simulation_runs): timesteps = np.sort([os.path.join(run, x) for x in os.listdir(run) if os.path.isdir(os.path.join(run, x))]) if verbose: print "On Simulation %s/%s" % (i+1, len(simulation_runs)) print str(datetime.now()) if multicore: pool = Pool(processes=ncores) distances = pool.map(single_input, izip(fiducial_timesteps, timesteps, repeat(statistics))) pool.close() pool.join() distances_storage[:, i, :] = \ sort_distances(statistics, distances).T else: for ii, timestep in enumerate(timesteps): fiducial_dataset = fromfits(fiducial_timesteps[ii], keywords) testing_dataset = fromfits(timestep, keywords) if i == 0: distances, fiducial_models = \ stats_wrapper(fiducial_dataset, testing_dataset, statistics=statistics) all_fiducial_models = fiducial_models else: distances = \ stats_wrapper(fiducial_dataset, testing_dataset, fiducial_models=all_fiducial_models, statistics=statistics) distances = [distances] distances_storage[:, i, ii:ii+1] = \ sort_distances(statistics, distances).T return distances_storage, timesteps_labels
def timestep_wrapper(fiducial_timestep, testing_timestep, statistics): keywords = {"centroid", "centroid_error", "integrated_intensity", "integrated_intensity_error", "linewidth", "linewidth_error", "moment0", "moment0_error", "cube"} fiducial_dataset = fromfits(fiducial_timestep, keywords) testing_dataset = fromfits(testing_timestep, keywords) distances = wrapper(fiducial_dataset, testing_dataset, statistics=statistics, multicore=True, filenames=[fiducial_timestep, testing_timestep]) return distances
def run_all(fiducial, simulation_runs, face, statistics, savename, multicore=True, ncores=10, verbose=True): if verbose: print "Simulation runs to be analyzed: %s" % (simulation_runs) print "Started at " + str(datetime.now()) # Distances will be stored in an array of dimensions # # statistics x # sim runs x # timesteps # The +1 in the second dimensions is to include the # fiducial case against itself. distances_storage = np.zeros((len(statistics), len(simulation_runs))) if multicore: pool = Pool(processes=ncores) distances = pool.map( single_input, izip(repeat(fiducial), simulation_runs, repeat(statistics))) pool.close() pool.join() distances_storage = sort_distances(statistics, distances).T else: for i, design in enumerate(simulation_runs): fiducial_dataset = fromfits(fiducial, keywords) testing_dataset = fromfits(design, keywords) if i == 0: distances, fiducial_models = \ stats_wrapper(fiducial_dataset, testing_dataset, statistics=statistics) all_fiducial_models = fiducial_models else: distances = \ stats_wrapper(fiducial_dataset, testing_dataset, fiducial_models=all_fiducial_models, statistics=statistics) distances = [distances] distances_storage[:, i:i+1] = \ sort_distances(statistics, distances).T return distances_storage
def run_all(fiducial, simulation_runs, face, statistics, savename, multicore=True, ncores=10, verbose=True): if verbose: print "Simulation runs to be analyzed: %s" % (simulation_runs) print "Started at "+str(datetime.now()) # Distances will be stored in an array of dimensions # # statistics x # sim runs x # timesteps # The +1 in the second dimensions is to include the # fiducial case against itself. distances_storage = np.zeros((len(statistics), len(simulation_runs))) if multicore: pool = Pool(processes=ncores) distances = pool.map(single_input, izip(repeat(fiducial), simulation_runs, repeat(statistics))) pool.close() pool.join() distances_storage = sort_distances(statistics, distances).T else: for i, design in enumerate(simulation_runs): fiducial_dataset = fromfits(fiducial, keywords) testing_dataset = fromfits(design, keywords) if i == 0: distances, fiducial_models = \ wrapper(fiducial_dataset, testing_dataset, statistics=statistics, filenames=[fiducial, design]) all_fiducial_models = fiducial_models else: distances = \ wrapper(fiducial_dataset, testing_dataset, fiducial_models=all_fiducial_models, statistics=statistics, filenames=[fiducial, design]) distances = [distances] distances_storage[:, i:i+1] = \ sort_distances(statistics, distances).T return distances_storage
Script for visualizing the output of each statistic in the package. The two arguments are two folders containing the specific data sets to compare. ''' import numpy as np from turbustat.io import fromfits import sys keywords = {"centroid", "centroid_error", "integrated_intensity", "integrated_intensity_error", "linewidth",\ "linewidth_error", "moment0", "moment0_error", "cube"} folder1 = str(sys.argv[1]) folder2 = str(sys.argv[2]) dataset1 = fromfits(folder1, keywords, verbose=False) dataset2 = fromfits(folder2, keywords, verbose=False) ## Wavelet Transform from turbustat.statistics import Wavelet_Distance wavelet_distance = Wavelet_Distance(dataset1["integrated_intensity"], dataset2["integrated_intensity"]).distance_metric(verbose=True) print "Wavelet Distance: %s" % (wavelet_distance.distance) ## MVC# from turbustat.statistics import MVC_distance