Python社区  »  Python

​手把手带你学 Python3 | python3 脚本小实战(代码放送)

生信菜鸟团 • 1 月前 • 72 次点击  


这里是python3学习笔记的第七篇。小编也从蒙圈的状态开始写一些手推车脚本去完成一些文件的处理。今天的推送就贴上一个最近写的脚本,一定存在可以优化的点,也希望大家不吝赐教。

circRNA和lncRNA的分析依旧火热,生信预测软件也相对成熟,而且好用。伴随着研究的透彻,你也极有可能获得如上的表格,非常多的信息(为了展示本脚本想获取的有效信息,因此就简单的写了两行,右边展示为该分子在各个样本中比对到的reads数)。

在转录组分析中,我们会对不同样本(即生物学意义不同的组)进行分别测序,拟找到不同样本间差异表达的基因,也就是可能在该过程中发挥潜在功能的分子。表格信息太多就需要正确的姿势去获取。

贴代码:

import os
import re

os.chdir('C:\\Users\\user\\desktop')
f = open('expression.txt''rt')
f = f.readlines()
f3 = open('circRNA_sampleinfo.fa','w+')

dict_sample = {}

from itertools import islice
for line in islice(f, 1None):
    line = line.split('\t')
    ids = line[3]
    dict_sample[ids] = []
    t_sample = int(line[-1]) + int(line[-2]) + int(line[-3])
    c_sample = int(line[-4]) + int(line[-5]) + int(line[-6])
    if t_sample >0:
        dict_sample[ids] = ['T']
    if m_sample > 0 :
        dict_sample[ids].append('C')

f2 = open('circ.fa','rt')
for orf_line in f2:
    if orf_line.startswith('>'):
        orf_id = orf_line.split(':')[0]
        circ_id = re.findall(r'_(.*)', orf_id)[0]
        sample_info = ':'+str(dict_sample[circ_id])
        orf_id1 = re.sub(r'$',sample_info,orf_line,1)
        f3.write(orf_id1)
    else:

        f3.write(orf_line)f3.close()

代码分两段,放在pycharm上跑的,为了方便就将工作路径放在了桌面。区分样本主要依靠其中的判断,也就是上一期讲的条件判断。在此认为,在不同的生物重复中检测到我们将报这条circRNA在其中表达。

第二段是为了在fa文件中将样本特异信息写入其中的ID,如果单独只是获取组织特异表达的circRNA,只要参照第一段去修改,并不用引入字典,当然lncRNA等也类似。

如果你想整一个更有效的列表,在读行过程中,把其他列的信息一同写入。最后的最后,使用Venn图简单可视化。

这些是很简单的脚本啦,如果你想系统的学习、加入我们整理和分享的团队,或者是湿实验做多了想来看看生信的世界,亦或是出国深造打下基础、转行做分析,或者和团长面个基… 

你现在有一个极好的机会。无论现在的水平如何,在你认定做这一件事的时候,将注定有所收获。不想了解一下么💁

生信技能树超级VIP入场券 (


最后,专题的内容也整理放送,希望你会有所收获。

 三剑客 PyCharm使用  | 编程基础与规范代码 | 列表使用一文就够了 | 元组拆包是个啥?字典与FASTA文件序列抽提 | 如何判断序列是否跨过剪切位点

全国巡讲约你


第1-11站北上广深杭,西安,郑州, 吉林,武汉,成都,港珠澳(全部结束)

一年一度的生信技能树单细胞线下培训班(已结束)

全国巡讲第13站-杭州(生信技能树爆款入门课)(下一站甘肃兰州,火热报名)

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