Giter Club home page Giter Club logo

pytranslate's Introduction

pyTranslate

PeiwenJi 2021.04.23

1. 问题

参考在线软件https://web.expasy.org/translate/编写把DNA翻译成蛋白质序列的程序。

2. 代码说明

  • main.py: 主要逻辑代码
  • main_ui.py: “主界面”代码(由pyTranslate.ui转化而来)
  • results5_ui.py: “结果界面”代码(由results5.ui转化而来)

步骤

(1)用pyqt5绘制界面。

分别完成主界面、结果界面的绘制后,保存为pyTranslate.ui和results5.ui文件。

(2) 将.ui文件转化为.py文件。

win+R,打开cmd,进入控制台界面。切换到ui文件所在路径,使用pyuic5命令。

cd C:\Users\20181\Desktop\code
pyuic5 -o main_ui.py pyTranslate.ui
pyuic5 -o results5_ui.py results5.ui

(3) 新建main.py文件,编写主要逻辑代码。

使用以下代码实现界面和逻辑代码的分离。

from PyQt5 import QtWidgets,QtGui,QtCore
from py文件名 import 类名
import sys

class MainWindow(QtWidgets.QMainWindow, 类名):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
    # 此处编写业务逻辑代码
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

主要函数说明

(1)mainTranslate(self, seq): 将DNA转成氨基酸序列。

每次读三个碱基,如果在gencode中,返回对应的氨基酸;如果不在,记为,并继续读下去。最后返回翻译的序列。

def mainTranslate(self, seq):
    translate = ''.join([self.gencode.get(seq[3*i:3*i+3],'<UNKNOWN>') for i in range(len(seq)//3)])
    return translate

注:gencode(标准密码表——根据NCBI Genetic Codes Standard Code绘制)

(2) complement(self, s): 返回互补链。

查询basecomplement字典返回对应的互补链。

def complement(self, s):
    letters = list(s)
    letters = [self.basecomplement[base] for base in letters]
    return ''.join(letters)

注:basecomplement(碱基对应表)

(3) popWindow(self): 展示结果

弹出结果窗口。

# 创建一个QMainWindow,用来装载你需要的各种组件、控件
self.resultMainWindow = QtWidgets.QMainWindow() 
# ui是Ui_MainWindow()类的实例化对象
self.ui = Ui_MainWindow()
# 执行类中的setupUi方法,方法的参数是第二步中创建的QMainWindow
self.ui.setupUi(self.resultMainWindow) 
self.resultMainWindow.show()

预处理输入的DNA序列:去除空格、换行符、数字,并将所有字母大写。

str = self.plainTextEdit.toPlainText() # 获取文本
seq = filter(lambda ch: ch not in ' \t\n1234567890', str) # 去除空格、换行符、数字
seq = list(seq)
seq = "".join(seq)
seq = seq.upper() # 字母变大写

输出正向和反向翻译结果。

# 5'->3'
self.ui.textBrowser.setText(self.mainTranslate(seq[0:])) # 第一个阅读框
self.ui.textBrowser_2.setText(self.mainTranslate(seq[1:])) # 第二个阅读框
self.ui.textBrowser_3.setText(self.mainTranslate(seq[2:])) # 第三个阅读框

# 3'->5'
seq = self.complement(seq) # 获取互补链
self.ui.textBrowser_4.setText(self.mainTranslate(seq[::-1][0:])) # 反向第一个阅读框
self.ui.textBrowser_5.setText(self.mainTranslate(seq[::-1][1:])) # 反向第二个阅读框
self.ui.textBrowser_6.setText(self.mainTranslate(seq[::-1][2:])) # 反向第三个阅读框

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.