Skip to content
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

ENH: Add ability to choose integration method [Issue43] #47

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

AnnaBeers
Copy link
Contributor

Referencing (#43).

I've added a radio-button option in the Advanced Options section of PkModeling to pick an integration method from one of two choices: Recursive and Convolutional.

Convolutional was PkModeling's previous method. This method did not get perfect performance on the Duke QIBA v6 Tofts Model phantom (see https://sites.duke.edu/dblab/qibacontent/), although it got close.

Recursive is the new method. It gets perfect performance on the new phantom, and is leagues faster than the other integration method. Performance on the v9 noisy phantom is about equal between the two, so the primary benefits on actual real-life data may come from the speed bonus. My theory for why it is faster is that the Convolutional method is either O(n log n) or O(n^2) at each iteration where n is the length of the time series analyzed, whereas the Recursive method is O(n). I haven't actually worked out the math on this one though, so I could be wrong. Experimentally, the recursive method is ~1000x faster on the 1300 frame v6 phantom, and about 1.5-2x as fast on a 64-timepoint normal MRI.

@kalpathy had once mentioned that PkModeling might have been slower on Windows than it was on Mac/Linux, and I haven't yet been able to test the Convolution method on Max/Linux. At least, however, this new integration method is a very fast solution for Windows users.

One can choose between a "Recursive" integration strategy and a
convolutional one. Both seem to have more or less equal performance on
noisy phantoms, but the recursive strategy has PERFECT peformance on a
noiseless phantom. This makes it preferable. It also seems to be faster
than the convolutional method, at least when tested on Windows.
@AnnaBeers AnnaBeers changed the title ENH: Add ability to choose integration method (Issue43) ENH: Add ability to choose integration method [Issue43] Jun 1, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant