scicloj / scicloj.ml

A Clojure machine learning library
Eclipse Public License 2.0
209 stars 13 forks source link

Failed to find symbol 'do-ctx' in namespace 'scicloj.metamorph.core' #6

Closed behrica closed 2 years ago

behrica commented 2 years ago

in release 1.2

behrica commented 2 years ago

Cannot reproduce:

user=> (require '[scicloj.ml.core])
23:34:10.099 [main] DEBUG tech.v3.datatype.functional - JDK16 vector ops are not available: Syntax error compiling at (tech/v3/datatype/functional/vecopt.clj:1:1).
23:34:11.582 [main] DEBUG tech.v3.tensor.dimensions.global-to-local - insn custom indexing enabled!
..instrumented #'scicloj.metamorph.ml/model
..instrumented #'scicloj.metamorph.ml/explain
..instrumented #'scicloj.metamorph.ml/evaluate-pipelines
..instrumented #'scicloj.metamorph.ml/train
..instrumented #'scicloj.metamorph.ml/thaw-model
..instrumented #'scicloj.metamorph.ml/default-loss-fn
..instrumented #'scicloj.metamorph.ml/predict
Register model:  :smile.classification/discrete-naive-bayes
Register model:  :smile.classification/maxent-multinomial
Register model:  :smile.classification/maxent-binomial
Register model:  :smile.classification/sparse-logistic-regression
Register model:  :smile.classification/sparse-svm
Register model:  :smile.classification/svm
Register model:  :smile.classification/ada-boost
Register model:  :smile.classification/logistic-regression
Register model:  :smile.classification/decision-tree
Register model:  :smile.classification/gradient-tree-boost
Register model:  :smile.classification/knn
Register model:  :smile.classification/random-forest
Register model:  :smile.regression/ordinary-least-square
Register model:  :smile.regression/elastic-net
Register model:  :smile.regression/lasso
Register model:  :smile.regression/ridge
Register model:  :smile.regression/gradient-tree-boost
Register model:  :smile.regression/random-forest
Register model:  :fastmath/cluster
Register model:  :fastmath.cluster/spectral
Register model:  :fastmath.cluster/dbscan
Register model:  :fastmath.cluster/k-means
Register model:  :fastmath.cluster/mec
Register model:  :fastmath.cluster/clarans
Register model:  :fastmath.cluster/g-means
Register model:  :fastmath.cluster/lloyd
Register model:  :fastmath.cluster/x-means
Register model:  :fastmath.cluster/deterministic-annealing
Register model:  :fastmath.cluster/denclue
..instrumented #'scicloj.metamorph.ml/model
..instrumented #'scicloj.metamorph.ml/explain
..instrumented #'scicloj.metamorph.ml/evaluate-pipelines
..instrumented #'scicloj.metamorph.ml/train
..instrumented #'scicloj.metamorph.ml/thaw-model
..instrumented #'scicloj.metamorph.ml/default-loss-fn
..instrumented #'scicloj.metamorph.ml/predict
..instrumented #'scicloj.ml.smile.clustering/cluster
Register model:  :smile.projections
Register model:  :smile.projections/pca-cov
Register model:  :smile.projections/pca-cor
Register model:  :smile.projections/pca-prob
Register model:  :smile.projections/kpca
Register model:  :smile.projections/gha
Register model:  :smile.projections/random
..instrumented #'scicloj.metamorph.ml/model
..instrumented #'scicloj.metamorph.ml/explain
..instrumented #'scicloj.metamorph.ml/evaluate-pipelines
..instrumented #'scicloj.metamorph.ml/train
..instrumented #'scicloj.metamorph.ml/thaw-model
..instrumented #'scicloj.metamorph.ml/default-loss-fn
..instrumented #'scicloj.metamorph.ml/predict
..instrumented #'scicloj.ml.smile.clustering/cluster
..instrumented #'scicloj.ml.smile.projections/reduce-dimensions
Register model:  :xgboost/regression
Register model:  :xgboost/classification
Register model:  :xgboost/logistic-binary-raw-classification
Register model:  :xgboost/linear-regression
Register model:  :xgboost/gpu-binary-logistic-raw-classification
Register model:  :xgboost/gpu-linear-regression
Register model:  :xgboost/count-poisson
Register model:  :xgboost/survival-cox
Register model:  :xgboost/gpu-logistic-regression
Register model:  :xgboost/tweedie-regression
Register model:  :xgboost/squared-error-regression
Register model:  :xgboost/multiclass-softprob
Register model:  :xgboost/logistic-binary-classification
Register model:  :xgboost/gamma-regression
Register model:  :xgboost/rank-map
Register model:  :xgboost/multiclass-softmax
Register model:  :xgboost/rank-pairwise
Register model:  :xgboost/gpu-binary-logistic-classification
Register model:  :xgboost/logistic-regression
Register model:  :xgboost/binary-hinge-loss
Register model:  :xgboost/rank-ndcg
Register model:  :smile.manifold/isomap
Register model:  :smile.manifold/laplacian
Register model:  :smile.manifold/lle
Register model:  :smile.manifold/tsne
Register model:  :smile.manifold/umap
nil
user=> (require '[scicloj.ml.dataset])
nil
user=> (require '[scicloj.ml.metamorph])
nil
user=> (require '[scicloj.ml.util])
user=> (require '[scicloj.ml.utils])
behrica commented 2 years ago

@joinr Which code fails for you using 'scicloj.ml' 1.2 ?

erickisos commented 2 years ago

When I try to start the REPL in calva, it says this:

#error {
 :cause Failed to find symbol 'do-ctx' in namespace 'scicloj.metamorph.core'
 :data {:symbol do-ctx, :src-ns scicloj.metamorph.core}
 :via
 [{:type clojure.lang.Compiler$CompilerException
   :message Syntax error compiling at (scicloj/ml/core.clj:45:1).
   :data #:clojure.error{:phase :compile-syntax-check, :line 45, :column 1, :source scicloj/ml/core.clj}
   :at [clojure.lang.Compiler load Compiler.java 7652]}
  {:type clojure.lang.ExceptionInfo
   :message Failed to find symbol 'do-ctx' in namespace 'scicloj.metamorph.core'
   :data {:symbol do-ctx, :src-ns scicloj.metamorph.core}
   :at [scicloj.ml.core$eval34217 invokeStatic core.clj 45]}]
 :trace
 [[scicloj.ml.core$eval34217 invokeStatic core.clj 45]
  [scicloj.ml.core$eval34217 invoke core.clj 45]
  [clojure.lang.Compiler eval Compiler.java 7181]
  [clojure.lang.Compiler eval Compiler.java 7170]
  [clojure.lang.Compiler load Compiler.java 7640]
  [clojure.lang.RT loadResourceScript RT.java 381]
  [clojure.lang.RT loadResourceScript RT.java 372]
  [clojure.lang.RT load RT.java 459]
  [clojure.lang.RT load RT.java 424]
  [clojure.core$load$fn__6856 invoke core.clj 6115]
  [clojure.core$load invokeStatic core.clj 6114]
  [clojure.core$load doInvoke core.clj 6098]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invokeStatic core.clj 5897]
  [clojure.core$load_one invoke core.clj 5892]
  [clojure.core$load_lib$fn__6796 invoke core.clj 5937]
  [clojure.core$load_lib invokeStatic core.clj 5936]
  [clojure.core$load_lib doInvoke core.clj 5917]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invokeStatic core.clj 669]
  [clojure.core$load_libs invokeStatic core.clj 5974]
  [clojure.core$load_libs doInvoke core.clj 5958]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invokeStatic core.clj 669]
  [clojure.core$require invokeStatic core.clj 5996]
  [clojure.core$require doInvoke core.clj 5996]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [testing_scicloj.core$eval149$loading__6737__auto____150 invoke core.clj 1]
  [testing_scicloj.core$eval149 invokeStatic core.clj 1]
  [testing_scicloj.core$eval149 invoke core.clj 1]
  [clojure.lang.Compiler eval Compiler.java 7181]
  [clojure.lang.Compiler eval Compiler.java 7170]
  [clojure.lang.Compiler load Compiler.java 7640]
  [clojure.lang.RT loadResourceScript RT.java 381]
  [clojure.lang.RT loadResourceScript RT.java 372]
  [clojure.lang.RT load RT.java 459]
  [clojure.lang.RT load RT.java 424]
  [clojure.core$load$fn__6856 invoke core.clj 6115]
  [clojure.core$load invokeStatic core.clj 6114]
  [clojure.core$load doInvoke core.clj 6098]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invokeStatic core.clj 5897]
  [clojure.core$load_one invoke core.clj 5892]
  [clojure.core$load_lib$fn__6796 invoke core.clj 5937]
  [clojure.core$load_lib invokeStatic core.clj 5936]
  [clojure.core$load_lib doInvoke core.clj 5917]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invokeStatic core.clj 669]
  [clojure.core$load_libs invokeStatic core.clj 5974]
  [clojure.core$load_libs doInvoke core.clj 5958]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invokeStatic core.clj 669]
  [clojure.core$require invokeStatic core.clj 5996]
  [clojure.core$require doInvoke core.clj 5996]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [user$eval5 invokeStatic form-init11619091131283494384.clj 1]
  [user$eval5 invoke form-init11619091131283494384.clj 1]
  [clojure.lang.Compiler eval Compiler.java 7181]
  [clojure.lang.Compiler eval Compiler.java 7170]
  [clojure.lang.Compiler eval Compiler.java 7170]
  [clojure.lang.Compiler load Compiler.java 7640]
  [clojure.lang.Compiler loadFile Compiler.java 7578]
  [clojure.main$load_script invokeStatic main.clj 475]
  [clojure.main$init_opt invokeStatic main.clj 477]
  [clojure.main$init_opt invoke main.clj 477]
  [clojure.main$initialize invokeStatic main.clj 508]
  [clojure.main$null_opt invokeStatic main.clj 542]
  [clojure.main$null_opt invoke main.clj 539]
  [clojure.main$main invokeStatic main.clj 664]
  [clojure.main$main doInvoke main.clj 616]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.lang.Var applyTo Var.java 705]
  [clojure.main main main.java 40]]}

