Differences between revisions 4 and 24 (spanning 20 versions)
Revision 4 as of 2006-04-10 13:53:15
Size: 2898
Editor: DennisJen
Comment:
Revision 24 as of 2006-05-12 15:54:31
Size: 7352
Comment:
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:

See also NumericalRecipesReplacement
Line 10: Line 12:
 * mri_diff.c -- seems to only include gsl
 * mri_glmfit.c -- seems to only include gsl
 * mri_mcsim.c -- seems to only include gsl
 * mri_stats2reg.c -- seems to only include gsl
Line 19: Line 17:
 * sig.c -- uses a gsl function if MGH_GSL is defined and it never is
Line 21: Line 18:

== GSL Function Stack Trace ==
 * gsl_matrix
  * matrix.c::MatrixToGSL
   * matrix.c::MatrixSVDPseudoInverse
    * gcamorph.c::gcamComputeOptimalTargetLinearTransform
     * gcamorph.c::GCAMreinitWithLTA
      * mri_ca_register.c::main
  * matrix.c::MatrixFromGSL
   * matrix.c::MatrixSVDPseudoInverse
    * ...
 * gsl_matrix_alloc
  * matrix.c::MatrixToGSL
   * ...
  * matrix.c::MatrixSVDPseudoInverse
   * ...
 * gsl_matrix_calloc
  * optseq2.c::AR1WhitenMatrix
   * optseq2.c::main
 * gsl_matrix_free
  * optseq2.c::AR1WhitenMatrix
   * ...
  * matrix.c::MatrixSVDPseudoInverse
   * ...
 * gsl_matrix_get
  * optseq2.c::AR1WhitenMatrix
   * ...
  * matrix.c::MatrixFromGSL
   * ...
 * gsl_matrix_set
  * optseq2.c::AR1WhitenMatrix
   * ...
  * matrix.c::MatrixFromGSL
   * ...
 * gsl_vector
  * matrix.c::VectorFromGSL
   * matrix.c::MatrixSVDPseudoInverse
    * ...
  * matrix.c::MatrixSVDPseudoInverse
   * ...
 * gsl_vector_alloc
  * matrix.c::MatrixSVDPseudoInverse
   * ...
 * gsl_vector_free
  * matrix.c::MatrixSVDPseudoInverse
   * ...
 * gsl_vector_get
  * matrix.c::VectorFromGSL
   * matrix.c::MatrixSVDPseudoInverse
    * ...
 * gsl_vector_set -- never used
 * gsl_cdf_fdist_Q
  * fmriutils.c::fMRIsigF
   * mris_glm.c::main
  * fsglm.c::GLMtest
   * fsglm.c::GLManalyze -- never used
   * fsglm.c::GLMprofile
    * mri_glmfit::parse_commandline
     * mri_glmfit::main
   * fsglm.c::GLMsynth -- never used
  * randomfields.c::RFstat2PVal
   * randomfields.c::RFstat2P
    * randomfields.c::RFstat2Stat -- never used
 * gsl_cdf_flat_Q
  * randomfields.c::RFstat2PVal
   * ... -- never used
 * gsl_cdf_gaussian_Q
  * randomfields.c::RFstat2PVal
   * ... -- never used
 * gsl_cdf_tdist_Q
  * randomfields.c::RFstat2PVal
   * ... -- never used
 * gsl_cdf_chisq_Q
  * randomfields.c::RFstat2PVal
   * ... -- never used
 * gsl_cdf_flat_Qinv
  * randomfields.c::RFp2StatVal
   * randomfields.c::RFp2Stat
    * randomfields.c::RFstat2Stat -- never used
 * gsl_cdf_gaussian_Qinv
  * randomfields.c::RFp2StatVal
   * ...
 * gsl_cdf_tdist_Qinv
  * randomfields.c::RFp2StatVal
   * ... -- never used
 * gsl_cdf_chisq_Qinv
  * randomfields.c::RFp2StatVal
   * ... -- never used
 * gsl_linalg_SV_decomp
  * matrix.c::MatrixSVDPseudoInverse
   * ...
 * gsl_linalg_cholesky_decomp
  * optseq2.c::AR1WhitenMatrix
   * ...
 * gsl_rng_type
  * RANDOM_FIELD_SPEC, RFS
   * used everywhere in randomfied.c
  * randomfields.c::RFspecInit
   * mri_glmfit.c::main
   * mri_mcsim.c::main
   * mri_volsynth.c::main
 * gsl_rng
  * RANDOM_FIELD_SPEC, RFS
 * gsl_rng_alloc
  * randomfields.c::RFspecInit
   * ...
 * gsl_rng_free
  * randomfields.c::RFspecFree
   * RFspecFree -- never used
 * gsl_rng_set
  * randomfields.c::RFspecSetSeed
   * randomfields.c::RFspecInit
    * ...
 * gsl_ran_flat
  * randomfields.c::RFdrawVal
   * randomfields.c::RFsynth
    * mri_glmfit.c::main
    * mri_mcsim.c::main
    * mri_volsynth.c::main
 * gsl_ran_gaussian
  * randomfields.c::RFdrawVal
   * ...
 * gsl_ran_fdist
  * randomfields.c::RFdrawVal
   * ...
 * gsl_ran_tdist
  * randomfields.c::RFdrawVal
   * ...
 * gsl_ran_chisq
  * randomfields.c::RFdrawVal
   * ...
 * gsl_ran_binomial_pdf
  * mri_cht2p.c::main
 * gsl_ran_binomial_pdf
  * volcluster.c::CSDpvalClustSize
   * mri_surfcluster.c::main
Line 104: Line 237:

== Possible Replacements ==
 * http://netlib.org/ -- BLAS, CBLAS, CLAPACK, ATLAS. maybe?
  * Advantages: gold standard for matrix software (used by matlab), real and complex, BSD, possible to optimize for individual platforms, parallel version available.
  * Disads: poorly documented (and I mean *poorly*), routines are low-level and would require work up-front to get going, no statistics.
 * http://math.nist.gov/MatrixMarket/ -- no
  * doesn't have the stat functions we need
 * http://www.oonumerics.org/oon/ -- no
  * a long list of stuff we can't use
 * http://rac.uits.iu.edu/hpc/numerics.shtml -- no
  * long list of libraries
 * http://osl.iu.edu/research/mtl/ -- no
  * doesn't have the stat functions we need
 * http://math.nist.gov/tnt/ -- no
  * doesn't have the stat functions we need
 * http://www.gnu.org/software/goose/goose.html
  * LGPL
  * has CDF
 * VXL/VNL for SV Decomposition
 * ITK for some of the distribution functions?
 * http://cran.us.r-project.org R statistics package. Probably has all the stats we need. Don't know about the matrix stuff. Oops, I think it's GPL though. Yes, it is under GPL.

== Other Useful Links ==
 * http://www.gnu.org/software/gsl/manual/html_node/Function-Index.html

GSL Replacement

GPL is bad and we're going to replace GSL.

Stub library located at: /usr/pubsw/packages/gsl/stub/include/

See also NumericalRecipesReplacement

Files with GSL

  • randomfields.h
  • mri_cht2p.c
  • optseq2.c
  • fmriutils.c
  • fsglm.c
  • matrix.c -- lots of matrix functionality that we can replace with vxl
  • randomfields.c
  • volcluster.c

