美文网首页
以gaps为线索提取序列,想到如何面向对象编程

以gaps为线索提取序列,想到如何面向对象编程

作者: qizhengyang | 来源:发表于2019-04-04 10:36 被阅读0次

定义函数
面向过程和面向对象都会定义函数
我这个是面向过程的,先定义一个函数,然后用这个函数提取信息

如何要面向对象,应该怎么做?
这个对象是谁?
序列,这个对象拥有序列的属性
allgaps,print_seq都是方法
参考

# date: 2019-4-2 11:02:33
# qizhengyang17@gmail.com
# 从blast XML 提取的比对序列,根据gap的位置提取需要设计引物的序列


# grep '\(<Hsp_qseq>\|<Hsp_hseq>\)' XXX.xml |sed 's/^ *//' | sed "s/<[^>]*>//g" > seq2.txt


def allgaps(seq):
    """返回一个列表,gap的位置信息和长度存以元组的形式存在列表里。
    输入的seq是字符串"""
    gaps = []
    indash = False
    for i, c in enumerate(seq):
        if indash is False and c == '-':
            c_ini = i
            indash = True
            dashn = 0
        elif indash is True and c == '-':
            dashn += 1
        elif indash is True and c != '-':
            indash = False
            gaps.append((c_ini, dashn+1))
    return gaps


p = []  # 存放坐标信息,二元列表
# [[(2147, 9), (8502, 8)], [(4018, 6), (6992, 1)]]

f = open('seq2.txt', 'r')
a = f.readlines()
for i in range(len(a)):
    p.append(allgaps(a[i]))


s = []  # 存放序列信息
for i in range(len(p)):
    print(i)
    for j in range(len(p[i])):  # t 坐标
        start = p[i][j][0] - 300
        stop = p[i][j][0] + p[i][j][1] + 299
        seq = a[i][start:stop]
        s.append(seq)

f = open('gaps.txt', 'w')
for i in s:
    f.write(i+'\n')
f.close()

# 需要改进的地方:
# 过滤掉长度短的gaps
# 合并距离近的gap
# 输出包含序列名和位置信息

相关文章

  • 以gaps为线索提取序列,想到如何面向对象编程

    定义函数面向过程和面向对象都会定义函数我这个是面向过程的,先定义一个函数,然后用这个函数提取信息 如何要面向对象,...

  • 001 面向过程 vs 面向对象

    定义 面向过程:一种以事件为中心的编程思想 面向对象:一种以“对象”为中心的编程思想 面向过程   编程的时候把解...

  • 2018-09-06-day14面向对象总结

    编程方式面向过程:以算法为工具函数式编程:以函数为工具面向对象编程:以类和对象为工具 1.类的声明 类:对拥有相同...

  • Python--类和对象学习

    一、面向对象编程概述 1、面向对象编程(OOP) 面向对象:以具体的事物(对象)为单位,考虑它的属性(特征)及动作...

  • 30分钟入门JavaScript函数式编程

    常用的编程思想有一下几类:1、面向过程编程,最初级的,想到哪写到哪;2、面向对象编程,以事物为中心的编程思想,把共...

  • swift注意事项

    一、编程范式 Swift 可以面向协议编程(POP)、函数式编程、面向对象编程。 Object-C 以面向对象编程...

  • 面向对象--封装性、继承性、多态性

    c++、Java中的面向对象: 面向对象编程思想是以“对象”为中心的,以“对象”为基本单元。可以再对象上添加数...

  • OC中的类和对象

    OOP (Objec? O?ien?ed P?og?amming )面向对象编程 。面向对象以事物为中心,完成某件...

  • Swift和OC的主要区别

    编程范式 Swift 可以面向协议编程、函数式编程、面向对象编程。 Object-C 以面向对象编程为主,当然你可...

  • Python面向对象编程

    面向对象编程概述 面向对象编程即OOP编程,区别于面向过程编程,面向对象编程比较适合开发大项目,会以更接近人类的思...

网友评论

      本文标题:以gaps为线索提取序列,想到如何面向对象编程

      本文链接:https://www.haomeiwen.com/subject/vkffiqtx.html