Exemplo n.º 1
0
 def write_parnames(par_keys, latexpars=None):
     basename = output_dir + 'mcmc_chain' + output_tag + '.txt'
     basename = basename[0:-6]
     info_message('writing paramnames file...')
     parnames = open(basename + '.paramnames', 'w')
     if latexpars == None:
         latexpars = {}
         for key in par_keys:
             latexpars[key] = key
     for key in par_keys:
         parnames.write(key + '\t' + latexpars[key] + '\n')
     parnames.close()
Exemplo n.º 2
0
		def write_parnames( par_keys, latexpars=None ):
			basename = output_dir+'mcmc_chain'+output_tag+'.txt'
			basename = basename[0:-6]
			info_message( 'writing paramnames file...' )
			parnames = open( basename+'.paramnames', 'w')
			if latexpars == None:
				latexpars = {}
				for key in par_keys:
					latexpars[key] = key
			for key in par_keys:
				parnames.write( key + '\t' + latexpars[key] + '\n' )
			parnames.close()
Exemplo n.º 3
0
		def write_chain( chain ):
			info_message( ' Saving chains...' )
			ofile = output_dir+'mcmc_chain'+output_tag+'.txt'
			#print ofile
			ch = []
			for c in chains:
				a = [ c['weight'], c['chi2'] ]
				a.extend( c['parameters'].values() )
				#print a
				ch.append( a )
			ch = np.array( ch )
			#print ch[0:2,:]
			#print ch.shape
			np.savetxt( ofile, ch, fmt='%-16.7E' )
			info_message( ' Done.\n' )				
Exemplo n.º 4
0
 def write_chain(chain):
     info_message(' Saving chains...')
     ofile = output_dir + 'mcmc_chain' + output_tag + '.txt'
     #print ofile
     ch = []
     for c in chains:
         a = [c['weight'], c['chi2']]
         a.extend(c['parameters'].values())
         #print a
         ch.append(a)
     ch = np.array(ch)
     #print ch[0:2,:]
     #print ch.shape
     np.savetxt(ofile, ch, fmt='%-16.7E')
     info_message(' Done.\n')
Exemplo n.º 5
0
    def marginalize(self, chains, nbins=21, skiplines=0.3, thin=1):
        # ------------------------------
        def extract_parameter(chains, par_key):
            w = []
            v = []
            clen = len(chains)
            for i in range(clen):
                w.append(chains[i]['weight'])
                v.append(chains[i]['parameters'][par_key])
            v = np.array(v)
            w = np.array(w)
            return v, w

        # ------------------------------
        def compute_histogram(value, weight, nbins=21):
            minv = np.min(value)
            maxv = np.max(value)
            deltav = (maxv - minv) / (nbins)
            intervals = np.array(range(nbins + 1)) * deltav + minv
            #print intervals
            v = []
            m = []
            for ibin in range(nbins):
                v.append((intervals[ibin] + intervals[ibin + 1]) / 2.)
                select = np.array((value >= intervals[ibin])) * np.array(
                    (value < intervals[ibin + 1]))
                m.append(np.sum(weight[select]))
            v = np.array(v)
            m = np.array(m, dtype=np.float) / np.sum(m)
            return v, m

        chlen = len(chains)
        if isinstance(skiplines, float):
            chlen = int(chlen * skiplines)
        elif isinstance(skiplines, int):
            chlen = skiplines
        chains = chains[chlen::thin]
        info_message('marginalize: Processing ' + str(len(chains)) +
                     ' samples')
        npars = len(chains[0]['parameters'])
        par_keys = chains[0]['parameters'].keys()

        marginals = {}
        for key in par_keys:
            v, w = extract_parameter(chains, key)
            v, m = compute_histogram(v, w, nbins=nbins)
            marginals[key] = (v, m)
        return marginals
Exemplo n.º 6
0
	def marginalize( self, chains, nbins=21, skiplines=0.3, thin=1):
		# ------------------------------
		def extract_parameter( chains, par_key):
			w = []
			v = []
			clen = len( chains )
			for i in range(clen):
				w.append( chains[i]['weight'])
				v.append( chains[i]['parameters'][par_key])
			v = np.array(v)
			w = np.array(w)
			return v,w
			
		# ------------------------------
		def compute_histogram( value, weight, nbins=21):
			minv = np.min( value )
			maxv = np.max( value )
			deltav = (maxv-minv)/(nbins)
			intervals = np.array(range(nbins+1)) * deltav + minv
			#print intervals
			v = []
			m = []
			for ibin in range(nbins):
				v.append( (intervals[ibin]+intervals[ibin+1])/2. )
				select = np.array( (value >= intervals[ibin]) ) * np.array( (value < intervals[ibin+1]) )
				m.append( np.sum(weight[select]) )
			v = np.array(v)
			m = np.array(m, dtype=np.float) / np.sum(m)
			return v, m

		chlen = len( chains )
		if isinstance(skiplines,float):
			chlen = int( chlen * skiplines )		
		elif isinstance(skiplines, int):
			chlen = skiplines
		chains = chains[chlen::thin]
		info_message( 'marginalize: Processing '+str(len(chains))+' samples' )
		npars = len( chains[0]['parameters'] )
		par_keys = chains[0]['parameters'].keys()
		
		marginals = {}
		for key in par_keys:
			v,w = extract_parameter( chains, key )
			v,m = compute_histogram( v, w, nbins=nbins )
			marginals[key] = (v,m)
		return marginals
