3 ;;; Time-stamp: <2009-08-27 08:40:10 tony>
4 ;;; Creation: <2008-03-11 19:18:34 user>
5 ;;; File: packages.lisp
6 ;;; Author: AJ Rossini <blindglobe@gmail.com>
7 ;;; Copyright: (c)2007--2008, AJ Rossini. BSD, LLGPL, or GPLv2, depending
9 ;;; Purpose: package structure description for lispstat
11 ;;; What is this talk of 'release'? Klingons do not make software
12 ;;; 'releases'. Our software 'escapes', leaving a bloody trail of
13 ;;; designers and quality assurance people in its wake.
20 (defpackage :lisp-stat-object-system
21 (:nicknames
:ls-objects
:lsos
)
23 (:shadow
:call-method
:call-next-method
)
24 (:export ls-object objectp
*object
* kind-of-p make-object
26 *set-slot-hook
* proto-slot-value self
27 send call-next-method call-method
28 defmeth defproto instance-slots proto-name
))
30 ;;; -types and -float probably ought to be moved into a -numerics
33 (defpackage :lisp-stat-types
34 (:documentation
"Provides some typeing for LispStat, but is clearly
38 check-nonneg-fixnum check-one-nonneg-fixnum
39 check-one-fixnum check-one-real check-one-number
))
41 (defpackage :lisp-stat-float
43 (:export
+stat-float-typing
+ +stat-cfloat-typing
+ +stat-float-template
+
44 machine-epsilon base-float makedouble
46 make-base-trans-fun-2 make-base-trans-fun
48 base-log base-exp base-expt base-sqrt base-sin base-cos
49 base-tan base-asin base-acos base-atan base-sinh
50 BASE-COSH BASE-TANH BASE-ASINH BASE-ACOSH BASE-ATANH
51 BASE-ABS BASE-PHASE BASE-FFLOOR BASE-FCEILING BASE-FTRUNCATE
52 BASE-FROUND BASE-SIGNUM BASE-CIS
))
54 ;;; Probably should move into cls-data package.
56 (defpackage :lisp-stat-compound-data
58 :lisp-stat-object-system
60 (:shadowing-import-from
:lisp-stat-object-system
61 call-next-method call-method
)
62 (:export compound-data-p
*compound-data-proto
*
64 compound-data-seq compound-data-length
65 element-list element-seq
67 recursive-map-elements map-elements repeat
69 get-next-element make-next-element set-next-element
72 select split-list which
76 (defpackage :lisp-stat-macros
78 :lisp-stat-compound-data
)
79 (:export make-rv-function make-rv-function-1
))
81 (defpackage :lisp-stat-basics
83 :lisp-stat-object-system
87 :lisp-stat-compound-data
)
88 (:shadowing-import-from
:lisp-stat-object-system
89 call-method call-next-method
)
90 (:export permute-array sum prod count-elements mean
93 (defpackage :lisp-stat-float
95 (:export
+stat-float-typing
+ +stat-cfloat-typing
+ +stat-float-template
+
96 machine-epsilon base-float makedouble
98 make-base-trans-fun-2 make-base-trans-fun
100 BASE-LOG BASE-EXP BASE-EXPT BASE-SQRT BASE-SIN BASE-COS
101 BASE-TAN BASE-ASIN BASE-ACOS BASE-ATAN BASE-SINH
102 BASE-COSH BASE-TANH BASE-ASINH BASE-ACOSH BASE-ATANH
103 BASE-ABS BASE-PHASE BASE-FFLOOR BASE-FCEILING BASE-FTRUNCATE
104 BASE-FROUND BASE-SIGNUM BASE-CIS
))
106 (defpackage :lisp-stat-macros
108 :lisp-stat-compound-data
)
109 (:export make-rv-function make-rv-function-1
))
112 (defpackage :cls-matrix
113 (:documentation
"basic utilities for using lisp arrays as numerical
114 matrices. Not optimized, and must consider this slow. Routines
115 should be optimized, it is only that we need them first, optimize
118 (:export matrixp num-rows num-cols matmult identity-matrix diagonal
119 row-list column-list inner-product outer-product
120 cross-product transpose bind-columns bind-rows
121 array-data-vector vector-to-array
))
124 ;;; NEW CLOS STRUCTURE
126 ;;; cls-data... in dataframe, though.
127 (defpackage :cls-dataframe
131 (:shadowing-import-from
:xarray slice
)
133 ;; generic container class for data -- if small enough
134 ;; could be value, otherwise might be reference.
140 varlabels caselabels nrows ncols
141 dataframe-dimension dataframe-dimensons
142 xref xtype xdims xdim xrank slice take carray
144 dfref dfref-case dfref-var
145 consistent-dataframe-p
149 list-of-columns
;; list-of-variables
150 list-of-rows
;; list-of-observations
153 (defpackage :cls-data
157 :cls-dataframe
) ; for dataframe
158 (:shadowing-import-from
:xarray slice
)
159 (:export lists-of-same-size
162 listoflist-
>dataframe
164 listoflist-
>matrix-like
))
167 (defpackage :cls-dataimport
168 (:documentation
"Data I/O and similar import technologies.")
170 :lisp-stat-object-system
174 (:shadowing-import-from
:lisp-stat-object-system
175 call-method call-next-method
)
176 (:export dsvstream-
>dataframe dsvstream-
>matrix dsvstream-
>listoflist
))
179 (defpackage :lisp-stat-model
180 (:documentation
"Model management for data analysis.")
184 ;; data structures for model and model/data combination
185 model statistical-model analysis
))
189 (defpackage :cls-visualize
193 (:shadowing-import-from
:xarray slice
)
197 (defpackage :cls-visualize-plplot
204 plot-ex contour-plot-ex fn-contour-plot-ex shade-plot-ex
3D-plot-ex
))
209 (defpackage :lisp-stat-ffi-int
212 (:export ccl-store-integer ccl-store-double ccl-store-ptr
215 (defpackage :lisp-stat-probability
220 (:export log-gamma set-seed
222 normal-cdf normal-quant normal-dens normal-rand
224 cauchy-cdf cauchy-quant cauchy-dens cauchy-rand
225 gamma-cdf gamma-quant gamma-dens gamma-rand
226 chisq-cdf chisq-quant chisq-dens chisq-rand
227 beta-cdf beta-quant beta-dens beta-rand
228 t-cdf t-quant t-dens t-rand
229 f-cdf f-quant f-dens f-rand
230 poisson-cdf poisson-quant poisson-pmf poisson-rand
231 binomial-cdf binomial-quant binomial-pmf binomial-rand
))
235 (defpackage :lisp-stat-math
237 :lisp-stat-object-system
239 :lisp-stat-compound-data
241 (:shadowing-import-from
:lisp-stat-object-system
242 call-method call-next-method
)
243 (:shadow expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
244 asin acos atan sinh cosh tanh asinh acosh atanh float random
245 truncate floor ceiling round minusp zerop plusp evenp oddp
246 < <= = /= >= > ;; complex
247 conjugate realpart imagpart phase
248 min max logand logior logxor lognot ffloor fceiling
249 ftruncate fround signum cis
)
250 (:export ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
251 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
252 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
254 conjugate realpart imagpart phase min max
255 logand logior logxor lognot ffloor fceiling ftruncate fround
257 (:documentation
"Vectorization of numerical functions"))
260 #|
;; some of this goes back in, but not all of it?
261 (defpackage :lisp-stat-linalg
268 :lisp-stat-compound-data
)
269 (:shadowing-import-from
:lisp-stat-math
270 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
271 asin acos atan sinh cosh tanh asinh acosh atanh float random
272 truncate floor ceiling round minusp zerop plusp evenp oddp
273 < <= = /= >= > complex conjugate realpart imagpart phase
274 min max logand logior logxor lognot ffloor fceiling
275 ftruncate fround signum cis
)
276 (:export chol-decomp lu-decomp lu-solve determinant inverse
277 sv-decomp qr-decomp rcondest make-rotation spline
278 kernel-dens kernel-smooth
279 fft make-sweep-matrix sweep-operator ax
+y eigen
281 check-real
;; for optimize
283 covariance-matrix matrix print-matrix solve
284 backsolve eigenvalues eigenvectors accumulate cumsum combine
292 (defpackage :lisp-stat-data
293 (:documentation
"Data management, integration, I/O, and other data technologies.")
294 (:nicknames
:ls-data
)
296 :lisp-stat-object-system
299 :lisp-stat-compound-data
)
300 (:shadowing-import-from
:lisp-stat-object-system
301 call-method call-next-method
)
302 (:export open-file-dialog read-data-file read-data-columns load-data
303 load-example
*variables
* *ask-on-redefine
*
304 def variables savevar undef
))
306 (defpackage :lisp-stat-descriptive-statistics
311 :lisp-stat-compound-data
313 (:shadowing-import-from
:lisp-stat-math
;; life is a vector!
314 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
315 asin acos atan sinh cosh tanh asinh acosh atanh float random
316 truncate floor ceiling round minusp zerop plusp evenp oddp
317 < <= = /= >= > ;; complex
318 conjugate realpart imagpart phase
319 min max logand logior logxor lognot ffloor fceiling
320 ftruncate fround signum cis
)
321 (:export mean standard-deviation variance
322 quantile median interquartile-range
325 (defpackage :lisp-stat-regression-linear
329 :lisp-stat-compound-data
330 :lisp-stat-descriptive-statistics
)
331 (:shadowing-import-from
:lisp-stat-object-system
332 call-method call-next-method
)
333 (:export regression-model fit-model
335 estimates covariance-matrix
336 ;; functions for helpers
338 print-object
;; for method dispatch
341 (defpackage :common-lisp-statistics
342 (:documentation
"Experimentation package for LispStat. Serious work
343 should be packaged up as a separate but similar package to help
344 drive reproducibility. By this I mean, creating a
345 data/analytics/analysis package with the minimal set of
346 objects/packages required.")
347 (:nicknames
:cls
:common-lisp-statistics
:lisp-stat
)
350 :lisp-matrix
;; conversion to a more robust linalg approach
352 :lisp-stat-object-system
353 :lisp-stat-compound-data
354 :lisp-stat-probability
362 :lisp-stat-descriptive-statistics
363 :lisp-stat-regression-linear
366 ;; :cls-visualize-plplot
368 (:shadowing-import-from
:xarray slice
)
369 (:shadowing-import-from
:lisp-stat-object-system
370 call-method call-next-method
)
371 (:shadowing-import-from
:lisp-stat-math
372 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
373 asin acos atan sinh cosh tanh asinh acosh atanh float random
374 truncate floor ceiling round minusp zerop plusp evenp oddp
377 conjugate realpart imagpart phase
380 logand logior logxor lognot
381 ffloor fceiling ftruncate fround
385 *default-path
* *lsos-files
* *basic-files
* *ls-files
*
386 *lispstat-home-dir
* *lispstat-data-dir
* *lispstat-examples-dir
*
390 defmeth send proto-slot-value
393 fixnump check-nonneg-fixnum check-one-fixnum
394 check-one-nonneg-fixnum
395 check-one-real check-one-number
403 compound-data-p
*compound-data-proto
* compound-object-p
404 compound-data-seq compound-data-length
405 element-list element-seq
407 recursive-map-elements map-elements
410 get-next-element make-next-element set-next-element
418 ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
419 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
420 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
422 conjugate realpart imagpart phase min max
423 logand logior logxor lognot ffloor fceiling ftruncate fround
426 #|
;; The following need to be re-found in lisp-matrix...
429 matrixp num-rows num-cols matmult identity-matrix diagonal row-list
430 column-list inner-product outer-product cross-product transpose
431 bind-columns bind-rows
434 chol-decomp lu-decomp lu-solve determinant inverse
435 sv-decomp qr-decomp rcondest make-rotation spline
436 kernel-dens kernel-smooth
437 fft make-sweep-matrix sweep-operator ax
+y eigen
439 covariance-matrix matrix print-matrix solve
440 backsolve eigenvalues eigenvectors accumulate cumsum combine
443 ;; in linalg.lisp, possibly not supported by matlisp
444 spline kernel-dens kernel-smooth
452 make-rv-function make-rv-function-1
455 xref xtype xdims xdim xdims
*
458 open-file-dialog read-data-file read-data-columns load-data
459 load-example
*variables
* *ask-on-redefine
*
460 def variables savevar undef
463 dataframe-like dataframe-array make-dataframe
464 varlabels caselabels nrows ncols
465 dataframe-dimension dataframe-dimensons
466 dfref dfref-case dfref-var
467 consistent-dataframe-p
468 dataset list-of-columns list-of-rows
471 lists-of-same-size equal-listoflist
473 listoflist-
>dataframe listoflist-
>array listoflist-
>matrix-like
475 ;; statistics.lsp (descriptions, should probably be moved
477 standard-deviation quantile median interquartile-range
480 ;; probability (dists.lisp)
482 uniform-rand normal-cdf normal-quant normal-dens
483 normal-rand bivnorm-cdf cauchy-cdf cauchy-quant cauchy-dens
484 cauchy-rand gamma-cdf gamma-quant gamma-dens gamma-rand
485 chisq-cdf chisq-quant chisq-dens chisq-rand beta-cdf beta-quant
486 beta-dens beta-rand t-cdf t-quant t-dens t-rand f-cdf f-quant
487 f-dens f-rand poisson-cdf poisson-quant poisson-pmf poisson-rand
488 binomial-cdf binomial-quant binomial-pmf binomial-rand
490 ;; Here is where we have a problem -- lispstat core should be core
491 ;; data management and config problems, with packages providing
492 ;; specialized extensions to LispStat, i.e. regression, nonlin
493 ;; regression, bayesian regression via laplace approximation, etc.
495 ;; The following could be considered "recommended packages",
496 ;; similar to the idea of the recommended packages in R. Probably
497 ;; we want them to do the exporting within that package, therefore
498 ;; NOT being able to lock the "data-ish" package, but only the
499 ;; subpackages prior to export.
502 ;; -- linear regressin models.
503 regression-model fit-model
504 estimates covariance-matrix
506 regression-model-proto x y intercept sweep-matrix
507 basis weights included total-sum-of-squares residual-sum-of-squares
508 predictor-names response-name case-labels
512 ;; -- nonlinear regression models
513 nreg-model nreg-model-proto mean-function theta-hat epsilon
515 ;; we might need something like xtxinv here? But should be
516 ;; encapsulated, so we use the one in regression.lisp
519 bayes-model bayes-model-proto bayes-internals
531 ;;;; PACKAGES FOR USEABILITY
533 (defpackage :lisp-stat-data-examples
534 (:documentation
"Example data for unittests, examples, illustrations,")
536 :common-lisp-statistics
)
537 (:shadowing-import-from
:lisp-stat
538 call-method call-next-method
540 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
541 asin acos atan sinh cosh tanh asinh acosh atanh float random
542 truncate floor ceiling round minusp zerop plusp evenp oddp
543 < <= = /= >= > > ;; complex
544 conjugate realpart imagpart phase
545 min max logand logior logxor lognot ffloor fceiling
546 ftruncate fround signum cis
549 (:export iron aluminum absorbtion
553 (defpackage :lisp-stat-user
554 (:documentation
"Experimentation package for LispStat. Serious work
555 should be placed in a similar package elsewhere for
556 reproducibility. But this should hint as to what needs to be done
557 for a user- or analysis-package.")
558 (:nicknames
:ls-user
)
559 (:use
:common-lisp
; always needed for user playgrounds!
561 :common-lisp-statistics
562 :lisp-stat-data-examples
) ;; this last is to have 'things to play with'
563 (:shadowing-import-from
:lisp-stat
564 call-method call-next-method
566 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
567 asin acos atan sinh cosh tanh asinh acosh atanh float random
568 truncate floor ceiling round minusp zerop plusp evenp oddp
569 < <= = /= >= > > ;; complex
570 conjugate realpart imagpart phase
571 min max logand logior logxor lognot ffloor fceiling
572 ftruncate fround signum cis
576 (defpackage :lisp-stat-unittests
579 :lisp-stat
:lisp-stat-data-examples
)
580 (:shadowing-import-from
:lisp-stat
581 call-method call-next-method
;; objects
582 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
;; lsmath
583 asin acos atan sinh cosh tanh asinh acosh atanh float random
584 truncate floor ceiling round minusp zerop plusp evenp oddp
585 < <= = /= >= > ;; complex
586 conjugate realpart imagpart phase
587 min max logand logior logxor lognot ffloor fceiling
588 ftruncate fround signum cis
)
589 (:export run-lisp-stat-tests run-lisp-stat-test scoreboard
; exec
590 almost
= almost
=lists numerical
=)) ; compare
592 (defpackage :cls-dataframe-example
594 :lift
:lisp-stat-unittests
595 :lisp-stat-data-examples
597 (:export absorbtion aluminum iron
))
600 (defpackage :lisp-stat-optimize
605 :lisp-stat-object-system
607 :lisp-stat-compound-data
613 :lisp-stat-linalg-data
617 (:shadowing-import-from
:lisp-stat-object-system
618 call-method call-next-method
)
619 (:shadowing-import-from
:lisp-stat-math
620 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
621 asin acos atan sinh cosh tanh asinh acosh atanh float random
622 truncate floor ceiling round minusp zerop plusp evenp oddp
623 < <= = /= >= > complex conjugate realpart imagpart phase
624 min max logand logior logxor lognot ffloor fceiling
625 ftruncate fround signum cis
)
631 newtonmax nelmeadmax
))