Source code for voiager.voiager

import argparse
from pathlib import Path
from collections import OrderedDict

[docs] class Voiager(): """ VOId dynAmics and Geometry ExploreR main class. Args: params (dict): dictionary of parameters from input file """
[docs] @staticmethod def parseParamsFile(): """ Find and read parameter file from default or specified location Returns: parser (object): instance of ArgumentParser from argparse """ path = Path.cwd() # top level code directory parser = argparse.ArgumentParser(prog='voiager', description='VOId dynAmics and Geometry ExploreR provides a framework to perform cosmological analyses using voids identified in large-scale structure survey data.') parser.add_argument('parameters', nargs = '?', type = argparse.FileType('r'), default = str(path / 'voiager' / 'params.yaml'), help = 'Path to location of parameter yaml file') parser.add_argument('--version', action='version', version=Voiager.__version__) return parser
def __init__(self, params): path = Path.cwd() # Survey information self.survey = params['Info']['survey'] # Name of survey self.sample = params['Info']['sample'] # Name of tracer sample self.random = params['Info']['random'] # Name of random sample self.version = params['Info']['version'] # Version (suffix) of void catalog self.zmin,self.zmax = params['Info']['redshift'] # Redshift range self.sky = params['Info']['sky'] # Sky area in square degrees (full sky ~ 41253) self.cosmology = params['Info']['cosmology'] # Cosmological model to constrain (current options: "LCDM", "wCDM", "w0waCDM") # Input / output self.runExec = params['IO']['runExec'] # If True, run executable when called self.basePath = path / params['IO']['basePath'] # Location of the top level code directory self.tracerPath = self.basePath / params['IO']['tracerPath'] # Location of tracer catalogs self.voidPath = self.basePath / params['IO']['voidPath'] # Location of void catalogs self.outPath = self.basePath / params['IO']['outPath'] / self.survey / (self.sample + self.version) # Location to store output files self.plotPath = self.outPath / params['IO']['plotPath'] # Location to store plots self.inputFormat = params['IO']['inputFormat'] # Filetype for input tracer and random catalogs (supported types: https://docs.astropy.org/en/stable/io/unified.html) self.inputExtension = params['IO']['inputExtension'] # Filename extension for input tracer and random catalogs self.figFormat = params['IO']['figFormat'] # Format to save figures (e.g., pdf, png, jpg) self.columnNames = params['IO']['columnNames'] # Tracer and random catalog column headers for right ascension, declination, redshift (angles in degrees) self.stackFile = params['IO']['stackFile']+'.dat' # Filename for data of stacks self.chainFile = params['IO']['chainFile']+'.dat' # Filename for data of chains self.cosmoFile = params['IO']['chainFile']+'_'+self.cosmology+'.dat' # Filename for data of cosmology chains self.continueStack = params['IO']['continueStack'] # If True, continue using previous stacks. If False, delete old stacks. self.continueChain = params['IO']['continueChain'] # If True, continue sampling of previous chains. If False, delete old chains. # Void selection self.zvmin,self.zvmax = params['Selection']['zv'] # Void redshift range self.rvmin,self.rvmax = params['Selection']['rv'] # Void radius range self.mvmin,self.mvmax = params['Selection']['mv'] # Void mass range (number of tracers per void) self.dvmin,self.dvmax = params['Selection']['dv'] # Void core (minimum) density range self.Cvmin,self.Cvmax = params['Selection']['Cv'] # Void compensation range self.evmin,self.evmax = params['Selection']['ev'] # Void ellipticity range self.mgsmin,self.mgsmax = params['Selection']['mgs'] # Void radius range in units of mean galaxy separation (mgs) # Binning parameters self.vbin = params['Bins']['vbin'] # 'zv': void-redshift bins, 'rv': void-radius bins self.binning = params['Bins']['binning'] # 'eqn': equal number of voids, 'lin': linearly spaced, 'log': logarithmicly spaced. Alternatively, provide a list for custom bin edges self.Nvbin = params['Bins']['Nvbin'] # Number of void bins self.Nrbin = params['Bins']['Nrbin'] # Number of radial bins in correlation function self.Nrskip = params['Bins']['Nrskip'] # Number of radial bins to skip in fit (starting from the first bin) self.rmax = params['Bins']['rmax'] # Maximum radial distance in units of void radius self.ell = params['Bins']['ell'] # Multipole orders to consider self.Nside = params['Bins']['Nside'] # Mask resolution for generating random voids self.symLOS = params['Bins']['symLOS'] # If True, assume void-centric symmetry along LOS (no odd multipoles). self.project2d = params['Bins']['project2d'] # If True, the projected correlation function is calculated from the POS vs. LOS 2d correlation function self.rescov = params['Bins']['rescov'] # If True, calculate covariance matrix for residuals between data and model (experimental!) self.datavec = params['Bins']['datavec'] # Define data vector, '1d': multipoles, '2d': POS vs. LOS 2d correlation function # Computing parameters self.Ncpu = params['Computing']['Ncpu'] # Number of CPUs to use self.Nmock = params['Computing']['Nmock'] # Number of mock realizations (for observation = 1) self.Nbin_nz = params['Computing']['Nbin_nz'] # Number of bins for redshift distributions self.Nbin_nv = params['Computing']['Nbin_nv'] # Number of bins for void abundance function self.Nspline = params['Computing']['Nspline'] # Number of nodes for splines (only for visualization in plots, does not affect fit) self.Nsmooth = params['Computing']['Nsmooth'] # Smoothing factor for splines (for no smoothing = 0) self.Nwalk = params['Computing']['Nwalk'] # Number of MCMC walkers (ideally equal to Ncpu) self.Nchain = params['Computing']['Nchain'] # Length of each MCMC chain self.Nburn = params['Computing']['Nburn'] # Initial burn-in steps of chain to discard, in units of auto-correlation time self.Nthin = params['Computing']['Nthin'] # Thinning factor of chain, in units of auto-correlation time self.Nmarg = params['Computing']['Nmarg'] # Margin size for parameter limits in plots, in units of standard deviation # Model parameters with fiducial values and priors self.par = OrderedDict(params['Model']['par']) self.prior = OrderedDict(params['Model']['prior']) # Cosmological parameters with fiducial values and priors self.par_cosmo = params['Cosmo']['par_cosmo'] self.prior_cosmo = params['Cosmo']['prior_cosmo'] self.blind = params['Cosmo']['blind'] # If True, subtract mean of cosmology posterior