生信编程实战第1题(python)

作者: 天秤座的机器狗 | 来源:发表于2018-08-11 13:20 被阅读29次

题目来自生信技能树
统计人类外显子长度
坐标的文件可如下下载:

wget ftp://ftp.ncbi.nlm.nih.gov/pub/CCDS/current_human/CCDS.current.txt

打开文件如下


image.png

于是写了如下脚本

import sys
import re
args=sys.argv
filename=args[1]
exon_length=0
aDict={}
with open (filename) as fh :
      for line in fh:
          if line.startswith("#"):
              continue
          lineL=line.strip().split("\t")
          exon_position=lineL[-2] #取出倒数第二列,坐标列
          if exon_position=="-":  #有的基因没有外显子的坐标,用-代替的,所以这行就要除掉,不然会报错
              continue
          exon_position=re.sub("\[|\]","",exon_position) #把坐标列的[]去除,注意正则表达式的用法
          exonL=exon_position.split(",")  
          for exon in exonL:
              exonS=lineL[0]+":"+exon    #有点基因会有相同坐标的外显子,所以要去除这一部分,注意要加上染色体的编号,染色体不同而坐标一样就没事
              if exonS not in aDict:    #如果坐标没有在字典,即第一次出现,就将其放入字典,并继续操作。
                   aDict[exonS]=1
                   exon_pL=exon.split("-")
                   exon_start=int(exon_pL[0].strip())
                   exon_end=int(exon_pL[1].strip())
                   exon_length+=exon_end-exon_start
print(exon_length)

然后运行

ubuntu@VM-0-4-ubuntu:~/data/practice$ python3 exon.py CCDS.current.txt 
36443621

正则表达式再学习熟悉熟悉

相关文章

  • 生信编程实战第1题(python)

    题目来自生信技能树统计人类外显子长度坐标的文件可如下下载: 打开文件如下 于是写了如下脚本 然后运行 正则表达式再...

  • 生信编程实战第6题(python)

    题目来自生信技能树论坛 下载好的文件大概格式如下 简单的了解一下都有什么 A开头的 B开头的 C开头的(这一行是p...

  • 生信编程实战第4题(python)

    题目来自生信技能树论坛 从这题开始,我决定只用python做python很强大,熟练了可以做其他语言能做的大部分事...

  • 生信编程实战第11题(python)

    题目来自生信技能树论坛 题目不难,先给出代码 这里主要说几个问题: python中写入文件可以用的模式如下:f=o...

  • 生信编程实战第9题(python)

    题目来自生信技能树论坛 这个题目不难,但是我想说明的是大的数据集和小的数据集的脚本很多时候是不一样的 比如这道题,...

  • 生信编程实战第10题(python)

    题目来自生信技能树论坛 先下载tss文件 然后针对这些位点操作 脚本如下: 根据不同的情景,对倒数第二行的if条件...

  • 生信编程实战第8题(python)

    题目来自生信技能树论坛 这道题很简单,但是应该更重要的是学会用R的方法,我后面会用R把这个系列的题目重做一遍,这里...

  • 生信编程实战第5题(python)

    题目来自生信技能树论坛 先从hg38的gtf中提取"ANXA1"基因 在题目之前先分析要处理的数据的结构是什么样的...

  • 生信编程实战第3题(python)

    题目来自生信技能树论坛 做题之前我们先看看文件的内容是什么 gtf有9列1.染色体名 2.注释信息的来源,比如”G...

  • 生信编程实战第7题(python)

    题目来自生信技能树论坛 做这个题目之间必须要了解一些背景知识 1.超几何分布超几何分布是统计学上一种离散概率分布。...

网友评论

    本文标题:生信编程实战第1题(python)

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