PyOrganic

介绍

一个使用类来描述有机化合物结构的Python库。

架构

Compound:描述化合物

Atom(抽象类) -> Carbon, Hydrogen:描述原子

Bond(抽象类) -> SingleBond, DoubleBond, TripleBond:描述键

示例

from PyOrganic import * # 导入 PyOrganic

Methane = Compound() # 定义化合物甲烷

C1 = Carbon(Methane) # 定义5个原子

H1 = Hydrogen(Methane)

H2 = Hydrogen(Methane)

H3 = Hydrogen(Methane)

H4 = Hydrogen(Methane)

SingleBond(C1, H1) # 连接原子

SingleBond(C1, H2)

SingleBond(C1, H3)

SingleBond(C1, H4)

Methane.entry_atom = C1 # 设置根原子

print(Methane.chemical_formula) # 输出化学式 -> CH₄

文档

class Compound

化合物

方法

def __init__(self)

构造化合物

属性

entry_atom: Atom

访问该化合物的入口点

只读属性

atoms: list[Atom]

该化合物所拥有的原子

chemical_formula: str

化学式

name: str

系统命名法下的名称(待补)

class Atom

原子

方法

def __init__(self, name: str, symbol: str, max_bonds: int, compound: Compound)

构造原子

name : 原子名称

symbol : 元素符号

max_bonds : 最大能连接的键数

compound : 从属的化合物

def set_bond(self, bond: Bond)

在该原子上单方面连接新的键

bond : 新连接的键

def spread(self, atoms: Iterable[Atoms])

递归寻找化合物中所有原子

atoms : 由所有原子组成的列表

只读属性

bonds: list[Bond]

获得原子上所连的键的集合

compound: Compound

该原子所属化合物

max_bonds: int

最大可连的键的数量

name: str

原子名称

next_atoms: list[Atom]

与该原子相连的原子

rest_bonds_value: int

剩余可连的键的数量

symbol: str

元素符号

class Carbon(Atom)

碳原子

方法

__init__(self, compound: Compound) => Atom.__init__('碳', 'C', 4, compound)

构造碳原子

compound : 从属的化合物

class Hydrogen(Atom)

氢原子

方法

__init__(self, compound: Compound) => Atom.__init__('氢', 'H', 1, compound)

构造氢原子

compound : 从属的化合物

class Bond

方法

def __init__(self, left_atom: Atom, right_atom: Atom, value: int, name: str):

构造键

left_atom : 键左侧的原子

right_atom : 键右侧的原子

value : 键值(共用电子对数),单键为1,双键为2,叁键为3

name : 键名

只读属性

left_atom: Atom

键左边连的原子

right_atom: Atom

键右边连的原子

value: int

键值(共用电子对数),单键为1,双键为2,叁键为3

name: str

键名

class SingleBond(Bond)

方法

def __init__(left_atom: Atom, right_atom: Atom) => Bond.__init__(leftatom, rightatom, 1, '单键')

构造单键

left_atom : 键左侧的原子

right_atom : 键右侧的原子

class DoubleBond(Bond)

方法

def __init__(left_atom: Atom, right_atom: Atom) => Bond.__init__(leftatom, rightatom, 2, '双键')

构造双键

left_atom : 键左侧的原子

right_atom : 键右侧的原子

class TripleBond(Bond)

方法

def __init__(left_atom: Atom, right_atom: Atom) => Bond.__init__(leftatom, rightatom, 3, '叁键')

构造叁键

left_atom : 键左侧的原子

right_atom : 键右侧的原子

class NotTheSameCompoundError(Exception)

当不同化合物的原子试图成键时抛出

class NotEnoughBondsError(Exception)

当剩余可连的键不足的原子试图成键时抛出

贡献者

ZZH

NKID00