GSL Function Stack Trace

  • gsl_matrix
    • matrix.c::MatrixToGSL
      • matrix.c::MatrixSVDPseudoInverse
        • gcamorph.c::gcamComputeOptimalTargetLinearTransform
          • gcamorph.c::GCAMreinitWithLTA
            • mri_ca_register.c::main
    • matrix.c::MatrixFromGSL
      • matrix.c::MatrixSVDPseudoInverse
        • ...
  • gsl_matrix_alloc
    • matrix.c::MatrixToGSL
      • ...
    • matrix.c::MatrixSVDPseudoInverse
      • ...
  • gsl_matrix_calloc
    • optseq2.c::AR1WhitenMatrix
      • optseq2.c::main
  • gsl_matrix_free
    • optseq2.c::AR1WhitenMatrix
      • ...
    • matrix.c::MatrixSVDPseudoInverse
      • ...
  • gsl_matrix_get
    • optseq2.c::AR1WhitenMatrix
      • ...
    • matrix.c::MatrixFromGSL
      • ...
  • gsl_matrix_set
    • optseq2.c::AR1WhitenMatrix
      • ...
    • matrix.c::MatrixFromGSL
      • ...
  • gsl_vector
    • matrix.c::VectorFromGSL
      • matrix.c::MatrixSVDPseudoInverse
        • ...
    • matrix.c::MatrixSVDPseudoInverse
      • ...
  • gsl_vector_alloc
    • matrix.c::MatrixSVDPseudoInverse
      • ...
  • gsl_vector_free
    • matrix.c::MatrixSVDPseudoInverse
      • ...
  • gsl_vector_get
    • matrix.c::VectorFromGSL
      • matrix.c::MatrixSVDPseudoInverse
        • ...
  • gsl_vector_set -- never used
  • gsl_cdf_fdist_Q
    • fmriutils.c::fMRIsigF
      • mris_glm.c::main
    • fsglm.c::GLMtest
      • fsglm.c::GLManalyze -- never used
      • fsglm.c::GLMprofile
        • mri_glmfit::parse_commandline
          • mri_glmfit::main
      • fsglm.c::GLMsynth -- never used
    • randomfields.c::RFstat2PVal
      • randomfields.c::RFstat2P
        • randomfields.c::RFstat2Stat -- never used
  • gsl_cdf_flat_Q
    • randomfields.c::RFstat2PVal
      • ... -- never used
  • gsl_cdf_gaussian_Q
    • randomfields.c::RFstat2PVal
      • ... -- never used
  • gsl_cdf_tdist_Q
    • randomfields.c::RFstat2PVal
      • ... -- never used
  • gsl_cdf_chisq_Q
    • randomfields.c::RFstat2PVal
      • ... -- never used
  • gsl_cdf_flat_Qinv
    • randomfields.c::RFp2StatVal
      • randomfields.c::RFp2Stat
        • randomfields.c::RFstat2Stat -- never used
  • gsl_cdf_gaussian_Qinv
    • randomfields.c::RFp2StatVal
      • ...
  • gsl_cdf_tdist_Qinv
    • randomfields.c::RFp2StatVal
      • ... -- never used
  • gsl_cdf_chisq_Qinv
    • randomfields.c::RFp2StatVal
      • ... -- never used
  • gsl_linalg_SV_decomp
    • matrix.c::MatrixSVDPseudoInverse
      • ...
  • gsl_linalg_cholesky_decomp
    • optseq2.c::AR1WhitenMatrix
      • ...
  • gsl_rng_type
    • RANDOM_FIELD_SPEC, RFS
      • used everywhere in randomfied.c
    • randomfields.c::RFspecInit
      • mri_glmfit.c::main
      • mri_mcsim.c::main
      • mri_volsynth.c::main
  • gsl_rng
    • RANDOM_FIELD_SPEC, RFS
  • gsl_rng_alloc
    • randomfields.c::RFspecInit
      • ...
  • gsl_rng_free
    • randomfields.c::RFspecFree
      • RFspecFree -- never used
  • gsl_rng_set
    • randomfields.c::RFspecSetSeed
      • randomfields.c::RFspecInit
        • ...
  • gsl_ran_flat
    • randomfields.c::RFdrawVal
      • randomfields.c::RFsynth
        • mri_glmfit.c::main
        • mri_mcsim.c::main
        • mri_volsynth.c::main
  • gsl_ran_gaussian
    • randomfields.c::RFdrawVal
      • ...
  • gsl_ran_fdist
    • randomfields.c::RFdrawVal
      • ...
  • gsl_ran_tdist
    • randomfields.c::RFdrawVal
      • ...
  • gsl_ran_chisq
    • randomfields.c::RFdrawVal
      • ...
  • gsl_ran_binomial_pdf
    • mri_cht2p.c::main
  • gsl_ran_binomial_pdf
    • volcluster.c::CSDpvalClustSize
      • mri_surfcluster.c::main

