<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Jim,<div class=""><br class=""></div><div class="">Thank you for the thorough clarification.<br class=""><div><blockquote type="cite" class=""><div class=""><br class=""></div><div class=""><div dir="ltr" class=""><div class="">The CModel algorithm is very much usable, and you can run it just like the algorithms in meas_base using the meas_base tasks, but just modifying your meas_base configuration:</div><div class=""><br class=""></div><div class="">import lsst.meas.modelfit  # import registers the CModel algorithm with meas_base</div><div class="">import lsst.meas.base</div><div class=""><span style="font-size:12.8000001907349px" class="">measureConfig = lsst.meas.base.</span><span style="font-size:12.8000001907349px" class="">SingleFrameMeasurementConfig()</span><br class=""></div><div class="">measureConfig.plugins.names += ["modelfit_ShapeletPsfApprox", "modelfit_CModel”]</div></div></div></blockquote><div><br class=""></div>Note that the += operator caused an error when I ran it so I just replaced it with:</div><div><div>measureConfig.plugins.names.add("modelfit_ShapeletPsfApprox")</div><div>measureConfig.plugins.names.add("modelfit_CModel”)</div><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">You can then create SingleFrameMeasurementTask and proceed as usual with that; the CModel model fitting will automatically be included. </div></div></div></blockquote><div><br class=""></div>Confirmed. modelfit_* objects are now in the table schema. </div><div><br class=""></div><div>However I do run into the following error when some of the CModelAlgorithms are being run on the detected object:</div><div><br class=""></div><div><pre style="box-sizing: border-box; overflow: auto; font-size: 14px; padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 17.000059127807617px; word-break: break-all; word-wrap: break-word; border: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; white-space: pre-wrap; vertical-align: baseline;" class=""><span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);">---------------------------------------------------------------------------</span>
<span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);">FatalAlgorithmError</span>                       Traceback (most recent call last)
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);"><ipython-input-11-1ff7722999a9></span> in <span class="ansicyan" style="box-sizing: border-box; color: rgb(70, 130, 180);"><module><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">()</span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">      3</span> <span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">      4</span> <span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);"># Apply the measurement routines to the exposure using the sources as input</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">----> 5<span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);"> </span>measure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>run<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>exposure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> sources<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box;">      6</span> <span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box;">      7</span> <span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);"># Now let's look at the output from some of the measurment algorithms.</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>

<span class="ansigreen" style="box-sizing: border-box;">/Users/dawson/lsst/DarwinX86/meas_base/10.1+1/python/lsst/meas/base/sfm.pyc</span> in <span class="ansicyan" style="box-sizing: border-box; color: rgb(70, 130, 180);">run<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(self, measCat, exposure, noiseImage, exposureId)</span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">    309</span>             <span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);"># Then insert the parent footprint, and measure that</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">    310</span>             noiseReplacer<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>insertSource<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>measParentRecord<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>getId<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">--> 311<span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);">             </span>self<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>callMeasure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>measParentRecord<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> exposure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box;">    312</span>             <span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);"># Finally, process both the parent and the child set through measureN</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box;">    313</span>             self<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>callMeasureN<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>measParentCat<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">[</span>parentIdx<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">:</span>parentIdx<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">+</span><span class="ansicyan" style="box-sizing: border-box; color: rgb(70, 130, 180);">1</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">]</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> exposure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>

<span class="ansigreen" style="box-sizing: border-box;">/Users/dawson/lsst/DarwinX86/meas_base/10.1+1/python/lsst/meas/base/base.pyc</span> in <span class="ansicyan" style="box-sizing: border-box; color: rgb(70, 130, 180);">callMeasure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(self, measRecord, *args, **kwds)</span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">    409</span>         <span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">for</span> plugin <span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">in</span> self<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>plugins<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>iter<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">:</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">    410</span>             <span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">try</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">:</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">--> 411<span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);">                 </span>plugin<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>measure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>measRecord<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> <span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">*</span>args<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> <span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">**</span>kwds<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box;">    412</span>             <span class="ansigreen" style="box-sizing: border-box;">except</span> FATAL_EXCEPTIONS<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">:</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box;">    413</span>                 <span class="ansigreen" style="box-sizing: border-box;">raise</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>

<span class="ansigreen" style="box-sizing: border-box;">/Users/dawson/lsst/DarwinX86/meas_modelfit/10.1+4/python/lsst/meas/modelfit/cmodel.pyc</span> in <span class="ansicyan" style="box-sizing: border-box; color: rgb(70, 130, 180);">measure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(self, measRecord, exposure)</span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">     51</span> <span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">     52</span>     <span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">def</span> measure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>self<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> measRecord<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> exposure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">:</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">---> 53<span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);">         </span>self<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>algorithm<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>measure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>measRecord<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> exposure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box;">     54</span> <span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box;">     55</span>     <span class="ansigreen" style="box-sizing: border-box;">def</span> fail<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>self<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> measRecord<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> error<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">=</span>None<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">:</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>

<span class="ansigreen" style="box-sizing: border-box;">/Users/dawson/lsst/DarwinX86/meas_modelfit/10.1+4/python/lsst/meas/modelfit/modelfitLib.pyc</span> in <span class="ansicyan" style="box-sizing: border-box; color: rgb(70, 130, 180);">measure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(self, *args)</span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">   6685</span>         measure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>CModelAlgorithm self<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> SourceRecord measRecord<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> ExposureF exposure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> SourceRecord refRecord<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">   6686</span>         """
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">-> 6687<span class="ansired" style="box-sizing: border-box; color: rgb(139, 0, 0);">         <span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">return</span> _modelfitLib<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">.</span>CModelAlgorithm_measure<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>self<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> <span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">*</span>args<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">   6688</span> <span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>
<span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">   6689</span>     <span class="ansigreen" style="box-sizing: border-box; color: rgb(0, 100, 0);">def</span> fail<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">(</span>self<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">,</span> <span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">*</span>args<span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">)</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);">:</span><span class="ansiblue" style="box-sizing: border-box; color: rgb(0, 0, 139);"></span>

<span class="ansired" style="box-sizing: border-box;">FatalAlgorithmError</span>: 
  File "src/<a href="http://CModel.cc" class="">CModel.cc</a>", line 1205, in shapelet::MultiShapeletFunction lsst::meas::modelfit::CModelAlgorithm::_processInputs(afw::table::SourceRecord &, const afw::image::Exposure<PixelT> &) const [PixelT = float]
    Exposure has no valid Calib {0}
lsst::meas::base::FatalAlgorithmError: 'Exposure has no valid Calib'</span></span></span></span></span></span></span></span></span></span></span></pre><div class=""><br class=""></div></div><div>I am not sure what `Calib` it needs. A wild guess: Is it looking for some calibrations that might be generated when processing a raw image or stack of raw images, where as I am running it on a “preprocessed” postage stamp (i.e. background subtracted)?</div></div><div><br class=""></div><div>Thank you again for all your help,</div><div>Will</div><div><br class=""></div><div><br class=""></div></body></html>