reikonakajima / FDNT

Fourier Domain Null Test (FDNT) galaxy shape measurement code
0 stars 0 forks source link

Implement GLMoments() function Python interface. #20

Open reikonakajima opened 10 years ago

reikonakajima commented 10 years ago

Implement a Python interface method, where the native shape can be measured using GL fits.

This should also fix the bogus value return of observedSignificance() in RunFDNT.

reikonakajima commented 10 years ago

Need to update the following files with the new function: fdnt/runfdnt.py (to set defaults) fdnt/__init__.py (to load GLMoments into namespace) pysrc/RunFDNT.cpp (to set Python interface) src/RunFDNT.cpp (to implement the function in C++) src/RunFDNT.h (the header for the two RunFDNT.cpps) examples/demo1.py (a demo script)

reikonakajima commented 10 years ago

The functionality is in there, and it compiles. Now to write some test/demo code.

reikonakajima commented 10 years ago

The weird bug with covE assignment gave the following message

terminate called after throwing an instance of 'img::ImageError'
  what():  Image Error: Destroying ImageData that still has children
Aborted (core dumped)

which is an error message running an Image destructor. It would show up at the most random places --- nowhere where the image was being touched. I would change the code, and it would appear at different places. It seems that it was related to tmv::SymMatrix<double> destruction events, but I'm not entirely sure.

The bug seems to have been fixed with the above commit.

reikonakajima commented 10 years ago

Remaining bugs:

reikonakajima commented 10 years ago

I have a question for @gbernstein (hello!): I'm finally getting back to work on FDNT. I would like to implement the GLSimple::shapeVariance() function, which is declared, but not defined. (note: this is not a FDNT method, but the GLSimple method.) Would you mind jogging your mind a bit to give me a rough outline as to how one would do this? The covariance matrix for the b vector is already there, so perhaps I can use this? Thanks for your help in advance.

gbernstein commented 10 years ago

Hi Reiko - I could probably do more mind-jogging, but I think you're right. The basic idea would be that Cov(e) = D^{-1} Cov(b) D^{-1}^T where D is db/de, the derivative matrix of the b-vectors under application of additional shear. I think it's primarily b20 (real & imaginary) that change under shear so perhaps you would marginalize Cov(b) down to just these two components. The remaining subtlety is that shear doesn't just add to the existing shape e: if the shape is e, and you apply some shear g, the resultant shape e' is not e+g. So there is a de/dg matrix that depends on the original e, and you would need to make sure you have that in the right place depending on what you want "shape variance" to mean.

reikonakajima commented 10 years ago

Hi Gary---Thanks so much! I'll try to proceed from here.