AI4Green开源ELN(电子实验记录本)

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虚拟目录,可能这也是导致问题发生的原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/283685.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python开发环境[PycharmEclipseAnaconda]

Pycharm配置Python开发环境 每种语言的开发工具都有很多&#xff0c;如果写一些小的脚本或者小的工具&#xff0c;建议直接使用命令行或者Python自带的IDLE&#xff0c;如果进行大型的开发工作建议使用Pycharm&#xff0c;当然这属于个人喜好。 虽然Pycharm给了我们一个美观的…

安全加固指南:如何更改 SSH 服务器的默认端口号

在 Linux 系统中修改 SSH 服务的默认端口号是一项重要的安全措施&#xff0c;它可以帮助增强系统的安全性。这个过程相对简单&#xff0c;但必须由具有管理员权限的用户来执行。下面&#xff0c;我将向大家介绍如何安全地更改 SSH 端口的具体步骤。 1 备份 SSH 配置文件 在修改…

【MyBatis】操作数据库——入门

文章目录 为什么要学习MyBatis什么是MyBatisMyBatis 入门创建带有MyBatis框架的SpringBoot项目数据准备在配置文件中配置数据库相关信息实现持久层代码单元测试 为什么要学习MyBatis 前面我们肯定多多少少学过 sql 语言&#xff0c;sql 语言是一种操作数据库的一类语言&#x…

【AIGC风格prompt】风格类绘画风格的提示词技巧

风格类绘画风格的提示词展示 主题&#xff1a;首先需要确定绘画的主题&#xff0c;例如动物、自然景观、人物等。 描述&#xff1a;根据主题提供详细的描述&#xff0c;包括颜色、情感、场景等。 绘画细节&#xff1a;描述绘画中的细节&#xff0c;例如表情、纹理、光影等。 场…

认识Linux指令之 “mv” 指令

01.mv指令&#xff08;重要&#xff09; mv命令是move的缩写&#xff0c;可以用来移动文件或者将文件改名&#xff08;move (rename) files&#xff09;&#xff0c;是Linux系统下常用的命令&#xff0c;经常用来备份文件或者目录。 语法: mv [选项] 源文件或目录 目标文件或…

影视后期:Pr 调色处理之风格调色

写在前面 整理一些影视后期相关学习笔记博文为 Pr 调色处理中风格调色&#xff0c;涉及下面几个Demo 好莱坞电影电影感调色复古港风调色赛博朋克风格调色日系小清晰调色 理解不足小伙伴帮忙指正 简单地说就是害怕向前迈进或者是不想真正地努力。不愿意为了改变自我而牺牲目前所…

jsp介绍

JSP 一种编写动态网页的语言&#xff0c;可以嵌入java代码和html代码&#xff0c;其底层本质上为servlet,html部分为输出流&#xff0c;编译为java文件 例如 源jsp文件 <% page contentType"text/html; charsetutf-8" language"java" pageEncoding&…

数据库存储引擎

一、什么是存储引擎 存储引擎是MySQL数据库中的一个【组件】&#xff0c;【负责执行实际的数据I/O操作】&#xff0c;工作在文件系统之上&#xff0c;数据库的数据会先传到存储引擎&#xff0c;在按照存储引擎的格式&#xff0c;保存到文件系统。 常用的存储引擎&#xff1a;…

在多Module项目中,给IDEA底部选项卡区域添加Services选项卡

一般一个spring cloud项目中大大小小存在几个十几个module编写具体的微服务项目。此时&#xff0c;如果要调试测需要依次启动各个项目比较麻烦。 idea其实提供了各module的启动管理工具了&#xff0c;可以快速启动和关闭各个服务&#xff0c;也能批量操作&#xff0c;比如一次…

[每周一更]-(第49期):一名成熟Go开发需储备的知识点(答案篇)- 2

