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介绍
AI4Green 是一个基于 Web 的应用程序,可作为开源代码免费使用。它提供了ELN的核心功能,即能够安全地存储反应并在研究团队的不同成员之间共享它们。当用户计划他们的反应并将其记录在ELN中时,通过自动计算绿色指标和颜色编码危害、溶剂和反应条件来鼓励绿色和可持续的化学。该接口链接了一个由从 PubChem 中提取的数据构建的数据库,从而能够自动整理反应信息。该应用的设计有助于开发辅助可持续性应用,例如我们的溶剂指南。随着捕获更多的反应数据,后续工作将包括向用户提供“智能”可持续性建议。
特色功能:
完成反应表后,用户将被定向到汇总表(上图)。信息会自动从反应表传递到汇总表。向用户显示反应的绿色性和可持续性的视觉评估。这些要么被标记为不可持续(红色),要么被赋予红绿灯系统(红色 = 不推荐/危险,黄色 = 有问题,绿色 = 推荐)。可以在辅助功能页面上更改这些评级的特定颜色和阴影。根据危险代码生成总体危险等级,表示为低 (L)、中 (M)、危险 (H) 或非常危险 (VH)。以下指标的可持续性水平阈值符合 CHEM21 项目。(27)其中一些指标是自动计算的,例如反应中使用的化学元素的可持续性和原子效率。其他指标必须由用户输入,例如反应温度、间歇或流动反应条件、分离方法、催化剂的使用以及该催化剂是否被回收。接下来是风险评估部分,允许用户识别标准协议、废物处理、溢出程序以及与反应相关的任何其他风险。然后,可以通过对反应的危害、风险和后果进行自我评估来计算总体风险评分。通常,此时将进行反应。反应运行后,用户可以返回汇总表并输入未反应和实际产品质量。使用这些输入,可以计算出另外四个指标:质量效率、产量、转化率和选择性。在此阶段,可以将反应标记为完成并锁定以进行进一步编辑。 为了提高数据完整性,反应修改在数据库中带有时间戳。反应当前可以按字母顺序或最近创建的内容进行搜索。
开始安装
AI4Green有两种安装方法,一种是docker,一种是普通的配置python环境安装。
docker安装适合快速展示其功能。
下面介绍python安装
先安装需要的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,从里面拷贝出来),运行采用测试开发模式。
marvin需要注册的问题
注册地址:Chemicalize Professional - Hosted Cheminformatics Solutions
也就是这个系统最终需要联网使用,需要先到pro.chemicalize.com/app注册一个key,画图使用marvin的时候,都要到联网验证这个key。 因此不联网是无法使用的。
总结:
Linux下docker和python都调通。FreeBSD下python能启动,但是画图之后,提交失败,无法进入反应过程。
AI4Green是一个比较出色的开源电子实验记录本ELN,稍加修改,还是能满足创业医药公司使用的。
其它电子实验记录本还有哪些,欢迎朋友们留言提供信息!
调试:
FreeBSD下安装virtualbox 报错:
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的版本限制。
报错:
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
多亏后面找到了库依赖文件,不然一个一个试,会让人中途放弃的。
FreeBSD下画分子图后无法提交
无法提交,提交报错`Cannot process Reactant 1 structure` ,无法进入下一步反应模式,但是在Linux就正常。
这样就不能用FreeBSD平台了。
flask db upgrade数据库更新命令报错
```
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虚拟目录,可能这也是导致问题发生的原因。