|
基因组测学回来的结果后,从assembly(组装)里找到序列文件,格式可能是:.fasta、.fastq、.seq、和.contig。fastq要转化为fasta,转化方法网上一大把哈。我的基因组序列是一个.seq文件:
$首先先呈上代码
seq=open('SK007.seq','r')
count={}
for i in seq:
if i[0]=='>':
continue
else:
s=i.split()
s1=s[0]
for c in s1:
count[c] = count.get(c,0) + 1
seq.close()
for k, v in count.items():
print(k + ' '+ str(v))
#序列文件的内部样子,共有119个scaffold,即scaffold1-scaffold119
#首先读取文件,将其赋值给seq,并创造一个空的字典。由于我的序列文件就在我的家目录下,所以读取文件时,可以写作“open('SK007.seq','r')”,如果序列文件在别的路径就需要写出详细的文件路径,例如“open('/data/SK007基因组/Assembly/SK007.seq','r')”,这样python才能找到你的文件。
seq=open('SK007.seq','r')
count={}
#接着使用‘遍历’的方法读取基因组序列。读取时以一行一行的字符串赋值给i,为了去除">scafford"行,选着条件判断,凡是以‘>’开头的字符串都跳过。其它的字符串通过str.split()方法,将每一个字符串一个一个的放在列表中,去掉末尾的的'\n'(直接用方法str.strip()就能很好的达到目的)。
for i in seq:
if i[0]=='>':
continue
else:
s=i.split()
s1=s[0]
for c in s1:
count[c] = count.get(c,0) + 1
#如果print(s)话会得到这样一组列表,然后将列表中的每一个字符串取出,对每一个字符串进行一个字母一个字母的'遍历',dict.get(key,default=None),key--字典中要查找的键,如果字典中有该键,则返回相应的值,default--如果没有该键,返回的该参数值。
#这样就将基因组序列众多碱基序列过了一遍,并利用字典将相应的碱基作为键(key),碱基数目作为值(value),形成了一个字典(dict)。再将字典中的键和值读取出来。由于序列中混有小写字母碱基片段所以结果是这样子。
for k, v in count.items():
print(k + ' '+ str(v))
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-26 17:52
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社