however, the REPL seems to be working, and it is a new leiningen project. Idk if this information is useful

erickisos commented 2 years ago

Also, after checking directly on this file we can see that the do-ctx function is there. The weird thing is that until now, Idk really know how we get that package nor how we can check that we are using the right version for that.

joinr commented 2 years ago

@behrica Looks like possibly a lein issue, or at least something clojure cli is overlooking that lein is getting hung up on. I believe calva uses lein (bundled) so it makes sense. Clojure cli resolves with a newer dependency, but lein sees multiple deps. hmm

joinr commented 2 years ago

see https://github.com/scicloj/scicloj.ml/issues/5#issuecomment-1009051169

behrica commented 2 years ago

I found the culprit, scicloj/scicloj.ml.xgboost 5.03 has a dependency on the older version scicloj/metamorph.ml 0.3.0-beta1 , and somehow the dependency resolution between lein and clj works differently. Scary...

I will as well update scicloj/scicloj.ml.xgboost

joinr commented 2 years ago

differences in depenency res between lein and clj have been advertised as a feature of clj; I am still on the fence. Also clj doesn't work well on windows (can be coaxed into service though). Reminds me of web browser feature compliance differences.

behrica commented 2 years ago

Issue is solved in scicloj/scicloj.ml "0.1.3"