From afde8379e2734e83450d9a94a333099ddc06e04f Mon Sep 17 00:00:00 2001
From: CJL6015 <1253368419@qq.com>
Date: Sat, 29 Nov 2025 11:31:01 +0800
Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E2=9C=A8=20add=20initial=20VCS=20c?=
=?UTF-8?q?onfiguration=20for=20Git?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/vcs.xml | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 .idea/vcs.xml
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
From 2c94a74d4443eaa20e2ef9424ae8da63cbf71eda Mon Sep 17 00:00:00 2001
From: CJL6015 <1253368419@qq.com>
Date: Sat, 29 Nov 2025 11:31:08 +0800
Subject: [PATCH 2/2] Update project configuration and add new dependencies
- Added a new launch configuration for Flask debugging in .vscode/launch.json.
- Updated requirements.txt with new dependencies.
- Added compiled Python bytecode for PCA_Test.py in __pycache__.
- Introduced a new MSSQL connection module with methods for executing queries and fetching results.
- Implemented data retrieval functionality for historical values and model information.
---
.idea/FlaskWebApi.iml | 6 +-
.idea/misc.xml | 2 +-
.idea/workspace.xml | 275 ++++++------------
.vscode/launch.json | 31 +++
PCA_Test.py | 53 +++-
PCA_Train.py | 2 +-
__pycache__/PCA_Test.cpython-310.pyc | Bin 7667 -> 7679 bytes
__pycache__/PCA_Test.cpython-312.pyc | Bin 0 -> 14807 bytes
__pycache__/PCA_Test_offline.cpython-310.pyc | Bin 7475 -> 7487 bytes
__pycache__/config.cpython-310.pyc | Bin 233 -> 245 bytes
__pycache__/recon.cpython-310.pyc | Bin 8489 -> 8501 bytes
environment.yml | 276 -------------------
requirements.txt | Bin 476 -> 508 bytes
13 files changed, 172 insertions(+), 473 deletions(-)
create mode 100644 .vscode/launch.json
create mode 100644 __pycache__/PCA_Test.cpython-312.pyc
delete mode 100644 environment.yml
diff --git a/.idea/FlaskWebApi.iml b/.idea/FlaskWebApi.iml
index 23be14f..126c967 100644
--- a/.idea/FlaskWebApi.iml
+++ b/.idea/FlaskWebApi.iml
@@ -1,10 +1,10 @@
-
-
+
+
-
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 7a5c067..de7816d 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 8d26335..b237f1e 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,16 +1,24 @@
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
@@ -35,12 +49,27 @@
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -134,73 +89,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -209,25 +102,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
C:\Users\Administrator\AppData\Roaming\Subversion
@@ -238,6 +122,7 @@
1568983181226
+
@@ -273,6 +158,9 @@
+
+
+
@@ -657,7 +545,7 @@
- file://C:/D盘/Flaskwebapi/recon.py
+ file://$PROJECT_DIR$/../../../../../../D盘/Flaskwebapi/recon.py
35
@@ -731,11 +619,6 @@
260
-
- file://$PROJECT_DIR$/PCA_Train.py
- 259
-
-
file://$PROJECT_DIR$/AANN_Train.py
88
@@ -880,14 +763,9 @@
291
-
- file://$PROJECT_DIR$/PCA_Train.py
- 255
-
-
file://$PROJECT_DIR$/PCA_Test.py
- 271
+ 314
@@ -907,14 +785,9 @@
file://$PROJECT_DIR$/PCA_Test.py
- 259
+ 302
-
- file://$PROJECT_DIR$/PCA_Test.py
- 222
-
-
file://$PROJECT_DIR$/ASSESS.py
306
@@ -985,6 +858,31 @@
151
+
+ file://$PROJECT_DIR$/PCA_Train.py
+ 281
+
+
+
+ file://$PROJECT_DIR$/PCA_Train.py
+ 257
+
+
+
+ file://$PROJECT_DIR$/PCA_Test.py
+ 196
+
+
+
+ file://$PROJECT_DIR$/PCA_Test.py
+ 270
+
+
+
+ file://$PROJECT_DIR$/PCA_Test.py
+ 268
+
+
@@ -995,4 +893,7 @@
+
+
+
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..dc25acd
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,31 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Python Debugger: Flask",
+ "type": "debugpy",
+ "request": "launch",
+ "module": "flask",
+ "env": { "FLASK_APP": "app.py", "FLASK_DEBUG": "1" },
+ "args": ["run", "--no-debugger", "--no-reload"],
+ "jinja": true,
+ "autoStartBrowser": false
+ },
+ {
+ "name": "Python Debugger: Flask",
+ "type": "debugpy",
+ "request": "launch",
+ "module": "flask",
+ "env": {
+ "FLASK_APP": "app.py",
+ "FLASK_DEBUG": "1"
+ },
+ "args": ["run", "--no-debugger", "--no-reload"],
+ "jinja": true,
+ "autoStartBrowser": false
+ }
+ ]
+}
diff --git a/PCA_Test.py b/PCA_Test.py
index 29ec88c..fde9b82 100644
--- a/PCA_Test.py
+++ b/PCA_Test.py
@@ -7,7 +7,7 @@ PCA source code
import numpy as np
import json
-import pymssql
+import pymysql
import requests
import config
@@ -144,15 +144,58 @@ class MSSQL:
self.conn.commit()
self.conn.close()
+
+class MySQL:
+ def __init__(self, host, user, pwd, database):
+ self.host = host
+ self.user = user
+ self.pwd = pwd
+ self.db = database
+
+ def __GetConnect(self):
+ """建立 MySQL 连接并返回 cursor"""
+ if not self.db:
+ raise NameError("没有设置数据库信息")
+
+ self.conn = pymysql.connect(
+ host=self.host,
+ port=config._PORT, # MySQL 端口,例:3306
+ user=self.user,
+ password=self.pwd,
+ database=self.db,
+ charset="utf8mb4",
+ cursorclass=pymysql.cursors.Cursor
+ )
+
+ cur = self.conn.cursor()
+ if not cur:
+ raise NameError("连接数据库失败")
+
+ return cur
+
+ def ExecQuery(self, sql):
+ """执行查询语句并返回结果 list(tuple)"""
+ cur = self.__GetConnect()
+ cur.execute(sql)
+ resList = cur.fetchall()
+ self.conn.close()
+ return resList
+
+ def ExecNonQuery(self, sql):
+ """执行非查询语句"""
+ cur = self.__GetConnect()
+ cur.execute(sql)
+ self.conn.commit()
+ self.conn.close()
def get_model_by_ID(model_id, version="v-test"):
- ms = MSSQL(host=config._SQL_IP, user="root", pwd="123456", database="alert")
- resList = ms.ExecQuery(f"SELECT Model_info FROM model_cfg where model_id={model_id}")
+ ms = MySQL(host=config._SQL_IP, user="root", pwd="powerSIS#123", database="alert")
+ resList = ms.ExecQuery(f"SELECT Model_info FROM model_cfg where id={model_id}")
return json.loads(resList[0][0])
def get_model_by_id_and_version(model_id, version):
- ms = MSSQL(host=config._SQL_IP, user="root", pwd="123456", database="alert")
- resList = ms.ExecQuery(f"SELECT Model_info FROM model_version where model_id={model_id} and version='{version}'")
+ ms = MySQL(host=config._SQL_IP, user="root", pwd="powerSIS#123", database="alert")
+ resList = ms.ExecQuery(f"SELECT Model_info FROM model_version where id={model_id} and version='{version}'")
return json.loads(resList[0][0])
def pca(model, Data_origin):
diff --git a/PCA_Train.py b/PCA_Train.py
index dea65b5..8edee1d 100644
--- a/PCA_Train.py
+++ b/PCA_Train.py
@@ -252,7 +252,7 @@ def clearmain(info):
Eachsampletime["TerminalTime"] = timess[1]
SamplingTimePeriods.append(Eachsampletime)
Constraint = Constraint.replace("\n", " ")
- url = f"http://{config._CLEAN_IP}/exawebapi/exatime/GetCleaningData?ItemsInfo=%s&SamplingTimePeriods=%s&Constraint=%s&SamplingPeriod=%s&DCount=%d" % (
+ url = f"http://{config._CLEAN_IP}/api/exawebapi/exatime/GetCleaningData?ItemsInfo=%s&SamplingTimePeriods=%s&Constraint=%s&SamplingPeriod=%s&DCount=%d" % (
ItemsInfo, SamplingTimePeriods, Constraint, interval, DCount)
response = requests.get(url)
content = json.loads(response.text)
diff --git a/__pycache__/PCA_Test.cpython-310.pyc b/__pycache__/PCA_Test.cpython-310.pyc
index 106d838ddd3c9d8eeffbe8b83a4985d091668999..cadb7c07e47e41cfffc8bfa1db0cc3701f340c7d 100644
GIT binary patch
delta 973
zcmYL|%TE+R5Qph~%+A6-Kwk2SKmfBOuq>d7AfN)tB5x3)orTRfG|S-3&RRVyE>R>g
zA$ab;z=U`-nl&*VOuTt99z1BAvo}x1lPB#O6PRSaRR5}~tERf=_vqizh#ieqR>-Gj
zvDbJV`AE91=p&gm&VXn1UGwrlX3Ex!7Rx(4vuDG-jAk-$%0I~qf072a3@t|k+{oo!
zzsd4$2pHed3XBHqJmYRaw+khzm_}YRb5wi?))Oke2B#!jlw-*gMH;{3izL%N;MGu?sHTu6zR
z;qwuy=tbZ*Bz!Pb{u16GO;>S`pl;fnB?2&nE5F(lc4U!ngMkWv#DAR4rG90)j
z7YV-?4%g8;CO${3>Pu*PDU)bTiRW#N&CoCHyYl5YUbR9cs-ngsQRo+sq7TnL4^o&j
zEU`ZzdgE=PC)QGjxiBh0L)q2kx$MjmOp3Kww?cguha2KBHbhp%o0wKTgON88vxqs-
z9bZxA(OeRb;}c}9{67B2CrADE+<2UZG|0(0I8Y-as0h?{c2d;m+BwR)Q1#+gqL~~P`
z9F_H^PkxdX18ptq-bapLq>aEMh8Us`;T`)~J6j0qpWoe5@ECN4}|7!y}+Ozy&k(NEyQxG;LpkYJp}FX#Tx|K4-%WB#Omq}q&N
zu;qaGDx;s4U$wm_M|#JG3mXQk78H$wRj3+es`YBhqWzP+aHqMatSS}mG1ZFB-5S-o
z52(4U)F}5DIyJecWYn5m(o|j1gs-OR>%zST7KB6<@CtDD)jLi&>yb7Eccs^4fUWrK
z)^lh$j~KE~`A?9;`vUjZ6w?%4m0^V43iOd-_B0S5;=Yoh>$GISz7vM9fF$%KwUYPB
znYsBK_N41Vtb=Jl(gi8|OQ1+PE}_+1(hQR(J&?kY+g#IN!p^l8Npcc9xr{(#UaVQI
zsuoO%LDKEmVH&d&jJH)IqZm3k76T{&}jQ0n$rS#
zpPaoiEl*}(mMNi=5_eTim|>4YXNk<-hLlJSomUYHh-<7rJTG0x@Fsf{zDN}NL-?0V
z9O%147sA}9Kt*iUf`h`rStQ!k#r@T~W~nu;3Ee2V&3Y9Q7)h3)siwtQF4}!;5tlrT
zC=29UOsa_!UZACZplmxj+}De_9?bc(nY1i!nu3PIz!F~ixMC@wqGtuM%6><0lZM@B
z|3*lf6=P?l8>r{mvsi*8*qd0FkGt!j!5#KJHr2{q)Dq7|0fnpT}y?oMM8?mrYB}egR|Q`r9It-_E&m# (EYVX89IA?*7U+Y57***QUd*4Vi
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
U;_GAKw>Eu7*x^D;WS#5(1vG6(TmS$7
literal 0
HcmV?d00001
diff --git a/__pycache__/PCA_Test_offline.cpython-310.pyc b/__pycache__/PCA_Test_offline.cpython-310.pyc
index e1af82205fba569b10fcb4a5c13f1583b26cd522..559a9f1ecda584caf78f2fdf5919e5cc6f0decd9 100644
GIT binary patch
delta 243
zcmdmNwcm;-pO=@50SE;BwK6yII5JB*CR@dX7N-^!$0TRvm>I;lTYxcYbB@SXM#iYgN@78bA(KnRnz#diMid2th@i<#;vX2hHh&i9WD-jPiLe8S
zTbw0DiFw5Z`9PCHCksg_GftdrCbgS!{p3$l`xsYE-YD(PJrkrj6+~oCW|nbc>jE*?
zPxh8kbZG$@!I74klbV;93v?SurVvDI2T5=hTDHLo?nz5lbDlQR1%Y$pOTuRo0FKdxsaJn
zknz^$3X!dhjJGE1i3Kr+PHq%y;tmArE(!t>!ISyKKQQ)e{x8nSB$f;kVFwboI7^BW
z^NI`di&KljCd)}FGftlDB(j5!0P7aq*
zbZG+_!I74klbV;93v>}krU*pr1W9lez$)pO=@50SGQzT+Eor<1J)lpl4*JXJ}}qXJle*Wno}pGBMLqLfhFYraZqW
YJ0>wFwWuT}H$NpcM>i)iY2q<`0G+xOCIA2c
diff --git a/__pycache__/recon.cpython-310.pyc b/__pycache__/recon.cpython-310.pyc
index 4d24c2fc9db2cb35fd15c0a7f081aa70716da626..7b3a105102cba7cac9d367f0207c687278fc548d 100644
GIT binary patch
delta 63
zcmZ4KwAG0xpO=@50SE;BwK6yIgfgm_C0oUW7N-^!$0TRvm>I;lt!A5p@6n
diff --git a/environment.yml b/environment.yml
deleted file mode 100644
index e492002..0000000
--- a/environment.yml
+++ /dev/null
@@ -1,276 +0,0 @@
-name: C:\ProgramData\Anaconda3
-channels:
-- file:///C:/Users/Administrator/Downloads
-- defaults
-dependencies:
-- _ipyw_jlab_nb_ext_conf=0.1.0=py36he6757f0_0
-- alabaster=0.7.10=py36hcd07829_0
-- anaconda=5.0.1=py36h8316230_2
-- anaconda-client=1.6.5=py36hd36550c_0
-- anaconda-navigator=1.6.9=py36hc720852_0
-- anaconda-project=0.8.0=py36h8b3bf89_0
-- asn1crypto=0.22.0=py36h8e79faa_1
-- astroid=1.5.3=py36h9d85297_0
-- astropy=2.0.2=py36h06391c4_4
-- babel=2.5.0=py36h35444c1_0
-- backports=1.0=py36h81696a8_1
-- backports.shutil_get_terminal_size=1.0.0=py36h79ab834_2
-- beautifulsoup4=4.6.0=py36hd4cc5e8_1
-- bitarray=0.8.1=py36h6af124b_0
-- bkcharts=0.2=py36h7e685f7_0
-- blaze=0.11.3=py36h8a29ca5_0
-- bleach=2.0.0=py36h0a7e3d6_0
-- bokeh=0.12.10=py36h0be3b39_0
-- boto=2.48.0=py36h1a776d2_1
-- bottleneck=1.2.1=py36hd119dfa_0
-- bzip2=1.0.6=vc14hdec8e7a_1
-- ca-certificates=2017.08.26=h94faf87_0
-- cachecontrol=0.12.3=py36hfe50d7b_0
-- certifi=2017.7.27.1=py36h043bc9e_0
-- cffi=1.10.0=py36hae3d1b5_1
-- chardet=3.0.4=py36h420ce6e_1
-- click=6.7=py36hec8c647_0
-- cloudpickle=0.4.0=py36h639d8dc_0
-- clyent=1.2.2=py36hb10d595_1
-- colorama=0.3.9=py36h029ae33_0
-- comtypes=1.1.2=py36heb9b3d1_0
-- conda=4.3.30=py36h7e176b0_0
-- conda-build=3.0.27=py36h309a530_0
-- conda-env=2.6.0=h36134e3_1
-- conda-verify=2.0.0=py36h065de53_0
-- console_shortcut=0.1.1=h6bb2dd7_3
-- contextlib2=0.5.5=py36he5d52c0_0
-- cryptography=2.0.3=py36h123decb_1
-- curl=7.55.1=vc14hdaba4a4_3
-- cycler=0.10.0=py36h009560c_0
-- cython=0.26.1=py36h18049ac_0
-- cytoolz=0.8.2=py36h547e66e_0
-- dask=0.15.3=py36h396fcb9_0
-- dask-core=0.15.3=py36hd651449_0
-- datashape=0.5.4=py36h5770b85_0
-- decorator=4.1.2=py36he63a57b_0
-- distlib=0.2.5=py36h51371be_0
-- distributed=1.19.1=py36h8504682_0
-- docutils=0.14=py36h6012d8f_0
-- entrypoints=0.2.3=py36hfd66bb0_2
-- et_xmlfile=1.0.1=py36h3d2d736_0
-- fastcache=1.0.2=py36hffdae1b_0
-- filelock=2.0.12=py36hd7ddd41_0
-- flask=0.12.2=py36h98b5e8f_0
-- flask-cors=3.0.3=py36h8a3855d_0
-- freetype=2.8=vc14h17c9bdf_0
-- get_terminal_size=1.0.0=h38e98db_0
-- gevent=1.2.2=py36h342a76c_0
-- glob2=0.5=py36h11cc1bd_1
-- greenlet=0.4.12=py36ha00ad21_0
-- h5py=2.7.0=py36hfbe0a52_1
-- hdf5=1.10.1=vc14hb361328_0
-- heapdict=1.0.0=py36h21fa5f4_0
-- html5lib=0.999999999=py36ha09b1f3_0
-- icc_rt=2017.0.4=h97af966_0
-- icu=58.2=vc14hc45fdbb_0
-- idna=2.6=py36h148d497_1
-- imageio=2.2.0=py36had6c2d2_0
-- imagesize=0.7.1=py36he29f638_0
-- intel-openmp=2018.0.0=hcd89f80_7
-- ipykernel=4.6.1=py36hbb77b34_0
-- ipython=6.1.0=py36h236ecc8_1
-- ipython_genutils=0.2.0=py36h3c5d0ee_0
-- ipywidgets=7.0.0=py36h2e74ada_0
-- isort=4.2.15=py36h6198cc5_0
-- itsdangerous=0.24=py36hb6c5a24_1
-- jdcal=1.3=py36h64a5255_0
-- jedi=0.10.2=py36hed927a0_0
-- jinja2=2.9.6=py36h10aa3a0_1
-- jpeg=9b=vc14h4d7706e_1
-- jsonschema=2.6.0=py36h7636477_0
-- jupyter=1.0.0=py36h422fd7e_2
-- jupyter_client=5.1.0=py36h9902a9a_0
-- jupyter_console=5.2.0=py36h6d89b47_1
-- jupyter_core=4.3.0=py36h511e818_0
-- jupyterlab=0.27.0=py36h34cc53b_2
-- jupyterlab_launcher=0.4.0=py36h22c3ccf_0
-- lazy-object-proxy=1.3.1=py36hd1c21d2_0
-- libiconv=1.15=vc14h29686d3_5
-- libpng=1.6.32=vc14h5163883_3
-- libssh2=1.8.0=vc14hcf584a9_2
-- libtiff=4.0.8=vc14h04e2a1e_10
-- libxml2=2.9.4=vc14h8fd0f11_5
-- libxslt=1.1.29=vc14hf85b8d4_5
-- llvmlite=0.20.0=py36_0
-- locket=0.2.0=py36hfed976d_1
-- lockfile=0.12.2=py36h0468280_0
-- lxml=4.1.0=py36h0dcd83c_0
-- lzo=2.10=vc14h0a64fa6_1
-- markupsafe=1.0=py36h0e26971_1
-- matplotlib=2.1.0=py36h11b4b9c_0
-- mccabe=0.6.1=py36hb41005a_1
-- menuinst=1.4.10=py36h42196fb_0
-- mistune=0.7.4=py36h4874169_0
-- mkl=2018.0.0=h36b65af_4
-- mkl-service=1.1.2=py36h57e144c_4
-- mpmath=0.19=py36he326802_2
-- msgpack-python=0.4.8=py36h58b1e9d_0
-- multipledispatch=0.4.9=py36he44c36e_0
-- navigator-updater=0.1.0=py36h8a7b86b_0
-- nbconvert=5.3.1=py36h8dc0fde_0
-- nbformat=4.4.0=py36h3a5bc1b_0
-- networkx=2.0=py36hff991e3_0
-- nltk=3.2.4=py36hd0e0a39_0
-- nose=1.3.7=py36h1c3779e_2
-- notebook=5.0.0=py36hd9fbf6f_2
-- numba=0.35.0=np113py36_10
-- numexpr=2.6.2=py36h7ca04dc_1
-- numpy=1.13.3=py36ha320f96_0
-- numpydoc=0.7.0=py36ha25429e_0
-- odo=0.5.1=py36h7560279_0
-- olefile=0.44=py36h0a7bdd2_0
-- openpyxl=2.4.8=py36hf3b77f6_1
-- openssl=1.0.2l=vc14hcac20b0_2
-- packaging=16.8=py36ha0986f6_1
-- pandas=0.20.3=py36hce827b7_2
-- pandoc=1.19.2.1=hb2460c7_1
-- pandocfilters=1.4.2=py36h3ef6317_1
-- partd=0.3.8=py36hc8e763b_0
-- path.py=10.3.1=py36h3dd8b46_0
-- pathlib2=2.3.0=py36h7bfb78b_0
-- patsy=0.4.1=py36h42cefec_0
-- pep8=1.7.0=py36h0f3d67a_0
-- pickleshare=0.7.4=py36h9de030f_0
-- pillow=4.2.1=py36hdb25ab2_0
-- pip=9.0.1=py36hadba87b_3
-- pkginfo=1.4.1=py36hb0f9cfa_1
-- ply=3.10=py36h1211beb_0
-- progress=1.3=py36hbeca8d3_0
-- prompt_toolkit=1.0.15=py36h60b8f86_0
-- psutil=5.4.0=py36h4e662fb_0
-- py=1.4.34=py36ha4aca3a_1
-- pycodestyle=2.3.1=py36h7cc55cd_0
-- pycosat=0.6.2=py36hf17546d_1
-- pycparser=2.18=py36hd053e01_1
-- pycrypto=2.6.1=py36he68e6e2_1
-- pycurl=7.43.0=py36h086bf4c_3
-- pyflakes=1.6.0=py36h0b975d6_0
-- pygments=2.2.0=py36hb010967_0
-- pylint=1.7.4=py36ha4e6ded_0
-- pyodbc=4.0.17=py36h0006bc2_0
-- pyopenssl=17.2.0=py36h15ca2fc_0
-- pyparsing=2.2.0=py36h785a196_1
-- pyqt=5.6.0=py36hb5ed885_5
-- pysocks=1.6.7=py36h698d350_1
-- pytables=3.4.2=py36h71138e3_2
-- pytest=3.2.1=py36h753b05e_1
-- python=3.6.3=h9e2ca53_1
-- python-dateutil=2.6.1=py36h509ddcb_1
-- pytz=2017.2=py36h05d413f_1
-- pywavelets=0.5.2=py36hc649158_0
-- pywin32=221=py36h9c10281_0
-- pyyaml=3.12=py36h1d1928f_1
-- pyzmq=16.0.2=py36h38c27d9_2
-- qt=5.6.2=vc14h6f8c307_12
-- qtawesome=0.4.4=py36h5aa48f6_0
-- qtconsole=4.3.1=py36h99a29a9_0
-- qtpy=1.3.1=py36hb8717c5_0
-- requests=2.18.4=py36h4371aae_1
-- rope=0.10.5=py36hcaf5641_0
-- ruamel_yaml=0.11.14=py36h9b16331_2
-- scikit-image=0.13.0=py36h6dffa3f_1
-- scikit-learn=0.19.1=py36h53aea1b_0
-- scipy=0.19.1=py36h7565378_3
-- seaborn=0.8.0=py36h62cb67c_0
-- setuptools=36.5.0=py36h65f9e6e_0
-- simplegeneric=0.8.1=py36heab741f_0
-- singledispatch=3.4.0.3=py36h17d0c80_0
-- sip=4.18.1=py36h9c25514_2
-- six=1.11.0=py36h4db2310_1
-- snowballstemmer=1.2.1=py36h763602f_0
-- sortedcollections=0.5.3=py36hbefa0ab_0
-- sortedcontainers=1.5.7=py36ha90ac20_0
-- sphinx=1.6.3=py36h9bb690b_0
-- sphinxcontrib=1.0=py36hbbac3d2_1
-- sphinxcontrib-websupport=1.0.1=py36hb5e5916_1
-- spyder=3.2.4=py36h8845eaa_0
-- sqlalchemy=1.1.13=py36h5948d12_0
-- sqlite=3.20.1=vc14h7ce8c62_1
-- statsmodels=0.8.0=py36h6189b4c_0
-- sympy=1.1.1=py36h96708e0_0
-- tblib=1.3.2=py36h30f5020_0
-- testpath=0.3.1=py36h2698cfe_0
-- tk=8.6.7=vc14hb68737d_1
-- toolz=0.8.2=py36he152a52_0
-- tornado=4.5.2=py36h57f6048_0
-- traitlets=4.3.2=py36h096827d_0
-- typing=3.6.2=py36hb035bda_0
-- unicodecsv=0.14.1=py36h6450c06_0
-- urllib3=1.22=py36h276f60a_0
-- vc=14=h2379b0c_2
-- vs2015_runtime=14.0.25123=hd4c4e62_2
-- wcwidth=0.1.7=py36h3d5aa90_0
-- webencodings=0.5.1=py36h67c50ae_1
-- werkzeug=0.12.2=py36h866a736_0
-- wheel=0.29.0=py36h6ce6cde_1
-- widgetsnbextension=3.0.2=py36h364476f_1
-- win_inet_pton=1.0.1=py36he67d7fd_1
-- win_unicode_console=0.5=py36hcdbd4b5_0
-- wincertstore=0.2=py36h7fe50ca_0
-- wrapt=1.10.11=py36he5f5981_0
-- xlrd=1.1.0=py36h1cb58dc_1
-- xlsxwriter=1.0.2=py36hf723b7d_0
-- xlwings=0.11.4=py36hd3cf94d_0
-- xlwt=1.3.0=py36h1a4751e_0
-- yaml=0.1.7=vc14hb31d195_1
-- zict=0.1.3=py36h2d8e73e_0
-- zlib=1.2.11=vc14h1cdd9ab_1
-- pytorch=1.6.0=py3.6_cpu_0
-- pip:
- - absl-py==0.9.0
- - altgraph==0.17
- - astor==0.8.1
- - backports.shutil-get-terminal-size==1.0.0
- - coolprop==6.4.1
- - docopt==0.6.2
- - et-xmlfile==1.0.1
- - future==0.18.2
- - gast==0.3.3
- - google-pasta==0.2.0
- - grpcio==1.30.0
- - imbalanced-learn==0.7.0
- - imblearn==0.0
- - importlib-metadata==1.7.0
- - ipython-genutils==0.2.0
- - jenkspy==0.1.5
- - joblib==0.16.0
- - jupyter-client==5.1.0
- - jupyter-console==5.2.0
- - jupyter-core==4.3.0
- - jupyterlab-launcher==0.4.0
- - keras==2.4.3
- - keras-applications==1.0.8
- - keras-preprocessing==1.1.2
- - markdown==3.2.2
- - mdp==3.6
- - model-performance==0.0.2
- - pefile==2019.4.18
- - pipreqs==0.4.11
- - prompt-toolkit==1.0.15
- - protobuf==3.12.4
- - pyexecjs==1.5.1
- - pyinstaller==4.2
- - pyinstaller-hooks-contrib==2020.11
- - pymssql==2.1.4
- - pywin32-ctypes==0.2.0
- - ruamel-yaml==0.11.14
- - smote==0.1
- - tables==3.4.2
- - tensorboard==1.14.0
- - tensorflow==1.14.0
- - tensorflow-estimator==1.14.0
- - termcolor==1.1.0
- - threadpoolctl==2.1.0
- - torch==1.6.0
- - win-inet-pton==1.0.1
- - win-unicode-console==0.5
- - yarg==0.1.9
- - zipp==3.1.0
-prefix: C:\ProgramData\Anaconda3
-
diff --git a/requirements.txt b/requirements.txt
index e14ed3f17a0e8b0167a25dd7f8aba1981ab9189a..476659f9dd9c9b03f831e49af2651bb75c836096 100644
GIT binary patch
delta 40
qcmcb^{D*nN9YzIS1}=sIhDwH9ATDMoWXNHtW3Xi~WY7a+BL)E4=m>29
delta 7
Ocmeyve200%9Yz2T9s_Iu