资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Python

python学习笔记:mol2转换列表工具实验

Python 更新时间: 发布时间: 计算机考试归档 最新发布

python学习笔记:mol2转换列表工具实验

mol2里面有一些日常用到原子信息,这些信息在日常实验过程,会有快速转换列表的需求。下面,我们看看这个怎么转换。首先我们抽出一段截取的文件信息。通过如下代码将每一行进行列表展示。

mol2str = '''1 C1         13.8060   37.7840   36.1770 C.2       1 DHY         0.0445
      2 C2         13.5920   36.3210   35.7700 C.3       1 DHY         0.0261
      3 C1'        12.4160   35.9970   34.8980 C.ar      1 DHY        -0.0497
      4 C2'        12.3640   36.6850   33.6940 C.ar      1 DHY        -0.0384
      5 C3'        11.3370   36.4780   32.8090 C.ar      1 DHY         0.1101
      6 O3'        11.0820   37.0600   31.5790 O.3       1 DHY        -0.3385
      7 C4'        10.3460   35.5510   33.1180 C.ar      1 DHY         0.1090
      8 O4'         9.4350   35.4550   32.0850 O.3       1 DHY        -0.3413
      9 C5'        10.3720   34.8500   34.3070 C.ar      1 DHY        -0.0479
     10 C6'        11.4240   35.0560   35.2000 C.ar      1 DHY        -0.0784
     11 O1         14.4450   38.0110   37.1970 O.co2     1 DHY        -0.5667
     12 O2         13.2690   38.7890   35.7080 O.co2     1 DHY        -0.5667
     13 H1         13.4835   35.7366   36.6956 H         1 DHY         0.0566
     14 H2         14.4958   35.9951   35.2344 H         1 DHY         0.0566
     15 H3         13.1455   37.3954   33.4498 H         1 DHY         0.0453
     16 H4         11.0657   36.3870   30.9088 H         1 DHY         0.2442
     17 H5          9.6743   36.0633   31.3957 H         1 DHY         0.2420
     18 H6          9.5825   34.1462   34.5446 H         1 DHY         0.0493
     19 H7         11.4732   34.4902   36.1233 H         1 DHY         0.0439'''


def mo2list(txt, filter=''):
    list = txt.split("n")
    result = ''
    for line in list:
        listItem = line.split()
        if filter != '':
            filter_list = filter.split(',')
            result += "[" + ",".join(listItem[int(i)] for i in filter_list) + "],n"
        else:
            result += "[" + ",".join(listItem) + "],n"

    print(result)

if __name__ == '__main__':
    mo2list(mol2str)

转换出来是一个列表存储结构。

代码过程理解为对这个元素采取分步处理,添加对应的逗号过程。但是发现如果我们只是需要其中某项则可以采取过滤方法。获取我们需要关键部分信息。如下代码。

if __name__ == '__main__':
    # mo2list(mol2str)
    mo2list(mol2str, '1,2,3,4')

在上述操作中,有了这个思路,我们可以在项目过程实现了一个QT交互操作实现这个过程。在可视化操作基础上,利用上述操作过程,达到快速转换Mol2文件里面数据的目的。

如下关键代码。

from PyQt5.QtWidgets import (QWidget, QPushButton, QLineEdit, QHBoxLayout,
                             QTextEdit, QVBoxLayout)



class ListConver(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 数据快速转换列表

        self.vLayout = QVBoxLayout(self)
        self.vLayout.setContentsMargins(10, 10, 10, 10)

        hbox = QWidget()
        self.vLayout.addWidget(hbox)

        self.horizontalLayout = QHBoxLayout(hbox)
        self.horizontalLayout.setSpacing(6)

        self.textEdit = QTextEdit(hbox)
        self.horizontalLayout.addWidget(self.textEdit)

        self.textEdit_2 = QTextEdit(hbox)
        self.horizontalLayout.addWidget(self.textEdit_2)

        self.output = QLineEdit()
        self.output.setPlaceholderText('输入需要过滤列表序列,如 0,1,2按逗号进行分隔')
        self.vLayout.addWidget(self.output)

        self.pushButton = QPushButton('转换')
        self.pushButton.resize(80, 20)
        self.pushButton.clicked.connect(self.onChane)
        self.pushButton.setStyleSheet(''' 
                                      QPushButton
                                      {text-align : center;
                                       color: #fff;
                                       background-color: #354052;
                                       border:none;
                                       padding: 6px;
                                       height:30px;
                                       line-height:44px;
                                       font : 12px;}
                                      ''')
        self.vLayout.addWidget(self.pushButton)

    def onChane(self, e):
        txt = self.textEdit.toPlainText()
        if txt != "":
            filter = self.output.text()
            list = txt.split("n")
            result = ''
            for line in list:
                listItem = line.split()
                if filter != '':
                   filter_list = filter.split(',')
                   result += "[" + ",".join(listItem[int(i)] for i in filter_list) + "],n"
                else:
                  result += "[" + ",".join(listItem) + "],n"
            self.textEdit_2.setText(result)


有了此思路制作的小工具,可以对日常数据进行实验,清洗,抽取和转换,方便各种格式之间转换。总体思路过程也十分简单。

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/323806.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【python学习笔记:mol2转换列表工具实验】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2