Open reikonakajima opened 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.cpp
s)
examples/demo1.py
(a demo script)
The functionality is in there, and it compiles. Now to write some test/demo code.
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.
Remaining bugs:
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.
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.
Hi Gary---Thanks so much! I'll try to proceed from here.
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.