untrusted comment: verify with st.pub
RWQTleDnDrmVqYiHepqqttoENkPlzDMAzyGWkfb8OErofliezK7Q+Lr8O01LgfwuscUxjJ0uH1aEuJCnj0+BS24/OYYj5a6uMgk=
#!/usr/local/bin/sbcl --dynamic-space-size 2560
;;I didn't actually use that shebang but I think it works
(require :asdf)
(require :clml)
;; data.sexp is like (("name" "x" "y") ("1" 2.0d0 3.0d0) ..)
;; (A hundred lines), then

(let ((CLML.HJS.READ-DATA:pick-and-specialize-data
       (CLML.HJS.READ-DATA:Read-data-from-file #p"data.sexp")
       :except '(0) :data-types (list :numeric :numeric)))
 (multiple-value-setq (result model)
  (CLML.pca:princomp data :method :covariance))
 (print "loading") (terpri)
 (prin1 (clml.pca:loading-factors result))
 (print "contributions") (terpri)
 (prin1 (clml.pca:contributions result)))

;;princomp is a fundamental tool.