- gtf 文件
序列的编号 注释信息的来源 注释信息的类型 开始与结束的位置 得分 序列的方向 起始编码的位置,仅对CDS有效 注释信息描述 11 ensembl_havana gene 5422111 5423206 ”.”表示为空。 +表示正义链, -反义链 , ? 表示未知. 有效值为0、1、2 键+值 11 ensembl_havana gene 5422111 5423206 . + . gene_id "ENSG00000167360"; gene_version "4"; gene_name "OR51Q1"; gene_source "ensembl_havana"; gene_biotype "protein_coding";
11 ensembl_havana transcript 5422111 5423206 . + . gene_id "ENSG00000167360"; gene_version "4"; transcript_id "ENST00000300778"; transcript_version "4"; gene_name "OR51Q1"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "OR51Q1-001"; transcript_source "ensembl_havana"; transcript_biotype "protein_coding"; tag "CCDS"; ccds_id "CCDS31381";
11 ensembl_havana exon 5422111 5423206 . + . gene_id "ENSG00000167360"; gene_version "4"; transcript_id "ENST00000300778"; transcript_version "4"; exon_number "1"; gene_name "OR51Q1"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "OR51Q1-001"; transcript_source "ensembl_havana"; transcript_biotype "protein_coding"; tag "CCDS"; ccds_id "CCDS31381"; exon_id "ENSE00001276439"; exon_version "4";
11 ensembl_havana CDS 5422201 5423151 . + 0 gene_id "ENSG00000167360"; gene_version "4"; transcript_id "ENST00000300778"; transcript_version "4"; exon_number "1"; gene_name "OR51Q1"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "OR51Q1-001"; transcript_source "ensembl_havana"; transcript_biotype "protein_coding"; tag "CCDS"; ccds_id "CCDS31381"; protein_id "ENSP00000300778"; protein_version "4"; - 探究内容
-
import sys import re args = sys.argv ‘‘‘sys.argv 是命令行参数,是一个字符串列表,0代表其路径‘‘‘ class Genome_info: #这是一个基类,所有类型都通用的 def __init__(self): self.chr = "" #染色体号 self.start = 0 self.end = 0 class Gene(Genome_info): #这个函数继承了基类 def __init__(self): Genome_info.__init__(self) self.orientation = "" self.id = "" class Transcript(Genome_info): def __init__(self): Genome_info.__init__(self) self.id = "" self.parent = "" class Exon(Genome_info): def __init__(self): Genome_info.__init__(self) self.parent = "" def main(args): """ 一个输入参数: 第一个参数为物种gtf文件 :return: """ list_chr = [] list_gene = {} #因为有 id 号 所以用dir list_transcript = {} list_exon = [] # l_n = 0 with open(args[1]) as fp_gtf: #打开文件遍历GTF for line in fp_gtf: if line.startswith("#"): #号开头的注释过滤掉,不统计这个 continue # print ("in %s" % l_n) # l_n += 1 lines = line.strip("\n").split("\t") chr = lines[0] type = lines[2] start = int(lines[3]) end = int(lines[4]) orientation = lines[6] attr = lines[8] if not re.search(r‘protein_coding‘, attr): #取到的是蛋白的编码,如果没有的话就跳过,不做统计了 continue if not chr in list_chr: #把染色体的类型添加到列表里 list_chr.append(chr) if type == "gene": gene = Gene() #初始化一个基因对象 id = re.search(r‘gene_id "([^;]+)";?‘, attr).group(1) # 0 返回所有列表,1取第一个 gene.chr = chr gene.start = start gene.end = end gene.id = id gene.orientation = orientation list_gene[id] = gene # print(id) elif type == "transcript": transcript = Transcript() id = re.search(r‘transcript_id "([^;]+)";?‘, attr).group(1) parent = re.search(r‘gene_id "([^;]+)";?‘, attr).group(1) if not parent in list_gene: continue transcript.chr = chr transcript.start = start transcript.end = end transcript.id = id transcript.parent = parent list_transcript[id] = transcript elif type == "exon": exon = Exon() parent = re.search(r‘transcript_id "([^;]+)";?‘, attr).group(1) if not parent in list_transcript: continue exon.chr = chr exon.start = start exon.end = end exon.parent = parent list_exon.append(exon) chr_gene(list_gene) gene_len(list_gene) gene_transcript(list_transcript) transcript_exon(list_exon) exon_pos(list_exon) def chr_gene(list_gene): """ 染色体上基因数量分布 :param list_gene: :return: """ print("染色体上基因数量分布") count_gene = {} #这是一个计数器 for info in list_gene.values(): chr = info.chr if chr in count_gene: count_gene[info.chr] += 1 else: count_gene[info.chr] = 1 with open("chr_gene.txt", ‘w‘) as fp_out: for chr, num in count_gene.items(): print("\t".join([chr, str(num)]) + "\n") fp_out.write("\t".join([chr, str(num)]) + "\n") def gene_len(list_gene): """ 基因长度分布情况 :param list_gene: :return: """ print("基因长度分布情况") with open("gene_len.txt", ‘w‘) as fp_out: for gene_id, info in list_gene.items(): len = info.end - info.start + 1 fp_out.write("\t".join([gene_id, str(len)]) + "\n") print("\t".join([gene_id, str(len)]) + "\n") def gene_transcript(list_transcript): """ 基因的转录本数量分布 :param list_transcript: :return: """ print("基因的转录本数量分布") count_transcript = {} for info in list_transcript.values(): gene_id = info.parent if gene_id in count_transcript: count_transcript[gene_id] += 1 else: count_transcript[gene_id] = 1 with open("gene_transcript.txt", ‘w‘) as fp_out: for gene_id, num in count_transcript.items(): print("\t".join([gene_id, str(num)]) + "\n") fp_out.write("\t".join([gene_id, str(num)]) + "\n") def transcript_exon(list_exon): """ 转录本的外显子数量统计 :param list_exon: :return: """ print("转录本的外显子数量统计") count_exon = {} for exon in list_exon: transcript_id = exon.parent if transcript_id in count_exon: count_exon[transcript_id] += 1 else: count_exon[transcript_id] = 1 with open("transcript_exon.txt", ‘w‘) as fp_out: for transcript_id, num in count_exon.items(): print("\t".join([transcript_id, str(num)]) + "\n") fp_out.write("\t".join([transcript_id, str(num)]) + "\n") def exon_pos(list_exon): """ 外显子坐标统计 :param list_exon: :return: """ print("外显子坐标统计") count_exon = {} for exon in list_exon: transcript_id = exon.parent if transcript_id in count_exon: count_exon[transcript_id] += ",%s-%s" % (str(exon.start), str(exon.end)) else: count_exon[transcript_id] = "%s-%s" % (str(exon.start), str(exon.end)) with open("exon_pos.txt", ‘w‘) as fp_out: for transcript_id, pos in count_exon.items(): print("\t".join([transcript_id, pos]) + "\n") fp_out.write("\t".join([transcript_id, pos]) + "\n") def gene_exon_pos(list_gene, list_transcript, list_exon): """ 根据exon的parent将所有exon对应到transcript 根据transcript的parent将所有transcript对应到gene 根据gene按chr分组得到chromosome列表 从chromosome中输出某个指定基因的所有外显子坐标信息并画图 生信编程直播第五题 :param list_gene: :param list_transcript: :param list_exon: :return: """ pass if __name__ == "__main__": main(args)
003生信人必练
时间: 2024-10-12 16:24:03
003生信人必练的相关文章
it人必进的几大网站
1.chinaunix网址:http://www.chinaunix.net/简介:中国最大的linux/unix技术社区. 2.itpub网址:http://www.itpub.net/ 简介:有名气的IT技术论坛,看看它的alexa排名就知道有多火了,尤其以数据库技术讨论热烈而闻名.ITPUB论坛的前身是建立在smiling的oracle小组. 3.51cto网址:http://www.51cto.com/简介:由国内知名IT门户网站管理团队,获近千万风险投资,于2005年8月正式创立,是国
《生物信息学》——李霞;;生信概念
挑战:寻找新的处理海量数据和复杂性的方法. 生信:说了什么: 研究对象: 以核酸.蛋白质等生物大分子数据库 研究手段方法:数学.信息学.计算机科学 研究工具: 计算机硬件.软件.计算机网络 研究目的: 对浩如烟海的原始数据进行获取.加工.存储.分配.分析.管理.注释解释,使之成为具有明确生物意义的生物信息. 并通过生物信息的查询.搜索.比较.分析,从中获取基因编码.基因调控.核酸和pro结构功能及其相互关系等理性知识. 在大量信息和知识的基础上探索生命起源.生
10部金融人必看电影!拯救春节剧荒的你
<监守自盗> 豆瓣评分:8.7 这部电影获得了2010年奥斯卡最佳纪录片奖. 采访政治家.记者和金融行业领袖后,导演查尔斯还原了美国金融改革的历史场景.通过对2008年美国金融危机中具体人物和事件的再现,犀利地解释了危机产生的原因. 电影的结构很巧妙,通过深入浅出的演绎,一些晦涩的经济专业术语也变得通俗易懂. <华尔街> 豆瓣评分:8.4 美国有一条大名鼎鼎的华尔街,是世界金融中心.电影<华尔街>,就取材于华尔街上那些翻雨覆雨尔虞我诈的故事.从这部电影中,你会学到很多股
一 些 小 常 识, 新 人 必 看!!!
< 本 服 是 长 久 服 ,注意:游戏内骗子,群内骗子,很多.不要贪图小便宜,就不会吃大亏! > 倍率说明: 10级转生1.1倍. 升级奖励1.4倍. 8件.30星1.5倍. 满攻击倍率: 勋章1.4倍是<暗藏属性>购买 装备右下角宝石分别为:1.1-1.2-1.3. 比如你攻击2000.带个诛天帝1.3=2600,攻击越高,加成越高! 土城左下角,天工防御.1.1-1.7暗刀(必备!)打怪不怎么掉血! 1.土城左下角,装备升级-星际锻造 装备升星小技巧: 比喻-如果10星装
生信算法实践
最近在搞16S,发现了一个实践算法的最佳机会. 见文章: A Bayesian taxonomic classification method for 16S rRNA gene sequences with improved species-level accuracy. 文章利用了贝叶斯模型,调用了blast和muscle来对OTU进行taxonomy assignment. 可以看一下源代码,非常简单. Bayesian-based LCA taxonomic classification
生信概念之
1.contig:A contig (from contiguous) is a set of overlapping DNA segments that together represent a consensus region of DNA 从reads拼接出来的更长的序列. 2.k-mer:k-mers refer to all the possible subsequences (of length k) from a read obtained through DNA Sequenci
生信工具汇总
GATK(Genome Analysis Toolkit) GATK使用方法详解(原始数据的处理) GATK使用方法详解(变异检测) GATK使用方法详解(初步分析) GATK使用方法详解
通信人必知的一些事
前言 作为一个学通信工程专业的学生,同时又从事通信领域的职业,我想有些知识,或者常识是必须要了解的,甚至是必须时刻牢记的,因为这些知识在平常的工作中经常被提起,也经常需要用到,这时,如果你对这些不熟悉,不了解,那样,你会觉得很痛苦,很恨自己明明上学的时候有学过,而且还那么耳熟,可就是不知道了...这个时候,你就会特别想了解,想弄懂,弄明白...这些就是我刚从学校毕业,工作三个月的真实想法. 本篇文章就是为了自己在工作中能够更加深入,决定将一些经常遇到的知识回顾一下,并将不断更新,欢迎有经验的大牛
生信常用网站
一 在线分析 GeneMania Phenolyzer NCBI http://www.ncbi.nlm.nih.gov EBI http://www.ebi.ac.uk/ UCSC https://genome.ucsc.edu/index.html Ensemble http://asia.ensembl.org/index.html 二 数据库 HGMD ExAC ACMG 有害性分类 ClinVar 临床数据库 dbSNP https://www.ncbi.nlm.nih.gov/pro