def plot(galactic, rect): pf = MonteCarlo.make_allsky_isotropic_pyfits(galactic=galactic, proj='AIT') h,d=pf[0].header,pf[0].data ax = make_allsky_axes_from_header(fig, rect=rect, header=h, lon_center=0.) im = ax.imshow(pf[0].data, origin="lower", cmap=plt.cm.gray_r) ax.grid() overlay(ax)
def batch_gtltcube(evfile, scfile, outfile, savedir, njobs=100, **kwargs): """ Create a folder savedir where a livetime cube can be computd in parallel. """ if not exists(savedir): os.makedirs(savedir) first,last=MonteCarlo.get_time_from_ft2(scfile) times = np.linspace(first, last, njobs + 1) l = max(len('%d' % t) for t in times) tmins = times[:-1] tmaxs = times[1:] for tmin,tmax in zip(tmins,tmaxs): tmin_fmt='%0*d' % (l,tmin) tmax_fmt='%0*d' % (l,tmax) subdir = join(savedir,'times_%s_%s' % (tmin_fmt,tmax_fmt)) if not exists(subdir): os.makedirs(subdir) cut_evfile=os.path.basename(evfile).replace('.fits','_%s_%s.fits') gtselect_command = format_command('gtselect', infile=evfile, outfile=cut_evfile, ra=0, dec=0, rad=180, tmin=tmin, tmax=tmax, emin=1, emax=1e6, zmax=180) ltcube_kwargs = dict( evfile=cut_evfile, outfile='ltcube_%s_%s.fits' % (tmin_fmt,tmax_fmt), scfile=scfile, tmin=tmin, tmax=tmax,) ltcube_kwargs.update(kwargs) ltcube_command = format_command('gtltcube',**ltcube_kwargs) jobfile = join(subdir,'run.sh') open(jobfile,'w').write('\n\n'.join([gtselect_command,ltcube_command])) submit_all = join(savedir,'submit_all.sh') open(submit_all,'w').write('submit_all */run.sh $@') merge = join(savedir,'merge.py') open(merge,'w').write(dedent("""\ from lande.fermi.data.livetime import recursive_gtltsum from glob import iglob recursive_gtltsum(iglob("*/ltcube*.fits"),"%s")""" % outfile))
es = ExtendedSource( name=extended, model=model_mc, spatial_model=sm, ) sim_es = ps ft1 = join(tempdir,'ft1.fits') binfile = join(tempdir, 'binned.fits') mc=MonteCarlo( sources=[bg.copy(), sim_es.copy()], seed=i, irf=irf, ft1=ft1, ft2=ft2, roi_dir=skydir_mc, maxROI=10, emin=emin, emax=emax, gtifile=ltcube, ) mc.simulate() print 'Done Simulating, now fitting' ds=DataSpecification( ft1files = ft1, ft2files = ft2, ltcube = ltcube,
savedir='/nfs/slac/g/ki/ki03/lande/fermi/data/monte_carlo/test_mapcube_cutting/plot_example/datadir_l_%d_b_%d' % (roi_dir.l(), roi_dir.b()) emin=1e3 emax=1e5 diffdir='/afs/slac/g/glast/groups/diffuse/rings/2year/' diffuse_sources = get_default_diffuse(diffdir=diffdir, gfile='ring_2year_P76_v0.fits', ifile='isotrop_2year_P76_source_v0.txt') ft2 = dict2fgl['ft2'] ltcube = dict2fgl['ltcube'] ft1 = join(savedir,'ft1.fits') m=MonteCarlo( sources=diffuse_sources, emin = emin, emax = emax, irf='P7SOURCE_V6', roi_dir=roi_dir, maxROI=10, seed=0, ft1=ft1, ft2=ft2, gtifile = ltcube, savedir=savedir) m.simulate()
def main(inputfile,tag,idstart=None,idstop=None,debug=False,diffdir=None,tstart=0, tstop=8000, ft2file='None', emin=100, emax=1e5, seed=1000,irf='P7SOURCE_V6', dry_run=True, gtifile=None, zmax=None): if not diffdir is None: diffdir = diffdir.replace("~",os.getenv('HOME')) fid = verifyFile(inputfile) catalogxml = None if fid == 1: catalogxml = inputfile elif fid == 2: catalogxml = cFITS2XML(inputfile) if not os.getenv("LSB_JOBID")==None: Outdir = NamedTemporaryFile(dir='/scratch/').name # data is stored in Outdir/raw else: Outdir = NamedTemporaryFile(dir='/tmp/').name # data is stored in Outdir/raw print '*OUTDIR* %s'%Outdir Emin = 10 Emax = 1e6 print '*INFO*: current pfile settings',os.getenv('PFILES'); # AllSky by default, need a ROI object to proceed os.mkdir(Outdir) modXML = AddCatalog(inputfile,idstart,idstop,Outdir,diffdir=diffdir) # now we check whether we have files that refer to nowhere checkXML(modXML) ps,ds = None,None ps,ds=parse_sources(modXML) sources = ps+ds # this is only necessary to make use of the roi_montecarlo.py code montecarlo_object = MonteCarlo( # ST-09-29-00 sources = sources, gtifile=gtifile, zmax = zmax, tempbase = Outdir, irf = irf, ft1 = Outdir+'/raw/ft1.fits', ft2 = ft2file, tstart = tstart, tstop = tstop, emin = emin, emax = emax, seed = seed, savedir = Outdir+'/raw/' ) montecarlo_object.simulate(dry_run=dry_run) # now assemble list of files # check if we have parts tags = tag.split(";") storedir = os.getenv("SKYMODEL_DIR")+"/" for t in tags: storedir+="/"+t print '*INFO* store data here: %s'%storedir files = os.listdir(os.path.join(Outdir,'raw')) try: os.mkdir(storedir) except OSError: print '*WARNING* dir %s exists already, overwriting'%storedir removePath(storedir) # now move for f in files: infile = os.path.join(Outdir+'/raw/',f) outfile= os.path.join(storedir,f) move(infile,outfile) # finally, clean up removePath(Outdir)