Python社区  »  Python

手把手带你学 Python3 | 字典与FASTA文件序列抽提

生信菜鸟团 • 8 月前 • 64 次点击  

这里是python学习的第五篇,也是基本数据类型的最后一篇。加油撒。

热点推荐

如果还没有安装入门环境首选 pycharm ,可以参见 三剑客 PyCharm 小试

学习编程语言的起点绕不过语法基础,快速掌握规范代码可以参见 手把手带你学 Python3 | 编程基础与规范代码


上一期我们罗列了列表的几种用法,切片及截取都是非常常规的用法,在后面的使用中会经常碰到,建议经常查看哟。

手把手带你学 Python3 | 列表使用一文就够了


元组拆包其实有很多能应用的场景,且元组的不可以变性本身就具有安全的属性,欲简单连接可以查看:

手把手带你学 Python3 | 元组拆包是个啥?


什么是字典

Python字典就好比是hash,一种可以存储任意类型对象,包括字符串、数字、元组、列表甚至是字典的数据类型。

字典的基本操作

#构建一个字典
new_Dict = {}

#写入
new_Dict = {1 :2,3:4,'a':'b','d':'c'}

#修改及添加
new_Dict['1'] = a
new_Dict['c'] = d
print(new_Dict)

new_Dict = {a:2,3:4,'a':'b','d':'c','c':'d'}

#删除
del new_Dict
del new_Dict['1']
dict.clear()


len(dict) 
str(dict)

字典应用

上一周的推送中,我们有一个小测试是想使用元组拆包对fa文件进行处理,获得一对一的信息,便于快速搜索,虽然基本实现搜索功能,但是不能快速将ID与序列一一对应,这点很不方便。因此,还是相同的目的,我们测试一下字典的效果:

less test.txt
>hsa_circ_00001
GTCCCACCCGAAAGATGCCCCCCAGCGCCAGTGCCGTGGACTTCTTCCAGCTCTTTGTCCCAGACAACGTCCTCAAGAACATGGTGGTGCAGACAAACATGTATGCCAAGAAGTTCCAGGAGCGGTTTGGGAGCGACGGAGCCTGGGTGGAGGTGACGCTGACGGAGATGAAGGCGTTCCTGGGCTACATGATCTCCACCAGCATCTCCCACTGCGAGTCCGTCCTCAGCATCTGGAGCGGAGGCTTCTACAGCAACCGCAGCCTCGCCCTCGTCATGAGCCAGGCCCGCTTCGAGAAGATCCTCAAGTACTTCCACGTCGTGGCCTTCCGCTCCAGCCAGACCACGCACGGGCTCTACAAGGTCCAGCCCTTCCTCGACTCCCTGCAGAACAGCTTCGACTCTGCCTTCAGGCCTTCCCAAACCCAGGTGCTACATGAACCCCTGATCGATGAGGATCCTGTATTCATTGCCACGTGCACAGAGCGGGAGCTGCGAAAGAGGAAAAAGCGGAAATTCAGCCTCTGGGTCAGACAATGTTCTTCCACTGGCTTCATCATCCAG
>hsa_circ_00002
GAAATTATCAGTTCATTGCCTAGCATAGTAAATGACAAATATGGAAGGAAGGTCCTATTGTACTTACTAAGCCCCAGAGATCCTGCACATACAGTACGAGAAATCATTGAAGTTCTGCAAAAAGGAGATGGAAATGCACACAGTAAGAAAGATACAGAGGTCCGCAGACGGGAGCTCCTAGAATCCATTTCTCCAGCTTTGTTAAGCTACCTGCAAGAACACGCCCAAGAAGTGGTGCTAGATAAGTCTGCGTGTGTGTTGGTGTCTGACATTCTGGGATCTGCCACTGGAGACGTTCAGCCTACCATGAATGCCATCGCCAGCTTGGCAGCAACAGGACTGCATCCTGGTGGCAAGGACGGAGAGCTTCACATTGCAGAACATCCTGCAGGACATCTAGTTCTGAAGTGGTTAATAGAGCAAGATAAAAAGATGAAAGAAAATGGGAGAGAAGGTTGTTTTGCAAAAACACTTGTAGAGCATGTTGGTATGAAGAACCTGAAGTCCTGGGCTAGTGTAAATCGAGGTGCCATTATTCTTTCTAGCCTCCTCCAGAGTTGTGACCTGGAAGTTGCAAACAAAGTCAAAGCTGCACTGAAAAGCTTGATTCCTACATTGGAAAAAACCAAAAGCACCAGCAAAGGAATAGAAATTCTACTTGAAAAACTGAGCACATAGGTGGAAAGAGTTAAGAGCAAGATGGAATGATTTTTTCTGTTCTCTGTTCTGTTTCCCAATGCAGAAAAGAAGGG
>hsa_circ_00003
ATGCCGAATATACCAACTCTCCTTTGGTACCTACATTCTGTACTCCTGGTTTGAAAATTCCATCTACAAAGAACAGCATAGCTTTG
>hsa_circ_00004
GTTTTACAAGATGAATTAGAAAACCGTTCTAATCAGGTGCGATGTGCAGAGAAAAAATTACAACACAAAGAATTGGAGTCACAGGAACAGATAACTTACATACGACAAGAATATGAAACAAAATTGAAAGGATTGATGCCAGCATCCCTAAGACAAGAACTTGAAGACACCATTTCCTCCCTAAAATCACAGGTTAATTTTCTGCAAAAGAGAGCTTCCATCCTTCAGGAAGAACTGACTACATATCAAGGCAGAAG
>hsa_circ_00005
ACACCATCCAGCACATGAGAGACAGCAAGCACATCGTCGTGTACCATCGAGGACGCTACTTCAAGGTCTGGCTCTACCATGATGGGCGGCTGCTGAAGCCCCGGGAGATGGAGCAGCAGATGCAGAGGATCCTGGACAATACCTCGGAGCCTCAGCCCGGGGAGGCCAGGCTGGCAGCCCTCACCGCAGGAGACAG

以下是不成熟的代码:

f = open('test.fa','rt')
f = f.readlines()

seq_dict = {}

for line in f:
    line = line.strip('\n')
    if line.startswith('>'):
        id = line.strip('>')
        seq_dict[id] = []
    else:
        #print(line)
        seq_dict[id] = line

#搜索

print(seq_dict['hsa_circ_00003']) #获得序列ATGCCGAATATACCAACTCTCCTTTGGTACCTACATTCTGTACTCCTGGTTTGAAAATTCCATCTACAAAGAACAGCATAGCTTTG

小结

三大数据结构的使用具有不同的应用场景,简单来说列表可以存储数据类型相同的元素,而当这些元素不需要改变时,推荐使用元组;当数据类型类型不一样的时候,包括更多复杂的信息时,我们就需要使用字典。

上面的小例子只是个引子,如果你能对fa文件能够批量处理,那么也就基本入门了python~ 我们下期见。

▼ 如果你生信基本技能已经入门,需要提高自己,请关注下面的生信技能树,看我们是如何完善生信技能,成为一个生信全栈工程师。

▼ 如果你是初学者,请关注下面的生信菜鸟团,了解生信基础名词,概念,扎实的打好基础,争取早日入门。

猜你喜欢:

【热点】三剑客 PyCharm 小试

热点编程基础与规范代码

热҈列表使用一文就够了

热҈元组拆包是个啥?

Shell文本处理三剑客使用小技巧 |awk grep sed +正则表达式

青蒿素科普贴

2019年五篇Cell文献阅读集锦

circRNA实验新更 - circRNA实验设计优化方案笔记

植物杂志 PP & PJ 都在用的研究思路

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/36891
 
64 次点击  
分享到微博