Coverage for /wheeldirectory/casa-6.7.0-12-py3.10.el8/lib/py/lib/python3.10/site-packages/casatasks/private/task_specfit.py: 85%
33 statements
« prev ^ index » next coverage.py v7.6.4, created at 2024-11-01 07:19 +0000
« prev ^ index » next coverage.py v7.6.4, created at 2024-11-01 07:19 +0000
2##########################################################################
3# task_specfit.py
4#
5# Copyright (C) 2008, 2009
6# Associated Universities, Inc. Washington DC, USA.
7#
8# This script is free software; you can redistribute it and/or modify it
9# under the terms of the GNU Library General Public License as published by
10# the Free Software Foundation; either version 2 of the License, or (at your
11# option) any later version.
12#
13# This library is distributed in the hope that it will be useful, but WITHOUT
14# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
16# License for more details.
17#
18# You should have received a copy of the GNU Library General Public License
19# along with this library; if not, write to the Free Software Foundation,
20# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
21#
22# Correspondence concerning AIPS++ should be adressed as follows:
23# Internet email: casa-feedback@nrao.edu.
24# Postal address: AIPS++ Project Office
25# National Radio Astronomy Observatory
26# 520 Edgemont Road
27# Charlottesville, VA 22903-2475 USA
28#
29# <author>
30# Dave Mehringer
31# </author>
32#
33# <summary>
34# Fit 1 dimensional gaussians and/or polynomial
35# </summary>
36#
37# <reviewed reviwer="" date="" tests="" demos="">
38# </reviewed>
39#
40# <prerequisite>
41# <ul>
42#
43# </ul>
44# </prerequisite>
45#
46# <etymology>
47# specfit => spec(trum) fit(ter)
48# but in general it can be used for any image axis
49# </etymology>
50#
51# <synopsis>
52# specfit fits models to 1-d profiles. It is built on top of ia.fitprofile()
53# </synopsis>
54#
55# <example>
56# specfit(imagename="myline.im", ngauss=2, poly=3, model="mymodel.im", multi=true, residual="myresid.im")
57#
58# </example>
59#
60# <motivation>
61# To make users happy, cf https://bugs.aoc.nrao.edu/browse/CAS-607
62# </motivation>
63#
65###########################################################################
67import sys
68import glob
69import time
71from casatools import image
72from casatasks import casalog
74from .ialib import write_image_history, get_created_images
77def specfit(
78 imagename, box, region, chans, stokes, axis, mask, ngauss,
79 poly, estimates, minpts, multifit, model, residual, amp, amperr,
80 center, centererr, fwhm, fwhmerr, integral, integralerr, wantreturn,
81 stretch, logresults, pampest, pcenterest, pfwhmest, pfix,
82 gmncomps, gmampcon, gmcentercon, gmfwhmcon, gmampest, gmcenterest,
83 gmfwhmest, gmfix, logfile, append, pfunc, goodamprange, goodcenterrange,
84 goodfwhmrange, sigma, outsigma
85):
86 casalog.origin('specfit')
87 retval = None
88 myia = image()
89 myia.dohistory(False)
90 try:
91 if (not myia.open(imagename)):
92 raise Exception("Cannot create image analysis tool using " + imagename)
94 target_time = time.time()
95 retval = myia.fitprofile(
96 box=box, region=region, chans=chans,
97 stokes=stokes, axis=axis, mask=mask,
98 ngauss=ngauss, poly=poly,
99 estimates=estimates, minpts=minpts,
100 multifit=multifit, model=model,
101 residual=residual, amp=amp, amperr=amperr,
102 center=center, centererr=centererr,
103 fwhm=fwhm, fwhmerr=fwhmerr,
104 integral=integral, integralerr=integralerr,
105 stretch=stretch, logresults=logresults,
106 pampest=pampest, pcenterest=pcenterest,
107 pfwhmest=pfwhmest, pfix=pfix,
108 gmncomps=gmncomps, gmampcon=gmampcon,
109 gmcentercon=gmcentercon, gmfwhmcon=gmfwhmcon,
110 gmampest=gmampest, gmcenterest=gmcenterest,
111 gmfwhmest=gmfwhmest, gmfix=gmfix, logfile=logfile,
112 append=append, pfunc=pfunc, goodamprange=goodamprange,
113 goodcenterrange=goodcenterrange, goodfwhmrange=goodfwhmrange,
114 sigma=sigma, outsigma=outsigma
115 )
117 try:
118 param_names = specfit.__code__.co_varnames[:specfit.__code__.co_argcount]
119 local_vars = locals( )
120 param_vals = [local_vars[p] for p in param_names]
122 ims = [model, residual]
123 for x in [amp, amperr, center, centererr, fwhm, fwhmerr, integral, integralerr]:
124 if x:
125 ims.extend(get_created_images(x, target_time))
126 for im in ims:
127 write_image_history(im, sys._getframe().f_code.co_name,param_names, param_vals, casalog)
129 except Exception as instance:
130 casalog.post("*** Error \'%s\' updating HISTORY" % (instance), 'WARN')
132 finally:
133 myia.done()
134 if (wantreturn):
135 return retval
136 if (retval):
137 del retval