diff --git a/requirements.txt b/requirements.txt
index c42848895198cdbf17d9284170252cec259d9d4a..dcac89731bbf231676fe94219f13555f37580105 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,7 +5,7 @@ Pillow>=8.4.0
 protobuf>=3.19.0
 watchdog>=2.1.8
 pinard>=1.0
-julia>=0.6.2
+juliacall>=0.9.19
 plotly>=5.20.0
 pyodbc>=5.1.0
 matplotlib>=3.8.4
diff --git a/src/Class_Mod/LWPLSR_.py b/src/Class_Mod/LWPLSR_.py
index b5c7e499d3b10863fde0edb4bca63fbe69da683d..e5682ac39c37e85dd6871faf0e1646b5c5626e30 100644
--- a/src/Class_Mod/LWPLSR_.py
+++ b/src/Class_Mod/LWPLSR_.py
@@ -1,3 +1,5 @@
+import pandas as pd
+import streamlit
 from Packages import *
 from Class_Mod.Miscellaneous import *
 
@@ -9,42 +11,56 @@ class LWPLSR:
         """Initiate the LWPLSR and prepare data for Julia computing."""
         self.x_train, self.y_train, self.x_test, self.y_test = x_train, x_test, y_train, y_test
         # prepare to send dataframes to julia and Jchemo
-        self.Main.x_train,self.Main.y_train,self.Main.x_test,self.Main.y_test = self.x_train, self.y_train, self.x_test, self.y_test
+        jl.x_train,jl.y_train,jl.x_test,jl.y_test = self.x_train, self.y_train, self.x_test, self.y_test
+        self.scores = pd.DataFrame
+        self.predicted_results_on_test = pd.DataFrame
 
     def Jchemo_lwplsr(self):
         """Send data to Julia to compute lwplsr.
 
         Args:
-            self.Main.x_train (DataFrame):
-            self.Main.y_train (DataFrame):
-            self.Main.x_test (DataFrame):
-            self.Main.y_test (DataFrame):
+            self.jl.x_train (DataFrame):
+            self.jl.y_train (DataFrame):
+            self.jl.x_test (DataFrame):
+            self.jl.y_test (DataFrame):
 
         Returns:
             self.scores (DataFrame): various metrics and scores
             self.predicted_results_on_test (DataFrame):
         """
         # launch Julia Jchemo lwplsr
-        Main.eval("""
-        #convert python pd.dataframes to julia dataframes
-        x_train_j = self.Main.x_train |> Pandas.DataFrame|> DataFrames.DataFrame;
-        y_train_j = self.Main.y_train |> Pandas.DataFrame|> DataFrames.DataFrame;
-        x_test_j = self.Main.x_test |> Pandas.DataFrame|> DataFrames.DataFrame;
-        y_test_j = self.Main.y_test |> Pandas.DataFrame|> DataFrames.DataFrame;
-        # Compute model
+        jl.eval("""
+        using Pandas
+        using DataFrames
+        using Jchemo
         nlvdis = 5 ; metric = :mah
         h = 1 ; k = 200 ; nlv = 15 #; scal = true
-        mod = Main.Jchemo.model(Main.Jchemo.lwplsr; nlvdis, metric, h, k, nlv)
-        Main.Jchemo.fit!(mod, X_train_j, y_train_j)
+        mod = Jchemo.model(Jchemo.lwplsr; nlvdis, metric, h, k, nlv)
+        Jchemo.fit!(mod, X_train, y_train)
+        # Jchemo.pnames(mod)
+        # Jchemo.pnames(mod.fm)
         # predictions on test data calculation
-        res = Main.Jchemo.predict(mod, X_test_j) ;
-        scores = Main.Jchemo.mse(res.pred, y_test_j)
-        scoresjp = Pandas.DataFrame(scores);
-        resjp = Pandas.DataFrame(res.pred);
+        res = Jchemo.predict(mod, X_test)
+        # Jchemo.pnames(res)
         """)
-        self.scores = self.Main.scoresjp
-        self.predicted_results_on_test = pd.DataFrame(self.Main.resjp)
+        resjp = jl.seval("""
+        Pandas.DataFrame(res.pred)
+        """)
+        scoresjp = jl.seval("""
+        Jchemo.mse(res.pred, y_test)
+        """)
+        self.scores = pd.Dataframe(scoresjp)
+        self.predicted_results_on_test = pd.Dataframe(resjp)
+
+    @property
+    def pred_data_(self):
+        return self.predicted_results_on_test, self.predicted_results_on_test, self.predicted_results_on_test
+
+    # @property
+    # def model_(self):
+    #     return self.trained
 
     @property
-    def scores_(self):
-        return self.scores, self.predicted_results_on_test
\ No newline at end of file
+    def metrics_(self):
+        # self.scores = pd.DataFrame(self.scores, index=['test'])
+        return self.scores
\ No newline at end of file
diff --git a/src/Packages.py b/src/Packages.py
index 7577a4af756ed4a82a6e68bd69bee2be620eb617..d2abd429cfe69cdcbd6a031290edc930c928337f 100644
--- a/src/Packages.py
+++ b/src/Packages.py
@@ -23,8 +23,7 @@ from scipy.sparse.csgraph import minimum_spanning_tree
 from scipy.sparse import csgraph
 
 # Modelling
-# import julia
-from julia import Main, Jchemo, DataFrames, Base, Pandas
+from juliacall import Main as jl
 
 from pinard import utils
 from pinard import preprocessing as pp