Differences between revisions 25 and 42 (spanning 17 versions)
Revision 25 as of 2006-05-30 17:59:43
Size: 7539
Editor: DennisJen
Comment:
Revision 42 as of 2019-12-16 14:01:02
Size: 0
Editor: AndrewHoopes
Comment: Quite old
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= 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 ==
 * 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.
 * Probability Density Functions: http://www.scs.fsu.edu/~burkardt/cpp_src/prob/prob.html
 * Cumulative Density Functions: http://www.scs.fsu.edu/~burkardt/cpp_src/dcdflib/dcdflib.html

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