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

New fixelcorrespondence #2688

Draft
wants to merge 1 commit into
base: dev
Choose a base branch
from
Draft

New fixelcorrespondence #2688

wants to merge 1 commit into from

Conversation

Lestropie
Copy link
Member

Recently went to a bunch of effort splitting code across header files only to discover that I'd actually done it a couple of years ago in 747dd95. Retaining the more recent version.

  • Move function n_choose_k() to new file core/math/binomial.h as was done previously in 64759f6
  • Try to do some heuristic tuning of more recent proposed correpsondence metric
    (currently processing a cohort that should serve well for this purpose)
  • Update FBA documentation to use these modified / new commands
    Consider initially updating them to explicitly use the "nearest" algorithm, which duplicates prior behaviour; changing the advised algorithm can be discussed in Documentation: Revisit FBA instructions #2685
  • Move templated combinatorial matching code from .h to .cpp and explicitly instantiate the two required versions
  • Change filesystem storage format (New fixel correspondence: Data format #2200).
    • Switch from .mif to .npy
    • Contemplate explicit export of attribution weights
  • Change internal representation
    • Currently for each fixel a vector<index_type> is used. While this could be used during the optimisation process itself if necessary / beneficial, better would be something more consistent with the on-disk storage: an index array with count & offset per fixel, which provides lookup into a table of fixel indices. An accessor class could deal with translation of such, providing iteration via : operator, etc..
    • Automatically compute number of sources per target and number of targets per source
  • Make sure that compilation / execution works with / without the demonstration "all2all" class (or just remove it)
  • Clean up old code comments to be descriptive rather than prescriptive

…mmand

Previous fixelcorrespondence command served a dual purpose: it would both determine the appropriate subject fixel to use in projecting data to a given template fixel, and then perform that projection to produce subject data for the template fixel dataset. This changeset breaks this process into two separate steps. The fixelcorrespondence command now produces as its output a dataset that represents the correspondence mapping between subject and template fixels. New command fixel2fixel is then responsible for utilising that pre-determined mapping to project data from subject fixels to template fixels.
The separation of these stages permits the exploration of alternative strategies for establishing the correspondence between subject and template fixles, inclusing accounting for cases where that correspondence is not a trivial one-to-one mapping.
@Lestropie Lestropie self-assigned this Jul 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant