The photred code (Bender et al. 2001 (http://dx.doi.org/10.1007/10854354_182001defi.conf...96B) and Gabasch et al. 2004 (http://dx.doi.org/10.1051/0004-6361:200359092004A&A...421...41G)) provides a way to derive redshifts from photometric observations.
WARNING: The code currently uses the MAG_ISO fluxes and magnitudes from the SExtractor catalogs. For SourceLists generated from images with different seeing, the colors will be inaccurate, and the derived photometric redshifts as well.
The user interface consists of two major Python classes, PhotRedConfig and PhotRedCatalog. The PhotRedConfig contains the information about the filters and SEDs used. In PhotRedCatalog the used SourceLists, the two resulting SourceLists with the best-fitting stellar and galactic SEDs and redshifts are stored, as well as an AssociateList of all these lists to allow easy access to the complete information about a given object.
awe> from astro.main.PhotRedCatalog import *
imports all the needed classes from PhotRedCatalog into the current AWE session.
The PhotRedConfig class needs some input calibration files that are stored on the dataserver. In most cases these should be already available in the system. If not, at the end of this HOW-TO, instructions are given on how to import Filters and SEDs.
The PhotRedFilter stores the transmission curve of the filter and is associated with an Astro-WISE Filter object.
awe> filt = (Filter.name == '#842' )[0] awe> pf = (PhotRedFilter.filter == filt )[0]
A PhotRedSED object stores the unprocessed SED of a model galaxy, a table of wavelengths and fluxes, and is referenced by a name given on import, e.g. 'mod_e' for an elliptical galaxy.
awe> pse = (PhotRedSED.sed_name == 'mod_e.sed' )[0] awe> ps1 = (PhotRedSED.sed_name == 'mod_s210.sed' )[0]
The PhotRedStarlib stores a collection of PhotRedSEDs of different stars. It is referenced by the filename of the list of SED names.
awe> starlib=(PhotRedStarlib.filename=='starlib_pickles.lis')[0]
The PhotRedConfig takes a combination of SEDs and filter names, creates the processed SEDs and Starlib and stores these and other information relevant for PhotRed itself. A PhotRedConfig object is referenced by a unique name, given at creation. This allows the reuse of an existing PhotRedConfig object.
The number of filters selected at creation time can be larger than the number of filters used for PhotRed (as long as the filters of all the SourceLists given to PhotRedCatalog are present in the configuration. Thus it is advisable to create the PhotRedConfig with all PhotRedFilters available, making the combination of SEDs reusable with different combinations of SourceLists.
awe> pc = PhotRedConfig() awe> pc.SEDs=[pse,ps1,ps2,ps3] awe> pc.filters=[pfu,pfb,pfv,pfr,pfi] awe> pc.starlib=(PhotRedStarlib.filename=='starlib_pickles.lis')[0] awe> pc.name='MyPhotRedConfig' awe> pc.make()
The PhotRedCatalog is the main component, doing the actual work determining the best fitting stellar / galactic SED. It reads in the SEDs processed by PhotRedConfig, redshifts them and calculates the least-squares fit of the magnitudes obtained from the combination of the redshifted SEDs and the filter curves against the observed data. The least-squares fit is determined by minimizing:
The probability PT
As input it takes the SourceLists and PhotRedConfig. The
pr.master stores the master SourceList against which the
association of the other SourceLists is done. It has to be in the
SourceLists array as well, to allow correlation between the
SourceLists, the extinction and model_error arrays.
Additionally, individual values for extinction (used for relative corrections
of the photometric calibration of the individual SourceLists) and
model_errors (to allow some spread between the distinct SEDs) can be
specified. The length and the order of the arrays must in both cases be the
same as the length iof the list of sourcelists.
The PhotRedCatalog object can be assigned a name for future reference.
The resulting SourceLists are created and stored in the database by
calling the make function:
The resulting SourceLists are stored under in the PhotRedCatalog object
as:
and
and associate with the master AssociateList.
For visual inspection a plot of the best-fitting SED, the best-fitting stellar
SED, the datapoints and the redshift probability distribution can be done by
calling:
Import the needed Python classes:
Create a configuration. This is only needed if no suitable configuration is
present in the system, because existing configurations could and should be
reused. First select the respective PhotRedFilter objects from the database,
then select the SEDs you want to use from the database,
and create the PhotRedConfig object using the standard starlib.
To create the photometric redshifts, a PhotRedConfig object and a list of
SourceLists is needed. First select the PhotRedConfig and the SourceLists from the database:
With these, the PhotRedCatalog object can be created. Using the V-Band
data (in this example) as the master SourceList and the MAG_APER
magnitudes, only objects detected in all 5 filters are associated.
Once the object is made, all data is stored in the pr.associate_list
AssociateList.
The ingestion of new / additional SEDs or filter lightcurves is a
straightforward process.
The input file for PhotRedFilter is a simple ASCII file with two columns,
wavelength in Ångstroms and the transmission of the filter at this
wavelength. The values should be sorted with ascending wavelength, and to avoid
possible problems contain 2 lines with 0 transmission at the beginning and at
the end. The canonical extension for these objects is ".filter".
To create the Python object, a new PhotRedFilter object pointing to the
file on disk is created, and the corresponding Filter object is selected.
After this the make routine stores the relevant metadata in the database and
the filter curve object on the dataserver.
The input file for PhotRedSED is a simple text file as well, again with
two columns, wavelength in Ångstroms and the normalized flux of the SED. A
new PhotRedSED object pointing to the file on disk is created, and the
object's make method is invoked. The metadata is again stored in the
database, and the file stored on the dataserver.
awe> pr = PhotRedCatalog()
awe> pr.config=pc
awe> pr.master=sV
awe> pr.sourcelists=[sU,sV,sB,sR,sI]
awe> pr.extinc=[0.,0.,0.,0.,0.]
awe> pr.model_error=[0.,0.,0.,0.,0.]
awe> pr.name='FDF_UBRI'
awe> pr.make()
1.1.3 The output SourceLists
awe> pr.datpz1 # Data of best-fitting galactic SED
awe> pr.datstar # Data of best-fitting stellar SED
1.1.4 The visualization routines
awe> pr.plot( 23 ) # For the object with AID 23 in associate_list
1.1.5 An example from users view
awe> from astro.main.PhotRedCatalog import *
1.1.5.1 PhotRedConfig
awe> pf1 = (PhotRedFilter.filename == '#843.filter' )[0]
awe> pf2 = (PhotRedFilter.filename == '#844.filter' )[0]
awe> pf3 = (PhotRedFilter.filename == '#846.filter' )[0]
awe> pf4 = (PhotRedFilter.filename == '#878.filter' )[0]
awe> pf5 = (PhotRedFilter.filename == '#879.filter' )[0]
awe> ps01 = (PhotRedSED.filename == 'manucci_soc.sed' )[0]
awe> ps02 = (PhotRedSED.filename == 'manucci_sac.sed' )[0]
awe> ps03 = (PhotRedSED.filename == 'manucci_sbc.sed' )[0]
awe> ps04 = (PhotRedSED.filename == 'mod_e.sed' )[0]
awe> ps05 = (PhotRedSED.filename == 'mod_s010.sed' )[0]
awe> ps06 = (PhotRedSED.filename == 'mod_s020.sed' )[0]
awe> ps07 = (PhotRedSED.filename == 'mod_s030.sed' )[0]
...
awe> pc = PhotRedConfig()
awe> pc.SEDs=[pse,ps1,ps2,ps3]
awe> pc.filters=[pfu,pfb,pfv,pfr,pfi]
awe> pc.starlib=(PhotRedStarlib.filename=='starlib_pickles.lis')[0]
awe> pc.name='WFI_BgRIz'
awe> pc.make()
1.1.5.2 PhotRedCatalog
awe> pc=(PhotRedConfig.name=='PhotRedConfig-1114174946.26')[0]
awe> sU=(SourceList.SLID==5)[0]
awe> sB=(SourceList.SLID==6)[0]
awe> sV=(SourceList.SLID==7)[0]
awe> sR=(SourceList.SLID==8)[0]
awe> sI=(SourceList.SLID==9)[0]
awe> pr = PhotRedCatalog()
awe> pr.config=pc
awe> pr.master=sV
awe> pr.sourcelists=[sU,sV,sB,sR,sI]
awe> pr.extinc=[0.,0.,0.,0.,0.]
awe> pr.model_error=[0.1,0.1,0.1,0.1,0.1]
awe> pr.min_num_sources=5
awe> pr.mag='MAG_APER'
awe> pr.flux='FLUX_APER'
awe> pr.fluxerr='FLUXERR_APER
awe> pr.name='photoz_1'
awe> pr.make()
1.1.6 Ingestion of Filters and SEDs
1.1.6.1 PhotRedFilter
awe> photredfilter = PhotRedFilter( pathname='wfi_r.filter')
awe> photredfilter.filter=(Filter.mag_id=='Cousins R')
awe> photredfilter.make()
1.1.6.2 PhotRedSED
awe> photredsed = PhotRedSED( pathname='mod\_e.sed')
awe> photredsed.make()