GSL Types and Functions Used

  • gsl_matrix
    • optseq2.c::AR1WhitenMatrix
    • matrix.c::MatrixToGSL
    • matrix.c::MatrixFromGSL
    • matrix.c::MatrixSVDPseudoInverse
  • gsl_matrix_alloc
    • matrix.c::MatrixToGSL
    • matrix.c::MatrixSVDPseudoInverse
  • gsl_matrix_calloc
    • optseq2.c::AR1WhitenMatrix
  • gsl_matrix_free
    • optseq2.c::AR1WhitenMatrix
    • matrix.c::MatrixSVDPseudoInverse
  • gsl_matrix_get
    • optseq2.c::AR1WhitenMatrix
    • matrix.c::MatrixFromGSL
  • gsl_matrix_set
    • optseq2.c::AR1WhitenMatrix
    • matrix.c::MatrixFromGSL
  • gsl_vector
    • matrix.c::MatrixSVDPseudoInverse
    • matrix.c::VectorFromGSL
  • gsl_vector_alloc
    • matrix.c::MatrixSVDPseudoInverse
  • gsl_vector_free
    • matrix.c::MatrixSVDPseudoInverse
  • gsl_vector_get
    • matrix.c::VectorFromGSL
  • gsl_vector_set -- not used
  • gsl_cdf_fdist_Q
    • fmriutils.c::fMRIsigF
    • fsglm.c::GLMtest
    • randomfields.c::RFstat2PVal
  • gsl_cdf_flat_Q
    • randomfields.c::RFstat2PVal
  • gsl_cdf_gaussian_Q
    • randomfields.c::RFstat2PVal
  • gsl_cdf_tdist_Q
    • randomfields.c::RFstat2PVal
    • sig.c::sigt -- only used if MGH_GSL is defined and it never is
  • gsl_cdf_chisq_Q
    • randomfields.c::RFstat2PVal
  • gsl_cdf_flat_Qinv
    • randomfields.c::RFp2StatVal
  • gsl_cdf_gaussian_Qinv
    • randomfields.c::RFp2StatVal
  • gsl_cdf_tdist_Qinv
    • randomfields.c::RFp2StatVal
  • gsl_cdf_chisq_Qinv
    • randomfields.c::RFp2StatVal
  • gsl_linalg_SV_decomp
    • matrix.c::MatrixSVDPseudoInverse
  • gsl_linalg_cholesky_decomp
    • optseq2.c::AR1WhitenMatrix
  • gsl_rng_type
    • randomfields.h::RANDOM_FIELD_SPEC, RFS
    • randomfields.h::RFspecInit
    • randomfields.c::RFspecInit
  • gsl_rng_ranlux389
    • randomfields.c::RFspecInit
  • gsl_rng
    • randomfields.h::RANDOM_FIELD_SPEC, RFS
  • gsl_rng_alloc
    • randomfields.c::RFspecInit
  • gsl_rng_free
    • randomfields.c::RFspecFree
  • gsl_rng_set
    • randomfields.c::RFspecSetSeed
  • gsl_ran_flat
    • randomfields.c::RFdrawVal
  • gsl_ran_gaussian
    • randomfields.c::RFdrawVal
  • gsl_ran_fdist
    • randomfields.c::RFdrawVal
  • gsl_ran_tdist
    • randomfields.c::RFdrawVal
  • gsl_ran_chisq
    • randomfields.c::RFdrawVal
  • gsl_ran_binomial_pdf
    • mri_cht2p.c::main
    • volcluster.c::CSDpvalClustSize

Possible Replacements