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