-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
alternative MCIR implementation #580
base: master
Are you sure you want to change the base?
Conversation
- renamed class to PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotionNew to avoid conflict with existing stir code - added to CMakeLists.txt and registries
@rijobro, I made a PR anyway to see if it compiles |
Thanks. I'm trying to figure out which arguments would need to be exposed to SIRF: From the code snippet, it seems:
How do I add attenuation? As part of the projector pair? I'm slightly surprised that there are multiple |
Seems we need to add
This is the same as for your CIL stuff, the This would look a bit different from normal SIRF stuff where everything sits in the I don't think you have to expose However, It seems you'd need to expose the STIR resampling dataprocessor to SIRF as well. That won't be the same as your NiftyReg resampler. That'd mean converting the NiftyReg def fields to STIR def fields. hmmmm. |
I was thinking about that. STIR is capable of reading nifti files with ITK, so I think this conversion would be possible (since in my kinetic MCIR stuff we were doing that, albeit passing via files). However, it all seems like quite a lot of work... |
As well as registry, library CMake changes I had to add/change a few methods in order for the class to not be abstract. |
Two findings:
The latter is strange, since I believe I used tensor niftis for POSMAPOSL, e.g., here #240. |
https://travis-ci.org/github/UCL/STIR/jobs/699793304#L4732-L4733
Seems We should really build |
Travis/Appveyor are now fine with more runs enabled. Remaining failure should be fixed once merging #591. (I did put that on |
I've put in a number of PRs on |
Can we replace the |
good idea, but I find If you like that, we'd want to rename the source files as well then. Right now, I'd still keep it in let's make the caching default to true. |
At this point, I think keeping class names short has gone out the window, so the latter is fine with me!
Yup. |
😄 I merged apologies that I didn't notice. |
Reverted from release_4 and new PR for GatedProjData at #600. |
@rijobro, could you merge master in here? There will be some conflicts. |
Done. Although best to hold off merging for now, still getting all-zero reconstructions for when using motion (even zero motion). Not sure why, I used the same non-rigid class with the kinetic stuff. |
Really lost now. Results are non-zero when no motion is used. Yet, when I use motion (even set to identity rigid matrix, see below), result is zero...
|
weird. I did a simple test that uncovered some end-plane problems, see #601, but that cannot cause this. Are you sure there isn't anything in the rest of your data? What do you mean "when no motion is used". how did you run that then? I guess you could create a |
I checked by creating a displacement field image, filled with zeros:
I used an example of the output reconstructed image to make sure that metadata matched (just incase there was a problem there). |
I also used:
to check whether the problem was in the reading of 4D displacement fields. But it still doesn't work, implying the error isn't there. |
would it be easy to create a minimum test script (no attenuation, norm), as in Otherwise, write some images after the transforms I guess to see what happens. |
Ok, I've created a test script that can be run with: To be clear, when i say "comment out the motion", I mean this bit:
|
Any reason why I get the following?
Output:
EDIT: turned out it needed |
The sensitivity image is zero. Once that happens, the recon will just be zero. So the question is why is the sensitivity zero. I notice that the code still uses the obsolete |
I thought about replacing them, but since each objective function needs its own projector pair, I think we would need the equivalent of a |
i.e., this:
Would have to become something like this:
|
I also notice that the |
ah. this might indeed be a case where we need the For debugging, maybe you could just use |
Good spot. Modifying the following:
to
results in a non-zero sensitivity image. Guess that suggests the problem is in the |
This is the
experimental
version adjusted such that it doesn't conflicts. This verison uses adjoint interpolation as opposed to inverse.This PR is not really for merging, but for testing.