python 化学结构_PyOrganic相关推荐

  1. iMeta | 中国农大杨栋组揭示膳食纤维化学结构对肠道微生物的调控

    点击蓝字 关注我们 膳食纤维化学结构调控下肠道微生物动态变化 https://doi.org/10.1002/imt2.64 REVIEW ARTICLE ● 2022年11月6日,中国农业大学食品科 ...

  2. 以下构成python循环结构的方法中_超星尔雅初级英语口语(持续更新中)选修课答案...

    套期具有"对冲""互抵"的关系 答:正确 差异化战略核心是企业在市场营销.研究和开发.产品技术和工艺设计以及服务等方面具有强大的实力. 答:正确 以下构成Pyt ...

  3. python中常见的流程结构-Python分支结构(switch)操作简介

    Python当中并无switch语句,本文研究的主要是通过字典实现switch语句的功能,具体如下. switch语句用于编写多分支结构的程序,类似与if-.elif-.else语句. switch语 ...

  4. python文本结构化处理_在Python中标记非结构化文本数据

    python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...

  5. python函数结构_PYTHON 之结构体,全局变量,函数参数,lambda编程 等

    PYTHON 之结构体,全局变量,函数参数,lambda编程 ,generator(yield)使用以及如何自己构建switch结构 *********************** pass pass ...

  6. Python Ctypes结构体指针处理(函数参数,函数返回)

    参考网址: http://www.2cto.com/kf/201109/106444.html 本文演示了在python中调用C语言生成的动态库,返回结构体指针,并进行输出! test.c(动态库源代 ...

  7. 不属于python循环结构的是( )_Python语句print(type(['a','1',2,3]))的输出结果是哪一项?_学小易找答案...

    [简答题]整数的二进制.八进制.十六进制都用什么格式表示?将十进制数转换为二进制.八进制.十六进制的函数是什么? [单选题]Python语言属于以下哪一种语言? [简答题]叙述pass语句的作用. [ ...

  8. Python选择结构注意事项

    以百分制成绩转换为字母等级成绩为例,简单介绍一下Python选择结构需要注意的事项. 1.缩进必须要正确 在Python代码中,缩进是非常重要的.如果缩进不正确,会导致语法错误无法运行,也可能会导致逻 ...

  9. 以下构成python循环结构的方法中正确的是_python教程:python循环结构

    PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成.PyQt5本身拥有超过620个类和6000函数及方法.在可以运行于多个平台. PyQt5拥有双重协 ...

最新文章

  1. centos php 开启libgdgd_Linux下开启PHP GD库支持
  2. 产业AI实践中,如何有效提升图像识别精度、实现极小目标检测? | 百度AI公开课报名...
  3. error_reporting笔记
  4. 设计模式复习-简单工厂模式
  5. 清理系统盘遇到的问题
  6. ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)+预测新数据得分
  7. require.js学习记录
  8. 动态的显示当前的时间---setInterval的用法
  9. C#调用matlab,matlab图形Figure嵌入Winform窗体
  10. matlab调用refprop完全说明,Matlab调用REFPROP完
  11. java 如何执行dig 命令_linux dig 命令使用方法
  12. 【java】java实现pdf根据内容定位插入图片
  13. 服务器突然断电文件系统损坏,电脑突然断电造成系统文件损坏该如何修复?(高级篇)...
  14. 计算机组成原理SRop,【9A文】计算机组成原理历年真题.docx
  15. 系统分析与设计复习---项目管理概述
  16. linux 显示器识别工具,Linux 显示器未正确识别 最佳分辨率 Ubuntu 10.10 X1
  17. 计算机软著发明,时健
  18. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
  19. 非网页版微信机器人-Wechaty
  20. python的自省到底有什么用

热门文章

  1. 简述抽象和封装,对你学习Java有一些作用
  2. Android应用连接代理服务器状况监测解决
  3. unity, 荧光效果(bloom)
  4. 这就是计算机男用英语怎么说,科学网—Is a computer male or female? 计算机是男的还是女的? - 邱敦莲的博文...
  5. python type instance_Python type, types and isinstance()使用
  6. 算法导论吃透后的水平_初学算法,你应该这么玩
  7. 模板 字段_Anki学习之路(08)|什么是Anki模板类型?什么是字段?
  8. python 二维数组 长度_Python创建二维数组的正确姿势
  9. linux内核全局变量重定位,关于可重定位文件中全局变量的一个重定位疑惑,借各位牛刀一用^...
  10. linux 查redis状态_干货:用案例代码详解Redis中的事件驱动模型