From SCIRun Documentation Wiki
Jump to navigation Jump to search

SCIRun Developer TODO list

Developer's manual (needs work): information about building releases, unit testing etc. can be found there.

Qt Migration project

The SCIRun issue tracker is on the gforge site .

SCIRun Externals (dependencies built and packaged with SCIRun)

  • Update tetgen repository - currently testing. - done
  • PNG repository - needs to be reverted to expected version (1.2.35) from version 1.0.12. - done
  • Update boost repository to 1.50? Seg3D2 and BioMesh3D depend on this repository too.
  • Netlib LAPACK 3.4 has overhauled C API. Download, test and decide if current netlib repository (v3.2.1) should up updated. - phasing out Netlib, replaced in SCIRun 5 with Eigen

SCIRun Core

  • replace hash_map and hash_set with unordered counterparts


  • find and review code where DenseMatrix::solve is used and make sure return values are checked


  • Clean up Still needs some refactoring, since we'd like to enable per-session settings (rather than per-user).
  • Use log4j C++ port for more flexible logging?
  • NotFinished.h: delete
  • RWS.h: delete/replace
  • StringUtil: keep for wrappers
  • Timer.h: replace with boost
  • TypeDesc.h: replace with something like Qt's Q_OBJECT type description?


Flagged for review/deprecation/removal

  • fft.c
  • PiecewiseInterp
  • MusilRNG
  • MiscMath.h
  • Mat.c
  • linalg.h
  • Gaussian.h: see above
  • Spline, CatMull


  • Array1: replace with std equivalent
  • Look to deprecate/replace with boost most of the types here.
  • Would be great to replace LockingHandle with boost::shared_ptr.


  • Rewrite?


  • Replace with boost::thread.


  • Consider inheriting/integrating std::exception.
  • Research boost::exception.
  • Assertion mechanism: make more flexible (e.g. runtime configurable).


  • The name is confusing, since there is also Core_Geometry and Core_GeomInterfaces.
  • Extract library: GeometryDisplayablePrimitives for GeomObj and subtypes.


  • Change return type of dense(), etc. member functions on Matrix to return shared_ptrs (and in the case of returning self, return a shared_ptr with no-op deleter--although consider shared_from_this idiom).


  • document input and output file formats


  • Move to application layer.


  • Move namespace SCIRunAlgo into SCIRun::Algo to remove need for using directives in headers. - do during Qt migration
  • notset.h: try to delete
  • clean up attempted loading of Release/Debug libraries
  • XmlParser.*: is it used? Still uses xerces, would like to remove.
  • sci_system.h: delete


  • TempFileManager: Replace with boost?
  • SysCallManager: Replace with boost?


  • Move out of Core

SCIRun Modules

  • find and review code where DenseMatrix::solve is used and make sure return values are checked
  • review modules to see if any should be deprecated and retired
  • Rename "EditPath" to "EditCameraPath"

Forward/Inverse toolkit

SCIRun Networks

Posssibly broken networks

  • Packages/BioPSE/nets/Samples/build-misfit-and-localize.srn - GetColumnOrRowFromMatrix doesn't appear to be incrementing columns and updating

BioPSE Package

  • BuildBEMatrix UI (Ayla)
  • review what to keep (modules and networks) and what to discard

Teem Package and Nrrd Support

  • review and start integration plan for upcoming Teem release (Ayla)


Samples and Regression Testing

  • simpler tests for modules

Collaborator code

CUDA support (currently on hold)

  • sync Devon Yablonski's branch with trunk (Ayla)
  • integrate GPU module code (Ayla)


SCIRun 3.x user guide wiki pages need to be migrated to PDF docs.

Modules Without Documentation

Modules With Incomplete Or Out-of-date Documentation

Modules With Duplicated Or Partially Duplicated Functionality

  • partially duplicated functionality: GeneratePointSamplesFromField vs. GeneratePointSamplesFromFieldOrWidget
  • partially duplicated functionality: MapFieldDataFromSourceToDestination vs (MapFieldDataFromElemToNode, MapFieldDataFromNodeToElem, MapFieldDataOntoElems, MapFieldDataOntoNodes)
  • Virtually identical with differing number of inputs: CalculateFieldData CalculateFieldData2, CalculateFieldData3, etc.
  • duplicated functionality: SetFieldDataToConstantValue can be easily performed with SetFieldData or CreateFieldData
  • RemoveZeroRowsAndColumns and RemoveZerosFromMatrix do essentially the same thing, with only a little side functionality. These could be combined into one module with the proper options.
  • SwapNodeLocationsForMatrixEntries and SetFieldNodes seems to have the same functionality.
  • SwapFieldDataForMatrixEntries and SetFieldData seems to have the same functionality.

Modules To Deprecate?

  • CreateTrigCurrentPattern? - Moritz - creates a cosine for injection electrodes in EIT (uses CreateElectrodeParameterMatrices, Lorena Kreda)
  • CreateElectrodeParameterMatrices? - Moritz, Dan - sets up electrode configuration (used for CreateTrigCurrentPattern, Lorena Kreda) - functionality replaced by AddKnownsToLinearSystem?
  • ShowAndEditCameraWidget - replace or deprecate
  • ConvertCurveArrayToSurface - Functionality removed - deprecated in SCIRun 4.7 (svn trunk)

Modules To Rename

  • ConvertLatVolDataFromElemToNode and ConvertLatVolDataFromNodeToElem apparently work on LatVolField, StructHexVolField, ImageField, and StuctQuadSurfField, so a better name should be chosen