Differences between revisions 11 and 12
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
=== Newer respository === == Newer respository ==
Line 12: Line 12:
 * Integrate an Issue tracking system. If FS is open source maybe [[http://github.com | Github]] or Google Code or even [[http://sourceforge.net | SourceForge]] are good ideas
Line 13: Line 14:
=== CMake building === == CMake building ==
Line 17: Line 18:
=== Third-Party Packages === == Third-Party Packages ==
Line 22: Line 23:
=== Source Code cleanups === == Source Code cleanups ==
Line 29: Line 30:
=== GPU Transition === == GPU Transition ==
Line 33: Line 34:
=== recon-all === == recon-all ==
Line 36: Line 37:
=== Installation details === == Installation details ==
Line 40: Line 41:
=== Scripting language support === == Scripting language support ==
Line 54: Line 55:
=== Code Style Uniformization === == Code Style Uniformization ==

1. NextGenCode

a grab-bag of notes on what we'd like to see in the ideal freesurfer source code environment, and runtime

1.1. Newer respository

  • evaluate DVCS like git. if not something relatively modern like SVN which lets you do admin operations easily unlike CVS.
  • source only checkout which excludes all distribution data. For faster and thinner local builds.
  • Integrate an Issue tracking system. If FS is open source maybe Github or Google Code or even SourceForge are good ideas

1.2. CMake building

  • cmake replacing autotools as the build enviro

1.3. Third-Party Packages

  • one-stop-shopping build of all 3rd party packages --> like neurodebian

  • evaluate necessity of 3rd-party packages, eg PetSc

1.4. Source Code cleanups

  • continued source code cleanup:
    • remove all #if 0 code and duplicated stuff
  • source code documentation
  • more low-level unit tests

1.5. GPU Transition

  • memory structures changed to allow easier cpu (and gpu) parallelization (see rge notes)

1.6. recon-all

  • complete replacement of recon-all with ????

1.7. Installation details

  • eliminate clutter in $FREESURFER_HOME ( for the installation ).
    • for instance, the distribution data after installation should be in $FREESURFER_HOME/data. GEMS, the newest FS package, already uses this. It's data is in $FREESURFER_HOME/data/GEMS

1.8. Scripting language support

First phase is to wrap IO and utils so that it's possible for everyone to write scripts (Python, Numpy) in FreeSurfer instead of adding binaries to the source distribution. evaluate Cython as possible means.

When done properly, instead of adding a directory ( by mimicking the dummy/ project we have ) and toying with the Autotools, one can simply write a Python script like following:

import fs.utils as u
import fs.io as io

im = io.MRIread('test.mgz')
m = u.MRImean(im, 5)

1.9. Code Style Uniformization

NextGenCode (last edited 2021-05-10 08:27:20 by DevaniCordero)