赞
踩
AI4Green是一个开源的电子实验记录本,官网:https://github.com/AI4Green/ai4green
国内镜像:
skywalk163/AI4Green - AI4Green - OpenI - 启智AI开源社区提供普惠算力!
论文地址:https://pubs.acs.org/doi/10.1021/acs.jcim.3c00306#
另一个开源的:https://github.com/epam/Indigo-ELN-v.-2.0
https://gitee.com/mirrors_epam/Indigo-ELN-v.-2.0
AI4Green 是一个基于 Web 的应用程序,可作为开源代码免费使用。它提供了ELN的核心功能,即能够安全地存储反应并在研究团队的不同成员之间共享它们。当用户计划他们的反应并将其记录在ELN中时,通过自动计算绿色指标和颜色编码危害、溶剂和反应条件来鼓励绿色和可持续的化学。该接口链接了一个由从 PubChem 中提取的数据构建的数据库,从而能够自动整理反应信息。该应用的设计有助于开发辅助可持续性应用,例如我们的溶剂指南。随着捕获更多的反应数据,后续工作将包括向用户提供“智能”可持续性建议。
特色功能:
完成反应表后,用户将被定向到汇总表(上图)。信息会自动从反应表传递到汇总表。向用户显示反应的绿色性和可持续性的视觉评估。这些要么被标记为不可持续(红色),要么被赋予红绿灯系统(红色 = 不推荐/危险,黄色 = 有问题,绿色 = 推荐)。可以在辅助功能页面上更改这些评级的特定颜色和阴影。根据危险代码生成总体危险等级,表示为低 (L)、中 (M)、危险 (H) 或非常危险 (VH)。以下指标的可持续性水平阈值符合 CHEM21 项目。(27)其中一些指标是自动计算的,例如反应中使用的化学元素的可持续性和原子效率。其他指标必须由用户输入,例如反应温度、间歇或流动反应条件、分离方法、催化剂的使用以及该催化剂是否被回收。接下来是风险评估部分,允许用户识别标准协议、废物处理、溢出程序以及与反应相关的任何其他风险。然后,可以通过对反应的危害、风险和后果进行自我评估来计算总体风险评分。通常,此时将进行反应。反应运行后,用户可以返回汇总表并输入未反应和实际产品质量。使用这些输入,可以计算出另外四个指标:质量效率、产量、转化率和选择性。在此阶段,可以将反应标记为完成并锁定以进行进一步编辑。 为了提高数据完整性,反应修改在数据库中带有时间戳。反应当前可以按字母顺序或最近创建的内容进行搜索。
AI4Green有两种安装方法,一种是docker,一种是普通的配置python环境安装。
docker安装适合快速展示其功能。
先安装python
- wget https://mirrors4.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh
- sh Miniconda3-py38_4.9.2-Linux-x86_64.sh
再安装需要的python库:
发现它没有requirements.txt文件,补上一个:
- python-dotenv
- flask_login
- flask_marshmallow
- flask_migrate
- flask_mail
- flask_wtf
- flask_db
- pytz
- psycopg2-binary
- chemspipy
- bs4
- lxml
- pyyaml
- werkzeug
- marshmallow_sqlalchemy
- python-magic
- azure-core
- azure-storage-blob
- plotly
- toml
在docker里面找到了它的requirements.txt文件
- beautifulsoup4==4.9.3
- certifi==2021.10.8
- ChemSpiPy==2.0.0
- click==8.0.3
- email-validator==1.1.3
- Flask==2.0.1
- Flask-Login==0.5.0
- Flask-Mail==0.9.1
- Flask-Testing==0.8.1
- Flask-WTF==0.14.3
- itsdangerous==2.0.1
- Jinja2==3.0.2
- lxml==4.6.3
- pandas==1.4.1
- pip==21.2.4
- pony==0.7.14
- psycopg2-binary==2.9.3
- PyJWT==2.1.0
- python-dateutil==2.8.2
- python-decouple==3.5
- pytz==2021.3
- pyyaml==6.0
- requests==2.26.0
- selenium==3.141.0
- setuptools==58.0.4
- soupsieve==2.3.1
- urllib3==1.26.7
- Werkzeug==2.0.3
- wheel==0.37.1
- WTForms==2.3.3
- plotly==5.9.0
另外它还需要安装rdkit这个库!
在配置python环境时,发现它是使用conda的,众所周知,conda有时候会比较慢,所以换用了pip安装,但是整个项目都没有找到requirements.txt文件,于是只好手工试出来这些库。当然最终是从项目里面找到了官方的文件,发现很多库版本都是写死的,这也是为什么刚开始手工试出来这些库还是无法成功运行的原因。
数据库那边,看得不是很明白,是不是需要先安装一个postgre库呢? 还是直接使用sqlalchery就可以了呢?
先回答这个问题:
直接启动,它会提示:`Starting app in test/development mode with sqlite database`也就是使用了测试开发模式,使用了sqlite数据库。
安装过程中碰到的问题:
按照手册单步执行,数据集flask db upgrade这句没法执行,报错`Error: No such command 'db'.`
后面执行下载数据集`flask download-pubchem`,也是卡住
- for prop in model.__mapper__.attrs:
- Downloading PubChem database file: http://ftp.ncbi.nlm.nih.gov/pubchem/Compound/Extras/CID-LCSS.xml.gz and saving as Pubchem-Database
关于flask数据库的操作,可以参考这个文档:在 Flask应用中使用Flask-SQLAlchemy管理数据库 - 知乎
查看docker里面,发现其执行命令为:
- # init a base image
- FROM continuumio/miniconda3
- # Create the environment:
- COPY environment.yaml .
- RUN conda env create -f environment.yaml
- # Make RUN commands use the new environment:
- SHELL ["conda", "run", "-n", "ai4green", "/bin/bash", "-c"]
- # install RDKit
- RUN conda install -c conda-forge rdkit
- # run pip to install the dependencies of the flask app
- COPY requirements.txt requirements.txt
- RUN pip install -r requirements.txt
- # The code to run when container is started:
- COPY . .
- EXPOSE 80
- ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "ai4green", "python", "Webapp/app.py"]
而且github中的,和docker里面的,文件都不一样。比如github里面没有requirements.txt config.py configs.yaml 等文件。
手工安装的时候,最后会报错:
- (ai4green) skywalk@ub:~/work/Webapp$ python app.py
- Traceback (most recent call last):
- File "app.py", line 4, in <module>
- from sources import app
- File "/home/skywalk/work/Webapp/sources/__init__.py", line 10, in <module>
- from flask_login import LoginManager # imports the login manager from Flask-Login
- File "/home/skywalk/py39/envs/ai4green/lib/python3.8/site-packages/flask_login/__init__.py", line 16, in <module>
- from .login_manager import LoginManager
- File "/home/skywalk/py39/envs/ai4green/lib/python3.8/site-packages/flask_login/login_manager.py", line 12, in <module>
- from flask import (_request_ctx_stack, abort, current_app, flash, redirect,
- ImportError: cannot import name '_request_ctx_stack' from 'flask' (/home/skywalk/py39/envs/ai4green/lib/python3.8/site-packages/flask/__init__.py)
将flask版本降低到2.01,搞定:
Flask==2.0.1
pip install Flask==2.0.1
后来发现整个flask的库版本都要降低,一个个试最后放弃了。最终是在项目的docker环境里找到了requirements.txt文件,否则真不知道要试到什么时候。
安装总结:
现在采用的安装方式是一种折中的方案,即用python安装,但是使用docker里面的文件(启动docker,从里面拷贝出来),运行采用测试开发模式。
注册地址:Chemicalize Professional - Hosted Cheminformatics Solutions
也就是这个系统最终需要联网使用,需要先到pro.chemicalize.com/app注册一个key,画图使用marvin的时候,都要到联网验证这个key。 因此不联网是无法使用的。
配置好后,执行python Webapp/app.py 即可打开web服务。测试时发现网页打开很慢,尤其是jquery的代码读取,卡住好大一会儿!
解决的方法就是将jquery的js代码下到本地,修改成本地static读取
- src="https://code.jquery.com/jquery-3.7.0.js"
-
- # 修改为:
-
- src="/static/jquery/jquery-3.7.0.js"
-
- # 同样的jquery-2.2.4.min.js文件也做同样处理
具体参考:前端cdn、ajax、code等加速-CSDN博客
Linux下docker和python都调通。FreeBSD下python能启动,但是画图之后,提交失败,无法进入反应过程。
AI4Green是一个比较出色的开源电子实验记录本ELN,稍加修改,还是能满足创业医药公司使用的。
其它电子实验记录本还有哪些,欢迎朋友们留言提供信息!
- wget https://mirrors4.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh
- sh Miniconda3-py38_4.9.2-Linux-x86_64.sh
-
- # 将python3.8安装到py38目录,激活pythn环境。conda安装时选择激活,则下次登录的时候自动激活。
- source py38/bin/activate
- # 设置pip全局镜像
- pip config --global set global.index-url https://mirror.baidu.com/pypi/simple/
- # 若全局报错,则添加用户镜像
- pip config --user set global.index-url https://mirror.baidu.com/pypi/simple/
-
- 下载ai4green源代码
- mkdir github
- cd github
- git clone https://openi.pcl.ac.cn/skywalk163/ai4green
-
- 进入ai4green安装库
- cd ai4green/Webapp
- pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
- # 或
- pip install -r req.txt -i https://mirror.baidu.com/pypi/simple
新的requirements.txt文件,暂时还是用repo里的req.txt:
- beautifulsoup4==4.9.3
- certifi==2021.10.8
- ChemSpiPy==2.0.0
- click==8.0.3
- email-validator==1.1.3
- Flask==2.0.1
- Flask-Login==0.5.0
- Flask-Mail==0.9.1
- Flask-Testing==0.8.1
- Flask-WTF==0.14.3
- itsdangerous==2.0.1
- Jinja2==3.0.2
- lxml==4.6.3
- pandas==1.4.1
- pip==21.2.4
- # pony==0.7.14
- pony
- psycopg2-binary==2.9.3
- PyJWT==2.1.0
- python-dateutil==2.8.2
- python-decouple==3.5
- pytz==2021.3
- pyyaml==6.0
- requests==2.26.0
- selenium==3.141.0
- setuptools==58.0.4
- soupsieve==2.3.1
- urllib3==1.26.7
- Werkzeug==2.0.3
- wheel==0.37.1
- WTForms==2.3.3
- plotly==5.9.0
- rdkit
好吧,还是没有弄好,想合并两个依赖库文件,但是发现效果未必好,还是先pip安装第一个,再安装第二个吧!
如果还是反复flask和sqlalchemy报错,则需要到官方的docker里面,拿里面的代码。我发现那里面的代码跟github上的不一样,官方github的代码会一直报错: cannot import name 'app_ctx' from 'flask.globals' ,这个地方坑了我两次!
一次是docker里面能启动,但是pip安装环境不能启动,后来是cp了docker里面的代码才搞定。
第二次是,想尝试在新的机器安装并总结出快速安装的步骤,结果一直报错,无法启动。后来才想起来是代码不一致的问题。
freebsd下pkg安装virtual box报错:pkg: cached package lzo2-2.10_1: missing or size mismatch, cannot continue Consider running 'pkg update -f'
解决的方法,是重新设定pkg的源使用latest
FreeBSD: { url: "http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly", }
放置在/usr/local/etc/pkg/repos
同样的,/etc/make.conf文件也重新写了一下
from werkzeug.urls import url_quote
ImportError: cannot import name 'url_quote' from 'werkzeug.urls' (/home/skywalk/py39/envs/ai4green/lib/python3.8/site-packages/werkzeug/urls.py)
将werkzeug的版本也降下来
from flask.globals import app_ctx
ImportError: cannot import name 'app_ctx' from 'flask.globals' (/home/skywalk/py39/envs/ai4green/lib/python3.8/site-packages/flask/globals.py)
究其原因是flask的版本太高了,降低到2.x, flask-sqlalchemy的版本也要降低:
pip install Flask-sqlalchemy==2.0.0
最根本原因是docker里面使用了conda常见flask环境,没有见到这些flask的版本限制。
(若还有问题,升级到2.4版本,如下)
from flask.ext.sqlalchemy._compat import iteritems, itervalues, xrange, \
ModuleNotFoundError: No module named 'flask.ext'
把flask_sqlalchemy版本降低到2.4-2.5 大约问题解决。
File "/home/skywalk/py39/envs/ai4green/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 79, in _include_sqlalchemy
for key in module.__all__:
AttributeError: module 'sqlalchemy' has no attribute '__all__'
解决方法;pip install sqlalchemy==1.4.40
self.SQLAlchemySchema.OPTIONS_CLASS.session = db.session
AttributeError: '_SQLAlchemyState' object has no attribute 'session'
先上结论:flask的sqlalchemy也是乱的一塌糊涂啊!
https://wiki.freebsd.org/VirtualBox
多亏后面找到了库依赖文件,不然一个一个试,会让人中途放弃的。
升级:pip install sqlalchemy==2.0.23
无法提交,提交报错`Cannot process Reactant 1 structure` ,无法进入下一步反应模式,但是在Linux就正常。
这样就不能用FreeBSD平台了。
```
Starting app in test/development mode with sqlite database
PONY_TEST
Usage: flask [OPTIONS] COMMAND [ARGS]...
Try 'flask --help' for help.
Error: No such command 'db'.
```
可能需要前面一步步慢慢来吧,中间过程没法跳过。不够关键这是flask的报错啊,版本应该是对的啊! 不过FreeBSD下因为安装RDKIT,导致只能放在系统目录,不能放在venv虚拟目录,可能这也是导致问题发生的原因。
from werkzeug.security import safe_str_cmp
ImportError: cannot import name 'safe_str_cmp' from 'werkzeug.security' (/mnt/data/work/py38/lib/python3.8/site-packages/werkzeug/security.py)
安装2.0版本解决: pip install werkzeug==2.0
解决方法: sudo apt install libxrender1
先查看无线网卡,可以用ifconfig ,若是看不到,用ifconfig -a
然后搜索wifi网络,用sudo iw dev wlp3s0 scan | more
然后写配置文件
$sudo -i
# wpa_passphrase mywireless secretpassphrase > /etc/wpa_supplicant/wpa_supplicant.conf
特殊说明:
1、mywireless 表示你要登录的 wifi 名字
2、secretpassphrase 表示 wifi 登录的密码
最后是加载配置文件:wpa_supplicant -i wlp3s0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
我使用的时候没有加-B选项
参考这篇文档:Ubuntu使用命令行配置WIFI_ubuntu无线网-CSDN博客
from rdkit.Chem.Draw import rdMolDraw2D
ImportError: libXext.so.6: cannot open shared object file: No such file or directory
解决方法:apt install libxext6
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。