Everybody needs crampons
Sherpa is a fitting environment in which Chandra data (and really, X-ray data from any observatory) can be analyzed. It has just undergone a major update and now runs on python. Or allows python to run. Something like that. It is a very powerful tool, but I can never remember how to use it, and I have an amazing knack for not finding what I need in the documentation. So here is a little cheat sheet (which I will keep updating as and when if I learn more):
On Help:
- In general, to get help, use:
ahelp "something"(note the quotes) - Even more useful, type:
? wildcardto get a list of all commands that include thewildcard - You can also do a form of autocomplete: type TAB after writing half a command to get a list of all possible completions.
Data I/O:
- To read in your PHA file, use:
load_pha() - Often for Chandra spectra, the background is included in that same file. In any case, to read it in separately, use:
load_bkg()- Q: should it be loaded in to the same dataID as the source?
- A: Yes.
- A: When the background counts are present in the same file, they can be read in separately and assigned to the background via
set_bkg('src',get_data('bkg')), so counts from a different file can be assigned as background to the current spectrum.
- To read in the corresponding ARF, use:
load_arf()- Q:
load_bkg_arf()for the background — should it be done before or afterload_bkg(), or does it matter? - A: does not matter
- Q:
- To read in the corresponding RMF, use:
load_rmf()- Q:
load_bkg_rmf()for the background, and same question as above - A: same answer as above; does not matter.
- Q:
- To see the structure of the data, type:
print(get_data())andprint(get_bkg()) - To select a subset of channels to analyze, use:
notice_id() - To subtract background from source data, use:
subtract() - To not subtract, to undo the subtraction, etc., use:
unsubtract() - To plot useful stuff, use:
plot_data(), plot_bkg(), plot_arf(), plot_model(), plot_fit(),etc. - (Q: how in god’s name does one avoid plotting those damned error bars? I know error bars are necessary, but when I have a spectrum with 8192 bins, I don’t want it washed out with silly 1-sigma Poisson bars. And while we are asking questions, how do I change the units on the y-axis to counts/bin? A: rumors say that
plot_data(1,yerr=0)should do the trick, but it appears to be still in the development version.)
Fitting:
- To fit model to the data, command it to:
fit() - To get error bars on the fit parameters, use:
projection()(orcovar(), but why deliberately use a function that is guaranteed to underestimate your error bars?) - Defining models appears to be much easier now. You can use syntax like:
set_source(ModelName.ModelID+AnotherModel.ModelID2)(where you can distinguish between different instances of the same type of model using the ModelID — e.g.,set_source(xsphabs.abs1*powlaw1d.psrc+powlaw1d.pbkg)) - To see what the model parameter values are, type:
print(get_model()) - To change statistic, use: set_stat() (options are various
chisqtypes,cstat,andcash) - To change the optimization method, use:
set_method()(options arelevmar, moncar, neldermead, simann, simplex)
Timestamps:
v1:2007-dec-18v2:2008-feb-20
Leave a comment