Exemplo n.º 7
0
    def get_covmat(self, chains, skiplines=0.3, thin=1, print_key=False):
        chlen = len(chains)
        if isinstance(skiplines, float):
            chlen = int(chlen * skiplines)
        elif isinstance(skiplines, int):
            chlen = skiplines
        chains = chains[chlen::thin]
        chlen = len(chains)
        info_message('get_covmat: Processing ' + str(chlen) + ' samples')
        npars = len(chains[0]['parameters'])
        par_keys = chains[0]['parameters'].keys()

        covmat = np.zeros((npars, npars), dtype=np.float64)
        meanpars = np.zeros(npars, dtype=np.float64)

        # Compute mean parameter values and reshaping parameter chains
        pchains = []
        # print_key = False
        for ch in chains:
            prow = []
            for ikey, key in enumerate(par_keys):
                if print_key:
                    print key
                prow.append(ch['parameters'][key])
                meanpars[ikey] += ch['parameters'][key]
            pchains.append(prow)
            if print_key:
                print_key = False

        meanpars /= chlen
        pchains = np.array(pchains)
        pchains.shape
        for ich in range(chlen):
            for ipar in range(npars):
                covmat[ipar, :] += (pchains[ich, ipar] - meanpars[ipar]) * (
                    pchains[ich, :] - meanpars[:])

        covmat /= chlen

        return covmat
Exemplo n.º 8
0
	def get_covmat( self, chains, skiplines=0.3, thin=1, print_key=False ):
		chlen = len( chains )
		if isinstance(skiplines,float):
			chlen = int( chlen * skiplines )		
		elif isinstance(skiplines, int):
			chlen = skiplines
		chains = chains[chlen::thin]
		chlen = len( chains )
		info_message( 'get_covmat: Processing '+str(chlen)+' samples' )
		npars = len( chains[0]['parameters'] )
		par_keys = chains[0]['parameters'].keys()

		covmat = np.zeros( (npars,npars), dtype=np.float64 )
		meanpars = np.zeros( npars, dtype=np.float64 )
		
		# Compute mean parameter values and reshaping parameter chains
		pchains = []
		# print_key = False
		for ch in chains:
			prow = []
			for ikey,key in enumerate(par_keys):
				if print_key:
					print key
				prow.append( ch['parameters'][key] )
				meanpars[ikey] += ch['parameters'][key]
			pchains.append( prow )
			if print_key:
				print_key = False

		meanpars /= chlen
		pchains = np.array( pchains )
		pchains.shape
		for ich in range(chlen):
			for ipar in range(npars):
				covmat[ipar,:] += (pchains[ich,ipar]-meanpars[ipar]) * (pchains[ich,:]-meanpars[:])		

		covmat /= chlen
		
		return covmat
Exemplo n.º 9
0
			basename = output_dir+'mcmc_chain'+output_tag+'.txt'
			basename = basename[0:-6]
			info_message( 'writing paramnames file...' )
			parnames = open( basename+'.paramnames', 'w')
			if latexpars == None:
				latexpars = {}
				for key in par_keys:
					latexpars[key] = key
			for key in par_keys:
				parnames.write( key + '\t' + latexpars[key] + '\n' )
			parnames.close()
		# ------

		code = 'sampler'

		info_message( 'Starting MCMC...' )
		info_message( '\t output_tag: '+output_tag )

		if len(output_tag) != 0 and output_tag[0] != '_':
			output_tag = '_'+output_tag
		if check_point != None:
			if check_point[0] != '_':
				check_point = '_'+check_point

		loginf = 1.e2
		zero_like = np.exp( -0.5*loginf )
		
		npars = len( parameters )
		if Verbosity:
			info_message( 'INFO - Number of parameters: '+str(npars), code=code )
Exemplo n.º 10
0
            basename = basename[0:-6]
            info_message('writing paramnames file...')
            parnames = open(basename + '.paramnames', 'w')
            if latexpars == None:
                latexpars = {}
                for key in par_keys:
                    latexpars[key] = key
            for key in par_keys:
                parnames.write(key + '\t' + latexpars[key] + '\n')
            parnames.close()

        # ------

        code = 'sampler'

        info_message('Starting MCMC...')
        info_message('\t output_tag: ' + output_tag)

        if len(output_tag) != 0 and output_tag[0] != '_':
            output_tag = '_' + output_tag
        if check_point != None:
            if check_point[0] != '_':
                check_point = '_' + check_point

        loginf = 1.e2
        zero_like = np.exp(-0.5 * loginf)

        npars = len(parameters)
        if Verbosity:
            info_message('INFO - Number of parameters: ' + str(npars),
                         code=code)