<!-- 
RSS generated by JIRA (8.3.4#803005-sha1:1f96e09b3c60279a408a2ae47be3c745f571388b) at Sat Feb 10 16:48:45 JST 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>PFS-JIRA</title>
    <link>https://pfspipe.ipmu.jp/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.3.4</version>
        <build-number>803005</build-number>
        <build-date>13-09-2019</build-date>
    </build-info>


<item>
            <title>[INFRA-36] Write quick-start guide for Stella</title>
                <link>https://pfspipe.ipmu.jp/jira/browse/INFRA-36</link>
                <project id="10001" key="INFRA">Software Development Infrastructure</project>
                    <description>&lt;p&gt;Provide a document that describes how to install, test and start using Stella. It should be checked in to a git repository.&lt;/p&gt;

&lt;p&gt;Detailed formatting is not important for this purpose: it should be clear, but whether it&apos;s plain text, Doxygen, reStructuredText, LaTeX or something else is immaterial at this stage. Focus on content.&lt;/p&gt;</description>
                <environment></environment>
        <key id="10909">INFRA-36</key>
            <summary>Write quick-start guide for Stella</summary>
                <type id="10001" iconUrl="https://pfspipe.ipmu.jp/jira/secure/viewavatar?size=xsmall&amp;avatarId=10515&amp;avatarType=issuetype">Story</type>
                                            <priority id="3" iconUrl="https://pfspipe.ipmu.jp/jira/images/icons/priorities/major.svg">Major</priority>
                        <status id="10002" iconUrl="https://pfspipe.ipmu.jp/jira/images/icons/statuses/generic.png" description="The issue is resolved, reviewed, and merged">Done</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="aritter">aritter</assignee>
                                    <reporter username="swinbank">swinbank</reporter>
                        <labels>
                    </labels>
                <created>Fri, 1 Jul 2016 19:16:09 +0000</created>
                <updated>Fri, 9 Sep 2016 17:20:21 +0000</updated>
                            <resolved>Fri, 9 Sep 2016 17:20:21 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                <comments>
                            <comment id="11058" author="aritter" created="Wed, 6 Jul 2016 06:26:42 +0000"  >&lt;p&gt;What type of installation should be performed for lsst? binary, from source, lsstsw,...?&lt;/p&gt;</comment>
                            <comment id="11070" author="swinbank" created="Wed, 6 Jul 2016 12:42:35 +0000"  >&lt;p&gt;I&apos;d think that &lt;tt&gt;eups distrib install&lt;/tt&gt; would be a good starting point.&lt;/p&gt;</comment>
                            <comment id="11129" author="aritter" created="Mon, 18 Jul 2016 23:35:46 +0000"  >&lt;p&gt;Should I add Biases and Darks to drp_stella_data so people can test all commands in the quick-start guide? Here is what I have now:&lt;/p&gt;

&lt;p&gt;====================================&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Install lsst binary distribution (&lt;a href=&quot;https://pipelines.lsst.io/install/conda.html&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://pipelines.lsst.io/install/conda.html&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Install git-lfs (&lt;a href=&quot;https://git-lfs.github.com/&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://git-lfs.github.com/&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Install matplotlib&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;conda install matplotlib&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Create a directory for the PFS-DRP repositories:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;mkdir ~/stella-git&lt;br/&gt;
cd ~/stella-git&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Clone the relevant git repositories:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;git clone &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/drp_stella.git&lt;/a&gt;&lt;br/&gt;
git clone &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella_data.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/drp_stella_data.git&lt;/a&gt;&lt;br/&gt;
git clone &lt;a href=&quot;https://github.com/Subaru-PFS/obs_pfs.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/obs_pfs.git&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Install a newer version of eigen:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;eups distrib install eigen 3.2.5.lsst2&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Declare the git repositories:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;eups declare obs_pfs 1.0 -c -f Linux64 -r ~/stella-git/drp_stella&lt;br/&gt;
eups declare drp_stella_data 1.0 -c -f Linux64 -r ~/stella-git/drp_stella_data&lt;br/&gt;
eups declare drp_stella 1.0 -c -f Linux64 -r ~/stella-git/drp_stella&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Setup the pipeline:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;setup drp_stella 1.0 -v&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Build the pipeline:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;cd drp_stella&lt;br/&gt;
scons opt=3 -j8&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Create the defects database:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;cd ../obs_pfs&lt;br/&gt;
scons opt=3 -j8&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Now for using the pipeline. First we need to create a directory (actually 2) where we want to store pipeline outputs. Let&apos;s&lt;br/&gt;
assume you have a directory ~/spectra and do everything related to spectra there:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;mkdir ~/spectra/PFS&lt;br/&gt;
mkdir ~/spectra/PFS/CALIB&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Let&apos;s further assume your raw fits files are in ~/spectra/raw/. Configuration parameters can be passed to the pipeline task&lt;br/&gt;
either on the command line or in a config file (e.g. ~/stella-git/obs_pfs/config/pfs/ingest.py, see following example). You &lt;br/&gt;
can list all possible configuration parameters by appending a &quot;--show config&quot; to the parameter list.&lt;br/&gt;
To ingest the raw images:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;cd ~/spectra&lt;br/&gt;
ingestImages.py &apos;PFS&apos; &apos;raw/*.fits&apos; --output=&apos;PFS&apos; --mode=link -C ~/stella-git/obs_pfs/config/pfs/ingest.py&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;You can now inspect the created SQL database with e.g. sqlitebrowser (&lt;a href=&quot;http://sqlitebrowser.org/&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;http://sqlitebrowser.org/&lt;/a&gt;).&lt;br/&gt;
Now that we have our database we can start reducing things. We should probably start with the Biases. If the biases we&lt;br/&gt;
want to reduce were observed on 2015-12-22 on spectrograph 2, arm red (r) at site S:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;reduceBias.py &apos;PFS&apos; --calib &apos;PFS/CALIB&apos; --output &apos;PFS&apos; --calibId calibVersion=bias arm=r calibDate=2015-12-22 spectrograph=2 --do-exec --id field=BIAS dateObs=2015-12-22 --clobber-config --nodes=1&lt;br/&gt;
--procs=1&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Note the 2 config parameters --nodes and --procs at the end. These parameters are required by tasks which are&lt;br/&gt;
parallelized. Sometimes running the code in parallel can lead to problems (in most cases caused by the 3rd-party libraries&lt;br/&gt;
used), to setting nodes and procs to 1 is a safe choice. &#8212;-clobber-config is needed if you re-run the task with different&lt;br/&gt;
config parameters. The config used for each run is written to PFS/config/bias.py and the task won&#8217;t run if you change&lt;br/&gt;
parameters, unless you say &#8212;-clobber-config.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Now that we have a master bias we need to inject that too into our database:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;genCalibRegistry.py --root=&apos;PFS/CALIB&apos; --camera PFS --validity 180&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Now we can create a bias-subtracted Dark and ingest that into our database:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;reduceDark.py &apos;PFS&apos; --calib &apos;PFS/CALIB&apos; --output &apos;PFS&apos; --calibId calibVersion=dark arm=r calibDate=2015-12-22 spectrograph=2 --do-exec --id field=DARK dateObs=2015-12-22 --nodes=1 --procs=1 -C ~/stella-git/obs_pfs/config/pfs/dark.py&lt;br/&gt;
genCalibRegistry.py --root=&apos;PFS/CALIB&apos; --camera PFS --validity 180&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;and a bias and dark-subtracted flat (currently only used to trace the apertures of the fiber traces):&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;reduceFlat.py &apos;PFS&apos; --calib &apos;PFS/CALIB&apos; --calibId calibVersion=flat arm=r calibDate=2015-12-22 filter=r spectrograph=2 --do-exec --id field=FLAT arm=r dateObs=2015-12-22 spectrograph=2 --loglevel &apos;info&apos; --config isr.doBias=&apos;True&apos; isr.doDark=&apos;True&apos; isr.doLinearize=False --output &apos;PFS&apos; --nodes=1 --procs=1 --clobber-config&lt;/p&gt;

&lt;p&gt;genCalibRegistry.py --root=&apos;PFS/CALIB&apos; --camera PFS --validity 180&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Since we have the Bias and Dark we can also run the Instrumental-Signature Removal (ISR) task for our Arc spectrum:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;detrend.py &apos;PFS&apos; --calib=&apos;PFS/CALIB&apos; --id arm=&#8216;r&#8217; spectrograph=2 dateObs=&apos;2015-12-22&apos; field=&apos;ARC&apos; -C ~/stella-git/obs_pfs/config/pfs/detrend.py --output &apos;PFS&apos;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;We now have the postISRCCD images and can extract and wavelength-calibrate our CdHgKrNeXe Arc with the visit&lt;br/&gt;
number 4:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;reduceArc.py &apos;PFS&apos; --id visit=4 --wLenFile $OBS_PFS_DIR&apos;/pfs/RedFiberPixels.fits.gz&apos; --lineList $OBS_PFS_DIR&apos;/pfs/lineLists/CdHgKrNeXe_red.fits&apos; --loglevel &apos;info&apos; --calib &apos;PFS/CALIB/&apos; --output &apos;PFS&apos;&lt;/p&gt;</comment>
                            <comment id="11206" author="aritter" created="Fri, 29 Jul 2016 02:32:09 +0000"  >&lt;p&gt;Added quick-start guide to drp_stella/doc/quick-start_guide.text in tickets/&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/INFRA-36&quot; title=&quot;Write quick-start guide for Stella&quot; class=&quot;issue-link&quot; data-issue-key=&quot;INFRA-36&quot;&gt;&lt;del&gt;INFRA-36&lt;/del&gt;&lt;/a&gt;.&lt;br/&gt;
Raw fits files to run the examples are in drp_stella_data/tests/data/raw (tickets/&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/INFRA-36&quot; title=&quot;Write quick-start guide for Stella&quot; class=&quot;issue-link&quot; data-issue-key=&quot;INFRA-36&quot;&gt;&lt;del&gt;INFRA-36&lt;/del&gt;&lt;/a&gt;)&lt;/p&gt;</comment>
                            <comment id="11210" author="swinbank" created="Fri, 29 Jul 2016 15:39:22 +0000"  >&lt;p&gt;Looks like something went wrong here: the &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella/commit/db7819a505fa812e6227f86cc91c78fa37afa439&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;most recent commit&lt;/a&gt; to &lt;tt&gt;tickets/&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/INFRA-36&quot; title=&quot;Write quick-start guide for Stella&quot; class=&quot;issue-link&quot; data-issue-key=&quot;INFRA-36&quot;&gt;&lt;del&gt;INFRA-36&lt;/del&gt;&lt;/a&gt;&lt;/tt&gt; actually &lt;b&gt;removed&lt;/b&gt; the existing &lt;tt&gt;doc/install.text&lt;/tt&gt; without adding anything.&lt;/p&gt;</comment>
                            <comment id="11211" author="swinbank" created="Fri, 29 Jul 2016 15:39:47 +0000"  >&lt;p&gt;Putting this back in progress until there&apos;s something to review!&lt;/p&gt;</comment>
                            <comment id="11215" author="aritter" created="Sat, 30 Jul 2016 00:59:55 +0000"  >&lt;p&gt;Made sure that install.text is now in drp_stella/doc/install.text (tickets/&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/INFRA-36&quot; title=&quot;Write quick-start guide for Stella&quot; class=&quot;issue-link&quot; data-issue-key=&quot;INFRA-36&quot;&gt;&lt;del&gt;INFRA-36&lt;/del&gt;&lt;/a&gt;)...&lt;/p&gt;</comment>
                            <comment id="11225" author="swinbank" created="Sun, 7 Aug 2016 18:55:01 +0000"  >&lt;p&gt;I&apos;ve left a number of comments on the &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella/pull/3&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;pull request&lt;/a&gt;. The brief summary is that the installation instructions seem basically fine, although I&apos;ve made a few suggestions for places where they could be simplified or clarified. The demo reduction confused me for quite a while until I figured out that the data in drp_stella_data doesn&apos;t actually correspond to your example command lines: you keep referring to &lt;tt&gt;arm=r spectrograph=2&lt;/tt&gt;, but the data seems to be from &lt;tt&gt;arm=n spectrograph=1&lt;/tt&gt;. Even once I&apos;d got that figured out, the final &lt;tt&gt;reduceArc.py&lt;/tt&gt; command fails because it has a hard-coded path referring to your home directory in it.&lt;/p&gt;

&lt;p&gt;More generally, I&apos;m a bit worried about the level of the demo documentation. What is your intended audience for this? It seems to go into a lot of detail in some places (e.g. suggesting that users might want to inspect the registry database with a SQLite browser) but to skim over the top of what you&apos;re actually doing and why. A paragraph or two of more introductory material might help, as would cutting out all the complexity related to how tasks are constructed and run. For example, why do you use both config override files and command line options? why use &lt;tt&gt;--clobber-config&lt;/tt&gt;? None of this seems relevant to somebody who simply wants to start processing PFS data as quickly as possible.&lt;/p&gt;</comment>
                            <comment id="11233" author="rhl" created="Wed, 10 Aug 2016 19:04:00 +0000"  >&lt;p&gt;Please make this 7-bit clean; the line&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;export DRP_STELLA=&amp;lt;E2&amp;gt;&amp;lt;80&amp;gt;&amp;lt;9C&amp;gt;&amp;lt;your_target_directory&amp;gt;&amp;lt;E2&amp;gt;&amp;lt;80&amp;gt;&amp;lt;9D&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;should read&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;export DRP_STELLA=&quot;&amp;lt;your_target_directory&amp;gt;&quot;&lt;/p&gt;&lt;/blockquote&gt;</comment>
                            <comment id="11237" author="rhl" created="Thu, 11 Aug 2016 02:33:42 +0000"  >&lt;p&gt;Here is an annotated version of install.tst; my comments start with RHL&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The following notes should allow you to install the LSST stack and the PFS DRP.&lt;br/&gt;
After the installation procedure example commands are given to show you how to&lt;br/&gt;
use the pipeline. The commands have been tested on an Arch Linux machine as well&lt;br/&gt;
as on Mac OS X.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Install the LSST binary distribution (&lt;a href=&quot;https://pipelines.lsst.io/install/conda.html&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://pipelines.lsst.io/install/conda.html&lt;/a&gt;)&lt;br/&gt;
  Here it should not matter whether you install anaconda or miniconda. Don&#8217;t forget&lt;br/&gt;
  to setup the LSST environment as mentioned on the website:&lt;br/&gt;
RHL Please note that there&apos;s only a need to install lsst-distrib, not lsst-sims&lt;br/&gt;
RHL Which version of LSST code are you assuming?  Please at least specify a minimum version&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;source activate lsst&lt;br/&gt;
source eups-setups.sh&lt;/p&gt;

&lt;p&gt;RHL Explain why we need this, and please provide slightly more detailed instructions&lt;br/&gt;
RHL E.g.:&lt;br/&gt;
RHL    Follow the instructions at &lt;a href=&quot;https://git-lfs.github.com&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://git-lfs.github.com&lt;/a&gt; to installing git-lfs (e.g. using homebrew&lt;br/&gt;
RHL    on os/x), then type&lt;br/&gt;
RHL       git lfs install&lt;br/&gt;
RHL    there&apos;s no need to issue any &quot;git lfs track&quot; commands&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Install git-lfs (&lt;a href=&quot;https://git-lfs.github.com/&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://git-lfs.github.com/&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Install matplotlib and gcc:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL Why?  lsst-distrib installs matplotlib.   Why are we installing gcc &amp;#8211; we should be using cc&lt;br/&gt;
RHL at least on os/x&lt;br/&gt;
conda install matplotlib gcc&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Create a directory for the PFS-DRP repositories:&lt;br/&gt;
RHL Please explain that the use of DRP_STELLA is purely for convenience in this tutorial&lt;br/&gt;
export DRP_STELLA=&#8220;&amp;lt;your_target_directory&amp;gt;&#8221;&lt;br/&gt;
RHL It&apos;s better to say,&lt;br/&gt;
RHL    export DRP_STELLA=$HOME/stella-git&lt;br/&gt;
RHL as expanding ~ is a bash extension.  Also, why the quotes?&lt;br/&gt;
RHL That suggested directory name &quot;stella-git&quot; is not all that helpful &amp;#8211; the fact that&lt;br/&gt;
RHL it&apos;s git is irrelevant, and it&apos;s more than stella.  Maybe $HOME/PFS?&lt;br/&gt;
(e.g. export DRP_STELLA=&quot;~/stella-git&quot;)&lt;br/&gt;
mkdir -p $DRP_STELLA&lt;br/&gt;
cd $DRP_STELLA&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
	&lt;li&gt;Clone the relevant git repositories:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;git clone &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/drp_stella.git&lt;/a&gt;&lt;br/&gt;
git clone &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella_data.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/drp_stella_data.git&lt;/a&gt;&lt;br/&gt;
git clone &lt;a href=&quot;https://github.com/Subaru-PFS/obs_pfs.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/obs_pfs.git&lt;/a&gt;&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Set $EUPS_PKGROOT&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;export EUPS_PKGROOT=&quot;https://sw.lsstcorp.org/eupspkg/&quot;&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Install Eigen with the unsupported modules:&lt;br/&gt;
RHL  I see that lsst-distrib is still installing 3.2.5.lsst1 (I&apos;ve just prodded square about this).&lt;br/&gt;
RHL  Please monitor this, and remove these instructions ASAP;  in the meantime make it clear&lt;br/&gt;
RHL  that setting EUPS_PKGROOT and doing this install are temporary workarounds.&lt;br/&gt;
eups distrib install eigen 3.2.5.lsst2&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
	&lt;li&gt;Declare the git repositories:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL Why 0.1?  You didn&apos;t tell them to checkout a 0.1 branch, &lt;br/&gt;
RHL Also, you should almost never declare a working version;  install and then declare the installed&lt;br/&gt;
RHL version&lt;br/&gt;
RHL&lt;br/&gt;
RHL Before you install, make sure that everythings works &amp;#8211; the versions of the LSST stack that you&lt;br/&gt;
RHL were using will be frozen into the installation.&lt;/p&gt;

&lt;p&gt;eups declare obs_pfs 0.1 -c -r $DRP_STELLA/obs_pfs&lt;br/&gt;
eups declare drp_stella_data 0.1 -c -r $DRP_STELLA/drp_stella_data&lt;br/&gt;
eups declare drp_stella 0.1 -c -r $DRP_STELLA/drp_stella&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Setup the pipeline. As obs_pfs and drp_stella_data are required packages they are set up automatically:&lt;br/&gt;
RHL Why specify -v?&lt;br/&gt;
RHL Why 0.1 when you made drp_stella current?&lt;br/&gt;
setup drp_stella 0.1 -v&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;During this step the environment variables $DRP_STELLA_DIR, $DRP_STELLA_DATA_DIR, and $OBS_PFS_DIR are &lt;br/&gt;
automatically created as well:&lt;br/&gt;
RHL set, rather than created.&lt;/p&gt;

&lt;p&gt;echo $DRP_STELLA_DIR&lt;/p&gt;

&lt;p&gt;should show you:&lt;br/&gt;
RHL No, it&apos;ll show you the value of $DRP_STELLA expanded.  E.g. /Users/aritter/PFS/drp_stella&lt;br/&gt;
RHL But why do they need to know this?&lt;br/&gt;
$DRP_STELLA/drp_stella&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Build the pipeline:&lt;br/&gt;
RHL Why did you have them declare a local version before building it?&lt;br/&gt;
RHL See notes about declaring git versions.  Please use setup -r . (maybe -j) instead.&lt;br/&gt;
RHL&lt;br/&gt;
RHL In fact, I think that the order matters.&lt;br/&gt;
RHL Don&apos;t you need to setup and build obs_pfs first?&lt;br/&gt;
RHL then drp_stella_data, then drp_stella?&lt;br/&gt;
RHL&lt;br/&gt;
RHL obs_pfs generates lots of chatter (e.g.&lt;br/&gt;
RHL   type(config) =  &amp;lt;class &apos;lsst.afw.cameraGeom.cameraConfig.CameraConfig&apos;&amp;gt;&lt;br/&gt;
RHL   dir(ccd) =  [&apos;_&lt;em&gt;class&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;del&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;delattr&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;dict&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;doc&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;format&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;getattr&lt;/em&gt;&lt;br/&gt;
RHL ...&lt;br/&gt;
RHL as well as some silly LSST warnings that we should get fixed and that you should warn people to&lt;br/&gt;
RHL ignore:&lt;br/&gt;
RHL   CameraMapper WARNING: Calibration root directory not found: ./CALIB&lt;br/&gt;
RHL   ...&lt;br/&gt;
RHL&lt;br/&gt;
RHL And don&apos;t you need a more recent sconsUtils and a --filterWarn flag to deal with warnings about typemaps?&lt;br/&gt;
RHL Actually I see that those fixes didn&apos;t get into sconsUtils (until tonight!) so there are some unavoidable&lt;br/&gt;
RHL warnings &amp;#8212; you should probably mention them.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;cd $DRP_STELLA/drp_stella&lt;br/&gt;
scons opt=3&lt;br/&gt;
cd ../obs_pfs&lt;br/&gt;
scons opt=3&lt;/p&gt;

&lt;p&gt;RHL tests/PSF.py generates warnings&lt;br/&gt;
RHL   afw.image.MaskedImage WARNING: Expected extension type not found: IMAGE&lt;br/&gt;
RHL   : Empty WCS extension, using FITS header&lt;br/&gt;
RHL what is causing these?  Is there a workaround (or a ticket)?&lt;/p&gt;

&lt;p&gt;RHL tests/FiberTraces.py generates 1217 lines of chatter, and Spectra.py 615.  Where is it coming from?  Most of it looks&lt;br/&gt;
RHL like debugging stuff that should be disabled (is it an incorrect logging level?)&lt;/p&gt;

&lt;p&gt;RHL tests/testDrp.py fails without returning an error code.  It&apos;s due to the os/x 10.11 SIP stuff I assume,&lt;br/&gt;
RHL but the lack of an error code is a bug.  Also, I&apos;m not sure that we should be using python unittest to&lt;br/&gt;
RHL test shell scripts.  How does ci_hsc do this?&lt;/p&gt;

&lt;p&gt;RHL Not setting up drp_pipeline_data says, &quot;Nothing to be done for tests&quot;; it should at least print a warning,&lt;br/&gt;
RHL and preferably skip them using unittest&apos;s decorators &amp;#8211; but I&apos;m not sure LSST does this bit right&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Now for using the pipeline. Raw test data are in $DRP_STELLA_DATA_DIR/tests/data/raw/ (3 Biases, 3 Darks, 1 Flat, 1 Arc).&lt;br/&gt;
RHL why do we need to know this?&lt;br/&gt;
First we need to create a directory (actually 2) where we want to store pipeline outputs. &lt;br/&gt;
Let&apos;s assume you want to store the pipeline outputs in a directory ~/spectra/PFS:&lt;br/&gt;
RHL: Please explain why you are introducing an environment variable.&lt;br/&gt;
RHL: If you want them to use this one again, they should either put it in a startup file,&lt;br/&gt;
RHL or use eups to manage it (probably a better solution)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;export SPECTRA_DIR=&quot;~/spectra/PFS&quot;&lt;br/&gt;
mkdir -p $SPECTRA_DIR/CALIB&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;We need to tell the LSST stack which mapper to use:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;echo &quot;lsst.obs.pfs.PfsMapper&quot; &amp;gt; $SPECTRA_DIR/_mapper&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Configuration parameters can be passed to the pipeline task either on the command line or in a config file&lt;br/&gt;
(e.g. $OBS_PFS_DIR/config/pfs/ingest.py). You can list all possible configuration parameters by appending a &lt;br/&gt;
&quot;--show config&quot; to the parameter list.&lt;br/&gt;
RHL  If we&apos;re providing this sort of information (and I don&apos;t think it should be in an install document)&lt;br/&gt;
RHL  document --show config=glob&lt;br/&gt;
To ingest the raw images:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL  Why use cd and . rather than specifying the output?&lt;br/&gt;
cd $SPECTRA_DIR&lt;br/&gt;
ingestImages.py . $DRP_STELLA_DATA_DIR/tests/data/raw/*.fits --output . --mode link&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Now that we have our database we can start reducing things. We start with reducing the Biases. The data we&lt;br/&gt;
want to reduce were observed on 2015-12-22 on spectrograph 2, arm red (r) at site S.&lt;br/&gt;
RHL  What does site S mean?&lt;br/&gt;
Note the 2 config parameters --nodes and --procs at the end. These parameters are required by tasks which are &lt;br/&gt;
parallelized. Sometimes running the code in parallel can lead to problems (in most cases caused by the 3rd-party &lt;br/&gt;
libraries used), so setting nodes and procs to 1 is a safe choice.&lt;br/&gt;
RHL  Under what circumstances and why does it lead to problems?  Are there jira issues?&lt;br/&gt;
RHL  What are the default values of nodes and procs?&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;reduceBias.py . --calib CALIB --output . --calibId calibVersion=bias arm=r calibDate=2015-12-22 spectrograph=2 --do-exec --id field=BIAS dateObs=2015-12-22 --nodes 1 --procs 1&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Now that we have a master bias we need to ingest that too into our database:&lt;br/&gt;
RHL  What exactly does the genCalibRegistry.py command do?  What is the 180?&lt;br/&gt;
genCalibRegistry.py --root CALIB --camera PFS --validity 180&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
	&lt;li&gt;Now we can create a bias-subtracted Dark and ingest that into our database:&lt;br/&gt;
RHL presumably trimmed too, and scaled?  I.e. a master dark used in further processing&lt;br/&gt;
RHL and isn&apos;t this a different database?  And do you mean database or registry?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;reduceDark.py . --calib CALIB --output . --calibId calibVersion=dark arm=r calibDate=2015-12-22 spectrograph=2 --do-exec --id field=DARK dateObs=2015-12-22 --nodes 1 --procs 1&lt;br/&gt;
genCalibRegistry.py --root CALIB --camera PFS --validity 180&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;and a bias and dark-subtracted flat (currently only used to trace the apertures of the fiber traces):&lt;br/&gt;
RHL  Now I&apos;m confused.  What are we making here?  A flat field?  Why the parenthetical comment?  Where&lt;br/&gt;
RHL  do dithered flats fit into this?&lt;br/&gt;
RHL  What does the --calib CALIB option mean; is it --CALIB ./CALIB?  Does it default?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;reduceFlat.py . --calib CALIB --calibId calibVersion=flat arm=r calibDate=2015-12-22 filter=r spectrograph=2 --do-exec --id field=FLAT arm=r dateObs=2015-12-22 spectrograph=2 --output . --nodes 1 --procs 1&lt;br/&gt;
genCalibRegistry.py --root=CALIB --camera PFS --validity 180&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Since we have the Bias and Dark we can also run the Instrumental-Signature Removal (ISR) task for our Arc spectrum:&lt;br/&gt;
RHL Still writing into the same place?  Why not using --rerun?&lt;br/&gt;
RHL Do I need to specify all those flags?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;detrend.py . --calib CALIB --output . --id arm=r spectrograph=2 dateObs=2015-12-22 field=ARC&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;We now have the postISRCCD images and can extract and wavelength-calibrate our CdHgKrNeXe Arc with the visit&lt;br/&gt;
number 4:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL  Why do I need the --wLenFile?  If it&apos;s calibration, why isn&apos;t it in the calibration registy?  Or maybe&lt;br/&gt;
RHL  in obs_pfs?&lt;br/&gt;
RHL  Why isn&apos;t the line list in the calib registry?&lt;br/&gt;
reduceArc.py . --output . --calib CALIB --id visit=4 --wLenFile $OBS_PFS_DIR/pfs/RedFiberPixels.fits.gz --lineList $OBS_PFS_DIR/pfs/lineLists/CdHgKrNeXe_red.fits&lt;/p&gt;

&lt;p&gt;RHL I didn&apos;t run these data commands (yet).  How chatty are they at various loglevels (e.g. INFO)?&lt;/p&gt;&lt;/blockquote&gt;</comment>
                            <comment id="11239" author="rhl" created="Thu, 11 Aug 2016 20:50:07 +0000"  >&lt;p&gt;Here&apos;s an update to that document with new comments noted as RHL2.   Andreas has addressed some of these (and some of the RHLs too), but I haven&apos;t removed the older comments.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The following notes should allow you to install the LSST stack and the PFS DRP.&lt;br/&gt;
After the installation procedure example commands are given to show you how to&lt;br/&gt;
use the pipeline. The commands have been tested on an Arch Linux machine as well&lt;br/&gt;
as on Mac OS X.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Install the LSST binary distribution (&lt;a href=&quot;https://pipelines.lsst.io/install/conda.html&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://pipelines.lsst.io/install/conda.html&lt;/a&gt;)&lt;br/&gt;
  Here it should not matter whether you install anaconda or miniconda. Don&#8217;t forget&lt;br/&gt;
  to setup the LSST environment as mentioned on the website:&lt;br/&gt;
RHL Please note that there&apos;s only a need to install lsst-distrib, not lsst-sims&lt;br/&gt;
RHL Which version of LSST code are you assuming?  Please at least specify a minimum version&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;source activate lsst&lt;br/&gt;
source eups-setups.sh&lt;/p&gt;

&lt;p&gt;RHL Explain why we need this, and please provide slightly more detailed instructions&lt;br/&gt;
RHL E.g.:&lt;br/&gt;
RHL    Follow the instructions at &lt;a href=&quot;https://git-lfs.github.com&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://git-lfs.github.com&lt;/a&gt; to installing git-lfs (e.g. using homebrew&lt;br/&gt;
RHL    on os/x), then type&lt;br/&gt;
RHL       git lfs install&lt;br/&gt;
RHL    there&apos;s no need to issue any &quot;git lfs track&quot; commands&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Install git-lfs (&lt;a href=&quot;https://git-lfs.github.com/&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://git-lfs.github.com/&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Install matplotlib and gcc:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL Why?  lsst-distrib installs matplotlib.   Why are we installing gcc &amp;#8211; we should be using cc&lt;br/&gt;
RHL at least on os/x&lt;br/&gt;
conda install matplotlib gcc&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Create a directory for the PFS-DRP repositories:&lt;br/&gt;
RHL Please explain that the use of DRP_STELLA is purely for convenience in this tutorial&lt;br/&gt;
export DRP_STELLA=&#8220;&amp;lt;your_target_directory&amp;gt;&#8221;&lt;br/&gt;
RHL It&apos;s better to say,&lt;br/&gt;
RHL    export DRP_STELLA=$HOME/stella-git&lt;br/&gt;
RHL as expanding ~ is a bash extension.  Also, why the quotes?&lt;br/&gt;
RHL That suggested directory name &quot;stella-git&quot; is not all that helpful &amp;#8211; the fact that&lt;br/&gt;
RHL it&apos;s git is irrelevant, and it&apos;s more than stella.  Maybe $HOME/PFS?&lt;br/&gt;
(e.g. export DRP_STELLA=&quot;~/stella-git&quot;)&lt;br/&gt;
mkdir -p $DRP_STELLA&lt;br/&gt;
cd $DRP_STELLA&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
	&lt;li&gt;Clone the relevant git repositories:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;git clone &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/drp_stella.git&lt;/a&gt;&lt;br/&gt;
git clone &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella_data.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/drp_stella_data.git&lt;/a&gt;&lt;br/&gt;
git clone &lt;a href=&quot;https://github.com/Subaru-PFS/obs_pfs.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/obs_pfs.git&lt;/a&gt;&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Set $EUPS_PKGROOT&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;export EUPS_PKGROOT=&quot;https://sw.lsstcorp.org/eupspkg/&quot;&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Install Eigen with the unsupported modules:&lt;br/&gt;
RHL  I see that lsst-distrib is still installing 3.2.5.lsst1 (I&apos;ve just prodded square about this).&lt;br/&gt;
RHL  Please monitor this, and remove these instructions ASAP;  in the meantime make it clear&lt;br/&gt;
RHL  that setting EUPS_PKGROOT and doing this install are temporary workarounds.&lt;br/&gt;
eups distrib install eigen 3.2.5.lsst2&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
	&lt;li&gt;Declare the git repositories:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL Why 0.1?  You didn&apos;t tell them to checkout a 0.1 branch, &lt;br/&gt;
RHL Also, you should almost never declare a working version;  install and then declare the installed&lt;br/&gt;
RHL version&lt;br/&gt;
RHL&lt;br/&gt;
RHL Before you install, make sure that everythings works &amp;#8211; the versions of the LSST stack that you&lt;br/&gt;
RHL were using will be frozen into the installation.&lt;/p&gt;

&lt;p&gt;eups declare obs_pfs 0.1 -c -r $DRP_STELLA/obs_pfs&lt;br/&gt;
eups declare drp_stella_data 0.1 -c -r $DRP_STELLA/drp_stella_data&lt;br/&gt;
eups declare drp_stella 0.1 -c -r $DRP_STELLA/drp_stella&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Setup the pipeline. As obs_pfs and drp_stella_data are required packages they are set up automatically:&lt;br/&gt;
RHL Why specify -v?&lt;br/&gt;
RHL Why 0.1 when you made drp_stella current?&lt;br/&gt;
setup drp_stella 0.1 -v&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;During this step the environment variables $DRP_STELLA_DIR, $DRP_STELLA_DATA_DIR, and $OBS_PFS_DIR are &lt;br/&gt;
automatically created as well:&lt;br/&gt;
RHL set, rather than created.&lt;/p&gt;

&lt;p&gt;echo $DRP_STELLA_DIR&lt;/p&gt;

&lt;p&gt;should show you:&lt;br/&gt;
RHL No, it&apos;ll show you the value of $DRP_STELLA expanded.  E.g. /Users/aritter/PFS/drp_stella&lt;br/&gt;
RHL But why do they need to know this?&lt;br/&gt;
$DRP_STELLA/drp_stella&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Build the pipeline:&lt;br/&gt;
RHL Why did you have them declare a local version before building it?&lt;br/&gt;
RHL See notes about declaring git versions.  Please use setup -r . (maybe -j) instead.&lt;br/&gt;
RHL&lt;br/&gt;
RHL In fact, I think that the order matters.&lt;br/&gt;
RHL Don&apos;t you need to setup and build obs_pfs first?&lt;br/&gt;
RHL then drp_stella_data, then drp_stella?&lt;br/&gt;
RHL&lt;br/&gt;
RHL obs_pfs generates lots of chatter (e.g.&lt;br/&gt;
RHL   type(config) =  &amp;lt;class &apos;lsst.afw.cameraGeom.cameraConfig.CameraConfig&apos;&amp;gt;&lt;br/&gt;
RHL   dir(ccd) =  [&apos;_&lt;em&gt;class&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;del&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;delattr&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;dict&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;doc&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;format&lt;/em&gt;&lt;em&gt;&apos;, &apos;&lt;/em&gt;&lt;em&gt;getattr&lt;/em&gt;&lt;br/&gt;
RHL ...&lt;br/&gt;
RHL as well as some silly LSST warnings that we should get fixed and that you should warn people to&lt;br/&gt;
RHL ignore:&lt;br/&gt;
RHL   CameraMapper WARNING: Calibration root directory not found: ./CALIB&lt;br/&gt;
RHL   ...&lt;br/&gt;
RHL&lt;br/&gt;
RHL And don&apos;t you need a more recent sconsUtils and a --filterWarn flag to deal with warnings about typemaps?&lt;br/&gt;
RHL Actually I see that those fixes didn&apos;t get into sconsUtils (until tonight!) so there are some unavoidable&lt;br/&gt;
RHL warnings &amp;#8212; you should probably mention them.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;cd $DRP_STELLA/drp_stella&lt;br/&gt;
scons opt=3&lt;br/&gt;
cd ../obs_pfs&lt;br/&gt;
scons opt=3&lt;/p&gt;

&lt;p&gt;RHL tests/PSF.py generates warnings&lt;br/&gt;
RHL   afw.image.MaskedImage WARNING: Expected extension type not found: IMAGE&lt;br/&gt;
RHL   : Empty WCS extension, using FITS header&lt;br/&gt;
RHL what is causing these?  Is there a workaround (or a ticket)?&lt;/p&gt;

&lt;p&gt;RHL tests/FiberTraces.py generates 1217 lines of chatter, and Spectra.py 615.  Where is it coming from?  Most of it looks&lt;br/&gt;
RHL like debugging stuff that should be disabled (is it an incorrect logging level?)&lt;/p&gt;

&lt;p&gt;RHL tests/testDrp.py fails without returning an error code.  It&apos;s due to the os/x 10.11 SIP stuff I assume,&lt;br/&gt;
RHL but the lack of an error code is a bug.  Also, I&apos;m not sure that we should be using python unittest to&lt;br/&gt;
RHL test shell scripts.  How does ci_hsc do this?&lt;/p&gt;

&lt;p&gt;RHL Not setting up drp_pipeline_data says, &quot;Nothing to be done for tests&quot;; it should at least print a warning,&lt;br/&gt;
RHL and preferably skip them using unittest&apos;s decorators &amp;#8211; but I&apos;m not sure LSST does this bit right&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Now for using the pipeline. Raw test data are in $DRP_STELLA_DATA_DIR/tests/data/raw/ (3 Biases, 3 Darks, 1 Flat, 1 Arc).&lt;br/&gt;
RHL why do we need to know this?&lt;br/&gt;
First we need to create a directory (actually 2) where we want to store pipeline outputs. &lt;br/&gt;
Let&apos;s assume you want to store the pipeline outputs in a directory ~/spectra/PFS:&lt;br/&gt;
RHL: Please explain why you are introducing an environment variable.&lt;br/&gt;
RHL: If you want them to use this one again, they should either put it in a startup file,&lt;br/&gt;
RHL or use eups to manage it (probably a better solution)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;export SPECTRA_DIR=&quot;~/spectra/PFS&quot;&lt;br/&gt;
mkdir -p $SPECTRA_DIR/CALIB&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;We need to tell the LSST stack which mapper to use:&lt;br/&gt;
RHL2  Define mapper.  Explain what is going on here, including repositories.&lt;br/&gt;
RHL2  Have you demonstrated using a raw filesystem with no ingestion?  It should work&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;echo &quot;lsst.obs.pfs.PfsMapper&quot; &amp;gt; $SPECTRA_DIR/_mapper&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Configuration parameters can be passed to the pipeline task either on the command line or in a config file&lt;br/&gt;
(e.g. $OBS_PFS_DIR/config/pfs/ingest.py). You can list all possible configuration parameters by appending a &lt;br/&gt;
&quot;--show config&quot; to the parameter list.&lt;br/&gt;
RHL  If we&apos;re providing this sort of information (and I don&apos;t think it should be in an install document)&lt;br/&gt;
RHL  document --show config=glob&lt;br/&gt;
To ingest the raw images:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL  Why use cd and . rather than specifying the output?&lt;br/&gt;
RHL2  Actually, why do you need to specify --output at all?&lt;br/&gt;
RHL2  (Paul clarified that:  it&apos;s for the temp files such as trimmed biases.  Please add a note)&lt;br/&gt;
RHL2  It&apos;d be better to use --rerun e.g.  --rerun USERNAME/tmp  (and explain that they should&lt;br/&gt;
RHL2  substitute USERNAME)&lt;br/&gt;
RHL2&lt;br/&gt;
RHL2  I think you want&lt;br/&gt;
RHL2     ingestImages.py $SPECTRA_DIR $DRP_STELLA_DATA_DIR/tests/data/raw/*.fits --mode link -L warn&lt;br/&gt;
RHL2  And please explain the meaning of &quot;--mode link&quot;&lt;br/&gt;
RHL2  Probably it would be better to move some of your info logging up to debug; the default logging&lt;br/&gt;
RHL2  is too verbose.&lt;br/&gt;
RHL2  There are also print statements.  Please remove all of them (some by converting to log messages&lt;br/&gt;
RHL2  at appropriate levels of verbosity&lt;/p&gt;

&lt;p&gt;cd $SPECTRA_DIR&lt;br/&gt;
ingestImages.py . $DRP_STELLA_DATA_DIR/tests/data/raw/*.fits --output . --mode link&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Now that we have our database we can start reducing things. We start with reducing the Biases. The data we&lt;br/&gt;
want to reduce were observed on 2015-12-22 on spectrograph 2, arm red (r) at site S.&lt;br/&gt;
RHL  What does site S mean?&lt;br/&gt;
Note the 2 config parameters --nodes and --procs at the end. These parameters are required by tasks which are &lt;br/&gt;
parallelized. Sometimes running the code in parallel can lead to problems (in most cases caused by the 3rd-party &lt;br/&gt;
libraries used), so setting nodes and procs to 1 is a safe choice.&lt;br/&gt;
RHL  Under what circumstances and why does it lead to problems?  Are there jira issues?&lt;br/&gt;
RHL  What are the default values of nodes and procs?&lt;br/&gt;
RHL2  Why are there not sensible defaults:&lt;br/&gt;
RHL2   RuntimeError: Must specify numNodes+numProcs or numCores&lt;br/&gt;
RHL2  This error message doesn&apos;t tell you the options names (the &quot;num&quot; is confusing)&lt;br/&gt;
RHL2  What does --do-exec do?&lt;br/&gt;
RHL2  Why are we running this multi-tasked?  Can you file a ticket to get this fixed, please.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;reduceBias.py . --calib CALIB --output . --calibId calibVersion=bias arm=r calibDate=2015-12-22 spectrograph=2 --do-exec --id field=BIAS dateObs=2015-12-22 --nodes 1 --procs 1&lt;/p&gt;

&lt;p&gt;RHL2 Why do I need --calib CALIB?  I don&apos;t think you need --calib CALIB, so the preferred command would be&lt;br/&gt;
RHL2   reduceBias.py $SPECTRA_DIR --output $SPECTRA_DIR --cores 1 --id field=BIAS dateObs=2015-12-22 arm=r spectrograph=2 --calibId calibVersion=bias calibDate=2015-15-22 arm=r spectrograph=2&lt;br/&gt;
RHL2 Why do I need to specify the output?&lt;/p&gt;

&lt;p&gt;RHL2 What is&lt;br/&gt;
RHL2  --calibId calibVersion=bias&lt;br/&gt;
RHL2 needed?  Well, I know why it&apos;s because&lt;br/&gt;
RHL2        template:    &quot;BIAS/NONE/%(calibVersion)s/pfsBias-%(calibDate)s-0-%(spectrograph)1d%(arm)s.fits&quot;&lt;br/&gt;
RHL2 but why did you do that?&lt;br/&gt;
RHL2 If I omit the --calibId I get the error message&lt;br/&gt;
RHL2   RuntimeError: Unable to determine output filename from &lt;/p&gt;
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: {&amp;#39;filter&amp;#39;}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;: No registry for lookup&lt;br/&gt;
RHL2 Why is it not picking up arm and spectrograph from the inputs?  The input registry has them.&lt;br/&gt;
RHL2 There is no check for a mis-formed date (e.g. 2015-99-22)&lt;/p&gt;

&lt;p&gt;RHL2 Where is &quot;bias.isr: Set 0 BAD pixels to 0.01&quot; coming from?  What does it mean?&lt;br/&gt;
RHL2 How about &quot;: Empty WCS extension, using FITS header&quot;&lt;br/&gt;
RHL2 And also &quot;bias.isr.assembleCcd WARNING: No WCS found in input exposure&quot; &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Now that we have a master bias we need to ingest that too into our database:&lt;br/&gt;
RHL  What exactly does the genCalibRegistry.py command do?  What is the 180?&lt;br/&gt;
RHL2 Should be&lt;br/&gt;
RHL2   genCalibRegistry.py --root $SPECTRA_DIR/CALIB --camera PFS --validity 180&lt;br/&gt;
genCalibRegistry.py --root CALIB --camera PFS --validity 180&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Now we can create a bias-subtracted Dark and ingest that into our database:&lt;br/&gt;
RHL presumably trimmed too, and scaled?  I.e. a master dark used in further processing&lt;br/&gt;
RHL and isn&apos;t this a different database?  And do you mean database or registry?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL2 All comments for bias generation apply here.&lt;br/&gt;
RHL2 Why are the arguments to the different reduceXXX.py commands in different orders?  It&apos;s a bit confusing&lt;br/&gt;
reduceDark.py . --calib CALIB --output . --calibId calibVersion=dark arm=r calibDate=2015-12-22 spectrograph=2 --do-exec --id field=DARK dateObs=2015-12-22 --nodes 1 --procs 1&lt;br/&gt;
RHL2 Explain why this command needs to be repeated not just run at the end&lt;br/&gt;
genCalibRegistry.py --root CALIB --camera PFS --validity 180&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;and a bias and dark-subtracted flat (currently only used to trace the apertures of the fiber traces):&lt;br/&gt;
RHL  Now I&apos;m confused.  What are we making here?  A flat field?  Why the parenthetical comment?  Where&lt;br/&gt;
RHL  do dithered flats fit into this?&lt;br/&gt;
RHL  What does the --calib CALIB option mean; is it --CALIB ./CALIB?  Does it default?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL2 All comments for bias generation apply here.&lt;br/&gt;
RHL2 Why do I need filter=r as part of the calibId?&lt;br/&gt;
reduceFlat.py . --calib CALIB --calibId calibVersion=flat arm=r calibDate=2015-12-22 filter=r spectrograph=2 --do-exec --id field=FLAT arm=r dateObs=2015-12-22 spectrograph=2 --output . --nodes 1 --procs 1&lt;br/&gt;
genCalibRegistry.py --root=CALIB --camera PFS --validity 180&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Since we have the Bias and Dark we can also run the Instrumental-Signature Removal (ISR) task for our Arc spectrum:&lt;br/&gt;
RHL Still writing into the same place?  Why not using --rerun?&lt;br/&gt;
RHL Do I need to specify all those flags?&lt;br/&gt;
RHL2 What does detrend.py do?&lt;br/&gt;
RHL2 We should note that it doesn&apos;t (yet) flat field&lt;br/&gt;
RHL2 Why the &quot;type(config)&quot; lines?&lt;br/&gt;
RHL2 Why specify --calib CALIB?&lt;br/&gt;
RHL2 Why are we doing this in two steps (detrend.py and reduceArc.py)?&lt;br/&gt;
RHL2 If we are only processing one arc, why specify it this way, not by visit, e.g.&lt;br/&gt;
RHL2   detrend.py $SPECTRA_DIR --rerun USERNAME/tmp --id visit=4&lt;br/&gt;
RHL2 If you want to specify reducing all r2 arcs taken on 2015-12-22, please explain&lt;br/&gt;
detrend.py . --calib CALIB --output . --id arm=r spectrograph=2 dateObs=2015-12-22 field=ARC&lt;br/&gt;
RHL2 What files are produced?&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
	&lt;li&gt;We now have the postISRCCD images and can extract and wavelength-calibrate our CdHgKrNeXe Arc with the visit&lt;br/&gt;
number 4:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RHL  Why do I need the --wLenFile?  If it&apos;s calibration, why isn&apos;t it in the calibration registy?  Or maybe&lt;br/&gt;
RHL  in obs_pfs?&lt;br/&gt;
RHL  Why isn&apos;t the line list in the calib registry?&lt;br/&gt;
RHL2  Actually I see that I don&apos;t.  What are the pros and cons?&lt;br/&gt;
reduceArc.py . --output . --calib CALIB --id visit=4 --wLenFile $OBS_PFS_DIR/pfs/RedFiberPixels.fits.gz --lineList $OBS_PFS_DIR/pfs/lineLists/CdHgKrNeXe_red.fits&lt;/p&gt;

&lt;p&gt;RHL2  A generic comment:  far too much information is being printed to the screen!  At -L warn there should be basically nothing;  the LSST code doesn&apos;t obey this dictum very well, but drp_stella is worse!&lt;/p&gt;&lt;/blockquote&gt;</comment>
                            <comment id="11240" author="swinbank" created="Thu, 11 Aug 2016 21:17:50 +0000"  >&lt;p&gt;Lots of the above commentary is useful, and should be mined for tickets both for here and for the LSST stack. However, we should avoid scope creep here: it&apos;s not necessary to fix all the above in order for this document to be useful. Obviously, it &lt;b&gt;is&lt;/b&gt; necessary to correct any errors in this text before we can proceed.&lt;/p&gt;

&lt;p&gt;One thing that jumped out:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Why are we installing gcc &#8211; we should be using cc at least on os/x&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;As I recall, the aim here is to avoid ABI incompatibilities since (on Linux, at least) all the Anaconda packages were compiled with gcc 4.small and are incompatible with a modern versions. We should check what the situation is on OSX.&lt;/p&gt;</comment>
                            <comment id="11244" author="rhl" created="Fri, 12 Aug 2016 14:43:22 +0000"  >&lt;p&gt;I agree with John.  Essentially all of my comments need to be addressed, but not all as part of this ticket.  Please file tickets as appropriate (e.g. the calibId things are clearly not part of &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/INFRA-36&quot; title=&quot;Write quick-start guide for Stella&quot; class=&quot;issue-link&quot; data-issue-key=&quot;INFRA-36&quot;&gt;&lt;del&gt;INFRA-36&lt;/del&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Another example is that &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;021dd3f Replace reduceDark with constructDark&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;should not have been addressed on this ticket.&lt;/p&gt;</comment>
                            <comment id="11255" author="aritter" created="Fri, 19 Aug 2016 04:59:54 +0000"  >&lt;p&gt;Here is my response to RHL&apos;s comments:&lt;/p&gt;

&lt;p&gt;The following notes should allow you to install the LSST stack and the PFS DRP.&#8232;After the installation procedure example commands are given to show you how to&#8232;use the pipeline. The commands have been tested on an Arch Linux machine as well&#8232;as on Mac OS X.&lt;br/&gt;
	&#8226;	Install the LSST binary distribution (&lt;a href=&quot;https://pipelines.lsst.io/install/conda.html&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://pipelines.lsst.io/install/conda.html&lt;/a&gt;)&#8232;Here it should not matter whether you install anaconda or miniconda. Don&#8217;t forget&#8232;to setup the LSST environment as mentioned on the website:&lt;br/&gt;
&#8232;RHL Please note that there&apos;s only a need to install lsst-distrib, not lsst-sims&lt;br/&gt;
&#8232;RHL Which version of LSST code are you assuming? Please at least specify a minimum version&lt;br/&gt;
source activate lsst&#8232;source eups-setups.sh&lt;br/&gt;
RHL Explain why we need this, and please provide slightly more detailed instructions&#8232;&lt;br/&gt;
RHL E.g.:&lt;br/&gt;
&#8232;RHL Follow the instructions at &lt;a href=&quot;https://git-lfs.github.com&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://git-lfs.github.com&lt;/a&gt; to installing git-lfs (e.g. using homebrew&lt;br/&gt;
&#8232;RHL on os/x), then type&lt;br/&gt;
&#8232;RHL git lfs install&lt;br/&gt;
&#8232;RHL there&apos;s no need to issue any &quot;git lfs track&quot; commands&lt;/p&gt;

&lt;p&gt;AR Done&lt;/p&gt;

&lt;p&gt;	&#8226;	Install git-lfs (&lt;a href=&quot;https://git-lfs.github.com/&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://git-lfs.github.com/&lt;/a&gt;)&lt;br/&gt;
	&#8226;	Install matplotlib and gcc:&lt;br/&gt;
RHL Why? lsst-distrib installs matplotlib. Why are we installing gcc &#8211; we should be using cc&#8232;&lt;br/&gt;
RHL at least on os/x&lt;/p&gt;

&lt;p&gt;AR Removed matplotlib from the list of packages to be installed and explained why for Linux&lt;br/&gt;
AR machines we need to install gcc within anaconda&lt;/p&gt;

&lt;p&gt;&#8232;conda install matplotlib gcc&lt;br/&gt;
	&#8226;	Create a directory for the PFS-DRP repositories:&#8232;&lt;br/&gt;
RHL Please explain that the use of DRP_STELLA is purely for convenience in this tutorial&#8232;export DRP_STELLA=&#8220;&amp;lt;your_target_directory&amp;gt;&#8221;&lt;br/&gt;
&#8232;RHL It&apos;s better to say,&lt;br/&gt;
&#8232;RHL export DRP_STELLA=$HOME/stella-git&#8232;&lt;br/&gt;
RHL as expanding ~ is a bash extension. Also, why the quotes?&lt;/p&gt;

&lt;p&gt;AR Changed to $HOME, removed the quotes&lt;/p&gt;

&lt;p&gt;RHL That suggested directory name &quot;stella-git&quot; is not all that helpful &#8211; the fact that&#8232;&lt;br/&gt;
RHL it&apos;s git is irrelevant, and it&apos;s more than stella. Maybe $HOME/PFS?&#8232;&lt;/p&gt;

&lt;p&gt;AR Changed to $HOME/PFS&lt;/p&gt;

&lt;p&gt;(e.g. export DRP_STELLA=&quot;~/stella-git&quot;)&#8232;mkdir -p $DRP_STELLA&#8232;cd $DRP_STELLA&lt;br/&gt;
	&#8226;	Clone the relevant git repositories:&lt;br/&gt;
git clone &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/drp_stella.git&lt;/a&gt;&#8232;git clone &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella_data.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/drp_stella_data.git&lt;/a&gt;&#8232;git clone &lt;a href=&quot;https://github.com/Subaru-PFS/obs_pfs.git&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://github.com/Subaru-PFS/obs_pfs.git&lt;/a&gt;&lt;br/&gt;
	&#8226;	Set $EUPS_PKGROOT&lt;br/&gt;
export EUPS_PKGROOT=&quot;https://sw.lsstcorp.org/eupspkg/&quot;&lt;br/&gt;
	&#8226;	Install Eigen with the unsupported modules:&#8232;&lt;br/&gt;
RHL I see that lsst-distrib is still installing 3.2.5.lsst1 (I&apos;ve just prodded square about this).&#8232;&lt;br/&gt;
RHL Please monitor this, and remove these instructions ASAP; in the meantime make it clear&#8232;&lt;br/&gt;
RHL that setting EUPS_PKGROOT and doing this install are temporary workarounds.&lt;/p&gt;

&lt;p&gt;         AR Done&lt;/p&gt;

&lt;p&gt;&#8232;eups distrib install eigen 3.2.5.lsst2&lt;br/&gt;
	&#8226;	Declare the git repositories:&lt;br/&gt;
RHL Why 0.1? You didn&apos;t tell them to checkout a 0.1 branch, &lt;br/&gt;
&#8232;RHL Also, you should almost never declare a working version; install and then declare the installed&#8232;&lt;br/&gt;
RHL version&lt;br/&gt;
&#8232;RHL&lt;br/&gt;
&#8232;RHL Before you install, make sure that everythings works &#8211; the versions of the LSST stack that you&#8232;&lt;br/&gt;
RHL were using will be frozen into the installation.&lt;/p&gt;

&lt;p&gt;AR See below&lt;/p&gt;

&lt;p&gt;eups declare obs_pfs 0.1 -c -r $DRP_STELLA/obs_pfs&#8232;eups declare drp_stella_data 0.1 -c -r $DRP_STELLA/drp_stella_data&#8232;eups declare drp_stella 0.1 -c -r $DRP_STELLA/drp_stella&lt;br/&gt;
	&#8226;	Setup the pipeline. As obs_pfs and drp_stella_data are required packages they are set up automatically:&lt;br/&gt;
&#8232;RHL Why specify -v?&#8232;&lt;br/&gt;
RHL Why 0.1 when you made drp_stella current?&#8232;setup drp_stella 0.1 -v&lt;br/&gt;
During this step the environment variables $DRP_STELLA_DIR, $DRP_STELLA_DATA_DIR, and $OBS_PFS_DIR are &#8232;automatically created as well:&#8232;&lt;br/&gt;
RHL set, rather than created.&lt;br/&gt;
echo $DRP_STELLA_DIR&lt;br/&gt;
should show you:&#8232;&lt;br/&gt;
RHL No, it&apos;ll show you the value of $DRP_STELLA expanded. E.g. /Users/aritter/PFS/drp_stella&#8232;&lt;br/&gt;
RHL But why do they need to know this?&lt;/p&gt;

&lt;p&gt;AR Removed&lt;br/&gt;
&#8232;$DRP_STELLA/drp_stella&lt;br/&gt;
	&#8226;	Build the pipeline:&#8232;&lt;br/&gt;
RHL Why did you have them declare a local version before building it?&#8232;&lt;br/&gt;
RHL See notes about declaring git versions. Please use setup -r . (maybe -j) instead.&#8232;&lt;br/&gt;
RHL&lt;/p&gt;

&lt;p&gt;AR Removed declarations, now using setup -r .&lt;/p&gt;

&lt;p&gt;RHL In fact, I think that the order matters.&#8232;&lt;br/&gt;
RHL Don&apos;t you need to setup and build obs_pfs first?&lt;br/&gt;
&#8232;RHL then drp_stella_data, then drp_stella?&#8232;&lt;br/&gt;
RHL&lt;/p&gt;

&lt;p&gt;AR Didn&#8217;t need to setup and build obs_pfs first as setting up drp_stella automatically setup obs_pfs.&lt;br/&gt;
AR Now with setup -r . corrected the order.&lt;/p&gt;

&lt;p&gt;&#8232;RHL obs_pfs generates lots of chatter (e.g.&lt;br/&gt;
&#8232;RHL type(config) = &amp;lt;class &apos;lsst.afw.cameraGeom.cameraConfig.CameraConfig&apos;&amp;gt;&#8232;&lt;br/&gt;
RHL dir(ccd) = [&apos;_class&apos;, &apos;del&apos;, &apos;delattr&apos;, &apos;dict&apos;, &apos;doc&apos;, &apos;format&apos;, &apos;getattr&#8232;&lt;br/&gt;
RHL ...&lt;br/&gt;
&#8232;RHL as well as some silly LSST warnings that we should get fixed and that you should warn people to&#8232;&lt;br/&gt;
RHL ignore:&#8232;&lt;br/&gt;
RHL CameraMapper WARNING: Calibration root directory not found: ./CALIB&#8232;&lt;br/&gt;
RHL ...&lt;br/&gt;
&#8232;RHL&lt;/p&gt;

&lt;p&gt;AR Filed tickets for that.&lt;/p&gt;

&lt;p&gt;&#8232;RHL And don&apos;t you need a more recent sconsUtils and a --filterWarn flag to deal with warnings about typemaps?&#8232;&lt;br/&gt;
RHL Actually I see that those fixes didn&apos;t get into sconsUtils (until tonight!) so there are some unavoidable&#8232;&lt;br/&gt;
RHL warnings &#8212; you should probably mention them.&lt;/p&gt;

&lt;p&gt;AR Included installation of a recent sconsUtils and a &#8212;filterWarn flag in the quick-start guide&lt;/p&gt;

&lt;p&gt;cd $DRP_STELLA/drp_stella&#8232;scons opt=3&#8232;cd ../obs_pfs&#8232;scons opt=3&lt;br/&gt;
RHL tests/PSF.py generates warnings&#8232;&lt;br/&gt;
RHL afw.image.MaskedImage WARNING: Expected extension type not found: IMAGE&#8232;&lt;br/&gt;
RHL : Empty WCS extension, using FITS header&#8232;&lt;br/&gt;
RHL what is causing these? Is there a workaround (or a ticket)?&lt;/p&gt;

&lt;p&gt;AR Ticket filed (&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-64&quot; title=&quot;get rid of warnings in drp_stella tests PSF.py, FiberTraces.py, Spectra.py&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-64&quot;&gt;&lt;del&gt;PIPE2D-64&lt;/del&gt;&lt;/a&gt;), fixed, and put in review.&lt;/p&gt;

&lt;p&gt;RHL tests/FiberTraces.py generates 1217 lines of chatter, and Spectra.py 615. Where is it coming from? Most of it looks&#8232;&lt;br/&gt;
RHL like debugging stuff that should be disabled (is it an incorrect logging level?)&lt;/p&gt;

&lt;p&gt;AR Ticket filed (&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-65&quot; title=&quot;Clean up chatter in FiberTraces.py and Spectra.py&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-65&quot;&gt;&lt;del&gt;PIPE2D-65&lt;/del&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;RHL tests/testDrp.py fails without returning an error code. It&apos;s due to the os/x 10.11 SIP stuff I assume,&#8232;&lt;br/&gt;
RHL but the lack of an error code is a bug. Also, I&apos;m not sure that we should be using python unittest to&lt;br/&gt;
&#8232;RHL test shell scripts. How does ci_hsc do this?&lt;/p&gt;

&lt;p&gt;AR Ticket filed (&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-69&quot; title=&quot;tests/testDrp.py fails without returning an error code on os/x 10.11&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-69&quot;&gt;&lt;del&gt;PIPE2D-69&lt;/del&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;RHL Not setting up drp_pipeline_data says, &quot;Nothing to be done for tests&quot;; it should at least print a warning,&lt;br/&gt;
&#8232;RHL and preferably skip them using unittest&apos;s decorators &#8211; but I&apos;m not sure LSST does this bit right&lt;/p&gt;

&lt;p&gt;AR I&#8217;m pretty sure this is LSST&lt;/p&gt;

&lt;p&gt;	&#8226;	Now for using the pipeline. Raw test data are in $DRP_STELLA_DATA_DIR/tests/data/raw/ (3 Biases, 3 Darks, 1 Flat, 1 Arc).&#8232;&lt;br/&gt;
RHL why do we need to know this?&lt;/p&gt;

&lt;p&gt;AR Well, we don&#8217;t really, but I would want to know what kind of raw data we have&#8230;&lt;/p&gt;

&lt;p&gt;&#8232;First we need to create a directory (actually 2) where we want to store pipeline outputs. &#8232;Let&apos;s assume you want to store the pipeline outputs in a directory ~/spectra/PFS:&#8232;&lt;br/&gt;
RHL: Please explain why you are introducing an environment variable.&#8232;&lt;br/&gt;
RHL: If you want them to use this one again, they should either put it in a startup file,&#8232;&lt;br/&gt;
RHL or use eups to manage it (probably a better solution)&lt;/p&gt;

&lt;p&gt;AR Explanation added&lt;/p&gt;

&lt;p&gt;export SPECTRA_DIR=&quot;~/spectra/PFS&quot;&#8232;mkdir -p $SPECTRA_DIR/CALIB&lt;br/&gt;
	&#8226;	We need to tell the LSST stack which mapper to use:&#8232;&lt;br/&gt;
RHL2 Define mapper. Explain what is going on here, including repositories.&lt;/p&gt;

&lt;p&gt;AR Explanation added&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 Have you demonstrated using a raw filesystem with no ingestion? It should work&lt;/p&gt;

&lt;p&gt;AR Craig asked Paul about that, waiting for an answer&lt;/p&gt;

&lt;p&gt;echo &quot;lsst.obs.pfs.PfsMapper&quot; &amp;gt; $SPECTRA_DIR/_mapper&lt;br/&gt;
	&#8226;	Configuration parameters can be passed to the pipeline task either on the command line or in a config file&#8232;(e.g. $OBS_PFS_DIR/config/pfs/ingest.py). You can list all possible configuration parameters by appending a &#8232;&quot;--show config&quot; to the parameter list.&lt;br/&gt;
&#8232;RHL If we&apos;re providing this sort of information (and I don&apos;t think it should be in an install document)&#8232;&lt;br/&gt;
RHL document --show config=glob&#8232;&lt;/p&gt;

&lt;p&gt;AR Well it&#8217;s a quick-start guide and I think that this is very helpful information for understanding how to set parameters for tasks.&lt;br/&gt;
AR What does --show config=glob do? I only see a few parameters when I do that...&lt;/p&gt;

&lt;p&gt;	&#8226;	To ingest the raw images:&lt;br/&gt;
RHL Why use cd and . rather than specifying the output?&lt;/p&gt;

&lt;p&gt;AR Removed cd and specified the output&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 Actually, why do you need to specify --output at all?&#8232;&lt;br/&gt;
RHL2 (Paul clarified that: it&apos;s for the temp files such as trimmed biases. Please add a note)&#8232;&lt;br/&gt;
RHL2 It&apos;d be better to use --rerun e.g. --rerun USERNAME/tmp (and explain that they should&#8232;&lt;br/&gt;
RHL2 substitute USERNAME)&#8232;&lt;br/&gt;
RHL2&lt;/p&gt;

&lt;p&gt;AR Replaced &#8212;output with &#8212;rerun&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 I think you want&#8232;&lt;br/&gt;
RHL2 ingestImages.py $SPECTRA_DIR $DRP_STELLA_DATA_DIR/tests/data/raw/*.fits --mode link -L warn&lt;/p&gt;

&lt;p&gt;AR Changed&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 And please explain the meaning of &quot;--mode link&quot;&lt;/p&gt;

&lt;p&gt;AR Done&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 Probably it would be better to move some of your info logging up to debug; the default logging&#8232;&lt;br/&gt;
RHL2 is too verbose.&lt;br/&gt;
&#8232;RHL2 There are also print statements. Please remove all of them (some by converting to log messages&#8232;&lt;br/&gt;
RHL2 at appropriate levels of verbosity&lt;/p&gt;

&lt;p&gt;AR Ticket filed (&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-70&quot; title=&quot;In ingest.py replace print statements with debug info&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-70&quot;&gt;&lt;del&gt;PIPE2D-70&lt;/del&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;cd $SPECTRA_DIR&#8232;ingestImages.py . $DRP_STELLA_DATA_DIR/tests/data/raw/*.fits --output . --mode link&lt;br/&gt;
	&#8226;	Now that we have our database we can start reducing things. We start with reducing the Biases. The data we&#8232;want to reduce were observed on 2015-12-22 on spectrograph 2, arm red (r) at site S.&lt;br/&gt;
&#8232;RHL What does site S mean?&lt;/p&gt;

&lt;p&gt;AR Explanation added&lt;/p&gt;

&lt;p&gt;&#8232;Note the 2 config parameters --nodes and --procs at the end. These parameters are required by tasks which are &#8232;parallelized. Sometimes running the code in parallel can lead to problems (in most cases caused by the 3rd-party &#8232;libraries used), so setting nodes and procs to 1 is a safe choice.&#8232;&lt;br/&gt;
RHL Under what circumstances and why does it lead to problems? Are there jira issues?&#8232;&lt;/p&gt;

&lt;p&gt;AR Asked on HipChat, waiting for Craig to help me getting to the bottom of it&lt;/p&gt;

&lt;p&gt;RHL What are the default values of nodes and procs?&#8232;&lt;br/&gt;
RHL2 Why are there not sensible defaults:&#8232;&lt;br/&gt;
RHL2 RuntimeError: Must specify numNodes+numProcs or numCores&#8232;&lt;br/&gt;
RHL2 This error message doesn&apos;t tell you the options names (the &quot;num&quot; is confusing)&lt;br/&gt;
&#8232;RHL2 What does --do-exec do?&lt;br/&gt;
&#8232;RHL2 Why are we running this multi-tasked? Can you file a ticket to get this fixed, please.&lt;/p&gt;

&lt;p&gt;AR Asked Paul about it, waiting for answer&lt;/p&gt;

&lt;p&gt;reduceBias.py . --calib CALIB --output . --calibId calibVersion=bias arm=r calibDate=2015-12-22 spectrograph=2 --do-exec --id field=BIAS dateObs=2015-12-22 --nodes 1 --procs 1&lt;br/&gt;
RHL2 Why do I need --calib CALIB? I don&apos;t think you need --calib CALIB, so the preferred command would be&lt;br/&gt;
&#8232;RHL2 reduceBias.py $SPECTRA_DIR --output $SPECTRA_DIR --cores 1 --id field=BIAS dateObs=2015-12-22 arm=r spectrograph=2 --calibId calibVersion=bias calibDate=2015-15-22 arm=r spectrograph=2&lt;/p&gt;

&lt;p&gt;AR Removed &#8212;calib CALIB&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 Why do I need to specify the output?&lt;br/&gt;
RHL2 What is&#8232;&lt;br/&gt;
RHL2 --calibId calibVersion=bias&#8232;&lt;br/&gt;
RHL2 needed? Well, I know why it&apos;s because&#8232;&lt;br/&gt;
RHL2 template: &quot;BIAS/NONE/%(calibVersion)s/pfsBias-%(calibDate)s-0-%(spectrograph)1d%(arm)s.fits&quot;&lt;br/&gt;
&#8232;RHL2 but why did you do that?&lt;/p&gt;

&lt;p&gt;AR Ticket filed (&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-66&quot; title=&quot;Remove calibVersion from mapper&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-66&quot;&gt;&lt;del&gt;PIPE2D-66&lt;/del&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 If I omit the --calibId I get the error message&#8232;&lt;br/&gt;
RHL2 RuntimeError: Unable to determine output filename from&lt;br/&gt;
Unknown macro: &lt;/p&gt;
{&apos;filter&apos;}
&lt;p&gt;: No registry for lookup&#8232;&lt;br/&gt;
RHL2 Why is it not picking up arm and spectrograph from the inputs? The input registry has them.&lt;/p&gt;

&lt;p&gt;AR Gonna investigate (ask Paul). Filed ticket (&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-67&quot; title=&quot;Why is constructBias.py not picking up arm and spectrograph from the inputs?&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-67&quot;&gt;&lt;del&gt;PIPE2D-67&lt;/del&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 There is no check for a mis-formed date (e.g. 2015-99-22)&lt;/p&gt;

&lt;p&gt;AR Asked Paul about it, waiting for answer&lt;/p&gt;

&lt;p&gt;RHL2 Where is &quot;bias.isr: Set 0 BAD pixels to 0.01&quot; coming from? What does it mean?&#8232;&lt;/p&gt;

&lt;p&gt;AR Comes from obs_subaru isr.py setBadRegions(self, exposure)&lt;br/&gt;
AR value = afwMath.makeStatistics(exposure.getMaskedImage(), statistic, sctrl).getValue()&lt;br/&gt;
AR self.log.info(&quot;Set %d BAD pixels to %.2f&quot; % (badPixels.sum(), value))&lt;/p&gt;

&lt;p&gt;RHL2 How about &quot;: Empty WCS extension, using FITS header&quot;&lt;br/&gt;
&#8232;RHL2 And also &quot;bias.isr.assembleCcd WARNING: No WCS found in input exposure&quot;&lt;/p&gt;

&lt;p&gt;AR These warnings normally come from creating an exposure from a fits file via ExposureF(fileName)&lt;br/&gt;
AR Should be makeExposure(makeMaskedImage(ImageF(fileName))). Filed a ticket (&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-64&quot; title=&quot;get rid of warnings in drp_stella tests PSF.py, FiberTraces.py, Spectra.py&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-64&quot;&gt;&lt;del&gt;PIPE2D-64&lt;/del&gt;&lt;/a&gt; in review)&lt;/p&gt;

&lt;p&gt;	&#8226;	Now that we have a master bias we need to ingest that too into our database:&lt;br/&gt;
&#8232;RHL What exactly does the genCalibRegistry.py command do? What is the 180?&lt;/p&gt;

&lt;p&gt;		AR Explanation added.&lt;br/&gt;
&#8232;RHL2 Should be&lt;br/&gt;
&#8232;RHL2 genCalibRegistry.py --root $SPECTRA_DIR/CALIB --camera PFS --validity 180&#8232;genCalibRegistry.py --root CALIB --camera PFS --validity 180&lt;/p&gt;

&lt;p&gt;AR Done&lt;/p&gt;

&lt;p&gt;	&#8226;	Now we can create a bias-subtracted Dark and ingest that into our database:&#8232;&lt;br/&gt;
RHL presumably trimmed too, and scaled? I.e. a master dark used in further processing&lt;/p&gt;

&lt;p&gt;AR Added trimmed, scaled, and master&lt;/p&gt;

&lt;p&gt;&#8232;RHL and isn&apos;t this a different database? And do you mean database &lt;br/&gt;
or registry?&lt;/p&gt;

&lt;p&gt;AR Changed &#8220;database&#8221; to &#8220;calibration registry&#8221;.&lt;/p&gt;

&lt;p&gt;RHL2 All comments for bias generation apply here.&#8232;&lt;br/&gt;
RHL2 Why are the arguments to the different reduceXXX.py commands in different orders? It&apos;s a bit confusing&lt;/p&gt;

&lt;p&gt;AR Changed order or arguments&lt;/p&gt;

&lt;p&gt;&#8232;reduceDark.py . --calib CALIB --output . --calibId calibVersion=dark arm=r calibDate=2015-12-22 spectrograph=2 --do-exec --id field=DARK dateObs=2015-12-22 --nodes 1 --procs 1&lt;br/&gt;
&#8232;RHL2 Explain why this command needs to be repeated not just run at the end&lt;/p&gt;

&lt;p&gt;AR Done&lt;/p&gt;

&lt;p&gt;&#8232;genCalibRegistry.py --root CALIB --camera PFS --validity 180&lt;br/&gt;
	&#8226;	and a bias and dark-subtracted flat (currently only used to trace the apertures of the fiber traces):&lt;br/&gt;
&#8232;RHL Now I&apos;m confused. What are we making here? A flat field? Why the parenthetical comment? Where&#8232;&lt;br/&gt;
RHL do dithered flats fit into this?&#8232;&lt;/p&gt;

&lt;p&gt;AR Comment added&lt;/p&gt;

&lt;p&gt;RHL What does the --calib CALIB option mean; is it --CALIB ./CALIB? Does it default?&lt;/p&gt;

&lt;p&gt;AR Removed &#8212;calib CALIB option&lt;/p&gt;

&lt;p&gt;RHL2 All comments for bias generation apply here.&#8232;&lt;br/&gt;
RHL2 Why do I need filter=r as part of the calibId?&lt;/p&gt;

&lt;p&gt;AR Removed filter=r&lt;/p&gt;

&lt;p&gt;&#8232;reduceFlat.py . --calib CALIB --calibId calibVersion=flat arm=r calibDate=2015-12-22 filter=r spectrograph=2 --do-exec --id field=FLAT arm=r dateObs=2015-12-22 spectrograph=2 --output . --nodes 1 --procs 1&#8232;genCalibRegistry.py --root=CALIB --camera PFS --validity 180&lt;br/&gt;
	&#8226;	Since we have the Bias and Dark we can also run the Instrumental-Signature Removal (ISR) task for our Arc spectrum:&#8232;&lt;br/&gt;
RHL Still writing into the same place? Why not using --rerun?&lt;/p&gt;

&lt;p&gt;AR Using &#8212;rerun now&lt;/p&gt;

&lt;p&gt;&#8232;RHL Do I need to specify all those flags?&lt;/p&gt;

&lt;p&gt;AR Changed flags to visit=5&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 What does detrend.py do?&lt;/p&gt;

&lt;p&gt;AR Comment added&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 We should note that it doesn&apos;t (yet) flat field&#8232;&lt;/p&gt;

&lt;p&gt;AR Done&lt;/p&gt;

&lt;p&gt;RHL2 Why the &quot;type(config)&quot; lines?&lt;/p&gt;

&lt;p&gt;AR Removed &#8220;type(config)&#8221; lines from camera.py&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 Why specify --calib CALIB?&lt;/p&gt;

&lt;p&gt;AR Removed &#8212;calib CALIB&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 Why are we doing this in two steps (detrend.py and reduceArc.py)?&lt;/p&gt;

&lt;p&gt;AR Ticket filed (&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-106&quot; title=&quot;change reduceArc(RefSpec).py to include detrend&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-106&quot;&gt;&lt;del&gt;INFRA-55&lt;/del&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 If we are only processing one arc, why specify it this way, not by visit, e.g.&#8232;&lt;br/&gt;
RHL2 detrend.py $SPECTRA_DIR --rerun USERNAME/tmp --id visit=4&#8232;&lt;br/&gt;
RHL2 If you want to specify reducing all r2 arcs taken on 2015-12-22, please explain&#8232;detrend.py . --calib CALIB --output . --id arm=r spectrograph=2 dateObs=2015-12-22 field=ARC&lt;/p&gt;

&lt;p&gt;AR Replaced &#8220;arm=r spectrograph=2 dateObs=2015-12-22 field=ARC&#8221; with &#8220;visit=4&#8221;, added comment on how to reduce all Arcs&lt;/p&gt;

&lt;p&gt;&#8232;RHL2 What files are produced?&lt;/p&gt;

&lt;p&gt;AR See next line&lt;/p&gt;

&lt;p&gt;	&#8226;	We now have the postISRCCD images and can extract and wavelength-calibrate our CdHgKrNeXe Arc with the visit&#8232;number 4:&lt;br/&gt;
RHL Why do I need the --wLenFile? If it&apos;s calibration, why isn&apos;t it in the calibration registy? Or maybe&#8232;&lt;br/&gt;
RHL in obs_pfs?&#8232;&lt;br/&gt;
RHL Why isn&apos;t the line list in the calib registry?&#8232;&lt;br/&gt;
RHL2 Actually I see that I don&apos;t. What are the pros and cons?&lt;/p&gt;

&lt;p&gt;AR Removed wLenFile and lineList as they are defaulted. Ticket filed (&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-107&quot; title=&quot;Add line list and pixel vs. wavelength map to calibration registry&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-107&quot;&gt;&lt;del&gt;INFRA-56&lt;/del&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&#8232;reduceArc.py . --output . --calib CALIB --id visit=4 --wLenFile $OBS_PFS_DIR/pfs/RedFiberPixels.fits.gz --lineList $OBS_PFS_DIR/pfs/lineLists/CdHgKrNeXe_red.fits&lt;br/&gt;
RHL2 A generic comment: far too much information is being printed to the screen! At -L warn there should be basically nothing; the LSST code doesn&apos;t obey this dictum very well, but drp_stella is worse!&lt;/p&gt;

&lt;p&gt;AR Filed individual tickets&lt;/p&gt;</comment>
                            <comment id="11256" author="aritter" created="Fri, 19 Aug 2016 05:01:29 +0000"  >&lt;p&gt;See tickets/&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/INFRA-36&quot; title=&quot;Write quick-start guide for Stella&quot; class=&quot;issue-link&quot; data-issue-key=&quot;INFRA-36&quot;&gt;&lt;del&gt;INFRA-36&lt;/del&gt;&lt;/a&gt; for obs_pfs, drp_stella, drp_stella_data&lt;/p&gt;</comment>
                            <comment id="11261" author="swinbank" created="Sat, 27 Aug 2016 01:15:06 +0000"  >&lt;p&gt;Thanks for taking the time to respond to all those comments in detail.&lt;/p&gt;

&lt;p&gt;I&apos;ve added a few more to the &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella/pull/3/files&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;drp_stella PR&lt;/a&gt; (and I see &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=rhl&quot; class=&quot;user-hover&quot; rel=&quot;rhl&quot;&gt;rhl&lt;/a&gt; has done the same). They&apos;re mostly fairly minor, though: I don&apos;t think they&apos;ll take long, and they&apos;ll help make things a bit clearer. After resolving them, my suggestion would be that we go ahead and merge this to &lt;tt&gt;master&lt;/tt&gt; as &quot;good enough for now&quot;, but continue to evolve and improve this document by filing tickets as we spot things that needs improving.&lt;/p&gt;

&lt;p&gt;A couple of other points:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Our &lt;a href=&quot;http://pfs-2d-pipeline.readthedocs.io/en/latest/dev.html#workflow&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;workflow guidelines&lt;/a&gt; suggest that you should rebase and squash to create a logical history before merging. Certainly, we shouldn&apos;t have a series of &quot;respond to XXX comments from RHL&quot; commits! We also shouldn&apos;t see merges like &lt;a href=&quot;https://github.com/Subaru-PFS/drp_stella/pull/3/commits/5868b8f1f5efdbd4e05816bfa87cc3a31bd260a4&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;5868b8f&lt;/a&gt; on the ticket branch (but that will drop out when you rebase).&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;In several places above, you write that you&apos;ve asked Paul about something. Asking Paul is often a good idea, but can I suggest that for many of these questions it would actually be appropriate to put them on &lt;a href=&quot;https://community.lsst.org&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;community.lsst.org&lt;/a&gt; so that others can respond (rather than relying on Paul for everything) and everybody can benefit from the answers? You could call Paul out with an &quot;@&quot; if you think he&apos;s particularly well qualified to comment.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="11002">PIPE2D-38</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_10500" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10006" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>INFRA-35</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|ii00g7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10100" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                        <customfieldname>Reviewers</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>swinbank</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10005" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="20">2014-14</customfieldvalue>
    <customfieldvalue id="21">2014-15</customfieldvalue>
    <customfieldvalue id="22">2014-16</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                        </customfields>
    </item>
</channel>
</rss>