<!-- 
RSS generated by JIRA (8.3.4#803005-sha1:1f96e09b3c60279a408a2ae47be3c745f571388b) at Sat Feb 10 15:51:29 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>[PIPE2D-343] Define {{Psf}} class </title>
                <link>https://pfspipe.ipmu.jp/jira/browse/PIPE2D-343</link>
                <project id="10002" key="PIPE2D">DRP 2-D Pipeline</project>
                    <description>&lt;p&gt;Define a class for the 2D PSF. &lt;/p&gt;

&lt;p&gt;This could be an extension of the LSST &lt;tt&gt;Psf&lt;/tt&gt; class, but that is to be determined.  &lt;/p&gt;</description>
                <environment></environment>
        <key id="13323">PIPE2D-343</key>
            <summary>Define {{Psf}} class </summary>
                <type id="10001" iconUrl="https://pfspipe.ipmu.jp/jira/secure/viewavatar?size=xsmall&amp;avatarId=10515&amp;avatarType=issuetype">Story</type>
                                            <priority id="10000" iconUrl="https://pfspipe.ipmu.jp/jira/images/icons/priorities/medium.svg">Normal</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="price">price</assignee>
                                    <reporter username="hassan">hassan</reporter>
                        <labels>
                    </labels>
                <created>Thu, 7 Feb 2019 21:17:23 +0000</created>
                <updated>Fri, 20 Dec 2019 00:16:36 +0000</updated>
                            <resolved>Fri, 13 Dec 2019 20:43:46 +0000</resolved>
                                                    <fixVersion>6.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                <comments>
                            <comment id="15220" author="price" created="Mon, 1 Apr 2019 07:19:39 +0000"  >&lt;p&gt;&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=hassan&quot; class=&quot;user-hover&quot; rel=&quot;hassan&quot;&gt;hassan&lt;/a&gt;: I&apos;ve defined a &lt;tt&gt;SpectralPsf&lt;/tt&gt; base class, with an &lt;tt&gt;ImagePsf&lt;/tt&gt; specialisation that should allow us to wrap a &lt;tt&gt;PsfexPsf&lt;/tt&gt; from LSST. Is this sufficient definition?&lt;/p&gt;</comment>
                            <comment id="15609" author="rhl" created="Fri, 31 May 2019 19:46:54 +0000"  >&lt;p&gt;I expected this to inherit from the LSST class (but would check with &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=jbosch&quot; class=&quot;user-hover&quot; rel=&quot;jbosch&quot;&gt;jbosch&lt;/a&gt; first). &#160;I am very suspicious of an API that fundamentally works in terms of &lt;tt&gt;(fibreId,&lt;/tt&gt; lambda) as we &lt;b&gt;measure&lt;/b&gt; things in terms of &lt;tt&gt;(x,&lt;/tt&gt; y); &#160;I can see adding an API that takes a &lt;tt&gt;DetectorMap&lt;/tt&gt;&#160;as a convenience.&lt;/p&gt;

&lt;p&gt;Why do we have our own separate class hierarchy?&lt;/p&gt;</comment>
                            <comment id="15616" author="jbosch" created="Fri, 31 May 2019 21:06:21 +0000"  >&lt;p&gt;I don&apos;t think I know enough to comment usefully on most of this, but if you do need to define a new PSF API instead of using LSST&apos;s, I&apos;d strongly recommend &lt;b&gt;not&lt;/b&gt; defining an API that includes spatial variation &lt;em&gt;in C+++&lt;/em&gt; if you can avoid it (in other words if you can always evaluate the PSF at a point in Python, yielding an image or some kind of local PSF class to pass to C&amp;#43;&amp;#43;, &lt;em&gt;do&lt;/em&gt;).&#160; That will make it a lot easier to write what is probably not performance-critical code in Python instead of C&amp;#43;&amp;#43;.&#160; It&apos;s also something LSST may have to do someday, as disruptive as it might be, in order to use Piff (it&apos;s not the only solution to that problem, but it&apos;s definitely on the table).&lt;/p&gt;</comment>
                            <comment id="15620" author="price" created="Mon, 3 Jun 2019 18:19:46 +0000"  >&lt;p&gt;The fundamental requirement is that the &lt;tt&gt;SpectralPsf&lt;/tt&gt; works in terms of &lt;tt&gt;(fiberId, lambda&lt;/tt&gt;) (that&apos;s all we really care about when we come to subtract sky lines), so the interface is defined in terms of that. Note that there is a specialisation that composes an LSST &lt;tt&gt;Psf&lt;/tt&gt;, which sweeps all the &lt;tt&gt;(x, y)&lt;/tt&gt; details under the rug so the user doesn&apos;t need to worry about them.&lt;/p&gt;

&lt;p&gt;I could re-write in python, but I think this approach (composition instead of inheritance) is the Right Way as it hides the &lt;tt&gt;(x, y)&lt;/tt&gt; details from the user.&lt;/p&gt;</comment>
                            <comment id="15623" author="rhl" created="Tue, 4 Jun 2019 11:28:55 +0000"  >&lt;p&gt;I want this PSF to work in detector coordinates, please. &#160;That&apos;s where it defined and measured. &#160;I understand that we will often use it in &lt;tt&gt;(fibreId, lambda)&lt;/tt&gt; but that mapping is derived;  we need to make it convenient, but I don&apos;t want it to be primary.  For example, if we change the order of the wavelength fit it doesn&apos;t change the PSF.&lt;/p&gt;</comment>
                            <comment id="15937" author="price" created="Fri, 9 Aug 2019 20:18:07 +0000"  >&lt;p&gt;I&apos;ve updated the code to work in detector coordinates, and put the implementation in python as was suggested.&lt;/p&gt;</comment>
                            <comment id="16254" author="price" created="Fri, 25 Oct 2019 13:54:07 +0000"  >&lt;p&gt;It&apos;s not yet clear whether we need this implementation to be in C++ or not. We need &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=ncaplar&quot; class=&quot;user-hover&quot; rel=&quot;ncaplar&quot;&gt;ncaplar&lt;/a&gt; to explain how his PSF code works so we know how difficult it will be do implement in C++.&lt;/p&gt;</comment>
                            <comment id="16255" author="ncaplar" created="Fri, 25 Oct 2019 14:06:59 +0000"  >&lt;p&gt;I am not sure that I fully understand the question.&lt;/p&gt;

&lt;p&gt;The code that generates the oversampled images is quite complex and I doubt that it can be moved outside Python without considerable effort, especially at this stage.&lt;/p&gt;

&lt;p&gt;What I do at the moment is to supply a big array, which contains samples of PSF on many positions of the detector. From this, one can interpolate PSF at any position of the detector. Initial function is in &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-347&quot; title=&quot;Provide a method that provides a PSF for a given fiber and wavelength&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-347&quot;&gt;&lt;del&gt;PIPE2D-347&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I doubt this an answer to the question you are looking for, but I am not sure I can provide better one without further clarifications.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="16256" author="price" created="Fri, 25 Oct 2019 15:06:03 +0000"  >&lt;p&gt;No, that&apos;s really useful, &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=ncaplar&quot; class=&quot;user-hover&quot; rel=&quot;ncaplar&quot;&gt;ncaplar&lt;/a&gt;. It looks like you&apos;ve done all the difficult work outside the function you&apos;re providing, which just finds the two closest arrays and does a linear interpolation. That&apos;s something we can easily do in C++, I think.&lt;/p&gt;

&lt;p&gt;&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;, shall I push this down to C++? And I may as well integrate Neven&apos;s code while I&apos;m at it.&lt;/p&gt;</comment>
                            <comment id="16337" author="price" created="Wed, 13 Nov 2019 19:23:12 +0000"  >&lt;p&gt;I have pushed the PSFs down to C++ and implemented the &lt;tt&gt;NevenPsf&lt;/tt&gt;, based on the PSF realisations and interpolation algorithm provided by &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=ncaplar&quot; class=&quot;user-hover&quot; rel=&quot;ncaplar&quot;&gt;ncaplar&lt;/a&gt;. It sounds like Neven wants to update the realisations slightly, which we may as well do as part of this ticket, but I think this is ready for a new review. &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; and &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=hassan&quot; class=&quot;user-hover&quot; rel=&quot;hassan&quot;&gt;hassan&lt;/a&gt;, please have a look!&lt;/p&gt;</comment>
                            <comment id="16338" author="ncaplar" created="Wed, 13 Nov 2019 19:27:50 +0000"  >&lt;p&gt;Just to clarify, I will update the arrays that I provide in&#160;&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-450&quot; title=&quot;Create array_of_arrays that contains 2d PSF model inputs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-450&quot;&gt;&lt;del&gt;PIPE2D-450&lt;/del&gt;&lt;/a&gt;. I propose to create 211x211 images where position of chief ray is in the center pixel (instead of current 210x210 version).&lt;/p&gt;</comment>
                            <comment id="16551" author="price" created="Thu, 12 Dec 2019 20:57:27 +0000"  >&lt;p&gt;I believe this is ready to merge. It&apos;s already being used for the work in &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/browse/PIPE2D-326&quot; title=&quot;Implement arc subtraction algorithm in 2D&quot; class=&quot;issue-link&quot; data-issue-key=&quot;PIPE2D-326&quot;&gt;&lt;del&gt;PIPE2D-326&lt;/del&gt;&lt;/a&gt;, so we should get this into master. I propose to merge tomorrow if there are no objections.&lt;/p&gt;</comment>
                            <comment id="16560" author="price" created="Fri, 13 Dec 2019 20:43:46 +0000"  >&lt;p&gt;Merged to master.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="13328">PIPE2D-348</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="13303">PIPE2D-326</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="13321">PIPE2D-342</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="11141">DAMD-9</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>PIPE2D-351</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|02qpt6:508yl0chzzy0000p922</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10005" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="45">2DDRP-2019 C</customfieldvalue>
    <customfieldvalue id="46">2DDRP-2019 D</customfieldvalue>
    <customfieldvalue id="49">2DDRP-2019 E</customfieldvalue>
    <customfieldvalue id="52">2DDRP-2019 F</customfieldvalue>
    <customfieldvalue id="55">2DDRP-2019 G</customfieldvalue>
    <customfieldvalue id="59">2DDRP-2019 H</customfieldvalue>
    <customfieldvalue id="62">2DDRP-2019 I</customfieldvalue>
    <customfieldvalue id="68">2DDRP-2019 J</customfieldvalue>
    <customfieldvalue id="72">2DDRP-2019 K</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>