答案篇 1、Go语言基础知识 什么是Go语言&#xff1f;它有哪些特点&#xff1f; Go语言&#xff08;也称为Golang&#xff09;是一种由Google开发的开源编程语言。它于2007年首次公开发布&#xff0c;并在2012年正式推出了稳定版本。Go语言旨在提供简单、高效、可靠的编程解决…

Windows 10 安装和开启VNCServer 服务

Windows 10 安装和开启VNCServer 服务 登录云服务器 使用本地RDP登录到配置VNCServer服务的Windows10系统的云服务器。 下载VNC Server安装包 打开官网下载VNCServer安装包 URL&#xff1a;https://www.realvnc.com/en/connect/download/vnc/windows/ 安装VNC Server 双击…

基于蝗虫算法优化的Elman神经网络数据预测 - 附代码

基于蝗虫算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蝗虫算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于蝗虫优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

Adobe ColdFusion 文件读取漏洞(CVE-2010-2861)

漏洞原理 Adobe ColdFusion是美国Adobe公司的一款动态Web服务器产品&#xff0c;其运行的CFML&#xff08;ColdFusion Markup Language&#xff09;是针对Web应用的一种程序设计语言。由于AJP协议设计存在缺陷导致内部相关的属性可控&#xff0c;攻击者可以构造属性值&#xff…

微信小程序发送模板消息-详解【有图】

前言 在发送模板消息之前我们要首先搞清楚微信小程序的逻辑是什么&#xff0c;这只是前端的一个demo实现&#xff0c;建议大家在后端处理&#xff0c;前端具体实现&#xff1a;如下图 1.获取小程序Id和密钥 我们注册完微信小程序后&#xff0c;可以在开发设置中看到以下内容&a…

《Linux系列》Linux磁盘MBR分区扩容

文章目录 Linux磁盘MBR分区扩容1.前言2.控制台磁盘扩容3.分区扩容3.1 fdisk3.2 lsblk3.3 扩容分区 4.扩容文件系统4.1 df4.2 扩容文件系统 Linux磁盘MBR分区扩容 1&#xff09;参考阿里云扩容分区文档&#xff0c;整理MBR分区扩容 2&#xff09;本文档适用于MBR分区(fdisk -lu查…

【STM32】SPI通信

1 SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外设接口&#xff09;是由Motorola公司开发的一种通用数据总线 四根通信线&#xff1a;SCK&#xff08;Serial Clock&#xff0c;串行时钟&#xff09;、MOSI&#xff08;Master Output Slave Input&am…

N 皇后 II[困难]

一、题目 n皇后问题 研究的是如何将n个皇后放置在n n的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。给你一个整数n&#xff0c;返回n皇后问题 不同的解决方案的数量。 示例 1&#xff1a; 输入&#xff1a;n 4 输出&#xff1a;2 解释&#xff1a;如上图所示&#…

Rust学习笔记005:结构体 struct

在 Rust 中&#xff0c;struct 是一种用于创建自定义数据类型的关键字&#xff0c;它允许你定义和组织数据的结构。struct 可以包含多个不同类型的字段&#xff08;fields&#xff09;&#xff0c;每个字段都有一个名称和一个类型。 定义结构体 下面是一个简单的例子&#xff…

基于JAVA的酒店管理系统设计

摘 要 我们对酒店进行调研&#xff0c;发现部分酒店依托第三方平台&#xff0c;但第三方平台没有办法更好帮助酒店管理&#xff0c;故我们决定帮助酒店开发一套基于 Java 的酒店管理系统。使用基于Java的酒店管理系统可以帮助酒店完成顾客入住信息的管理&#xff0c;酒店物资的…

构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践

作者&#xff1a;柳下 概述 随着企业规模和数据量的增长&#xff0c;数据的价值越来越受到重视。数据的变化和更新变得更加频繁和复杂&#xff0c;因此及时捕获和处理这些变化变得至关重要。为了满足这一需求&#xff0c;数据库 CDC&#xff08;Change Data Capture&#xff…