当前位置: 首页 > news >正文

重叠区间的求和

#摘抄 GetGeneLength/src/GetGeneLength/GetGeneLength.py at main · PoShine/GetGeneLength · GitHub

def main():
    """
    Extract gene length based on featureCount calculation gene nonredundant exon length method.
    """
    # 引入库
    import argparse

    parser = argparse.ArgumentParser(usage="GetGeneLength --database ensembl --gtffile gencode.v38.annotation_human.gtf --lengthfile gene_length.txt",
                                    description="Get gene length from GTF annotation file.",
                                    epilog="Thank your for your support, if you have any questions or suggestions please contact me: 3219030654@stu.cpu.edu.cn.")
    parser.add_argument('-v','--version', action='version', version='%(prog)s 0.0.1')
    # 读取注释类型文件
    parser.add_argument('-d','--database',type=str,action="store",dest="database",choices=['ucsc','ensembl','gencode'],
                        default="ensembl",help='which annotation database you choose. (default="ensembl")')
    # 读取gtf文件
    parser.add_argument('-g','--gtffile', type=str,action="store",dest="gtffile",help='input your GTF file. (ucsc/ensembl/gencode)')
    # 导出文件名称
    parser.add_argument('-l','--lengthfile', type=str,action="store",dest="length_info",help='output your gene lenth file. (gene_length.txt)')
    # 解析参数
    args = parser.parse_args()

    # 获取参数
    database = args.database
    gtffile =  args.gtffile
    length_info = args.length_info
    
    # main fuction
    print("Your job is running, please wait...\n")
    # 打开测试 gtf 文件
    with open(gtffile,'r') as gtf:
        # 信息保存在字典里
        info = {}
        for line in gtf:
            # 跳过注释行
            if line.startswith('#'):
                continue
            # 分割
            fields = line.split()
            # 类型
            type = fields[2]
            # database
            if database == "ucsc":
                if type == 'exon':
                    # 名称
                    gene_name = fields[17].replace('"','').replace(';','')
                    gene_id = fields[9].replace('"','').replace(';','')
                    # 连接名称
                    key = gene_name + '|' + gene_id
                    # 计算多个外显子长度
                    start = int(fields[3])
                    end = int(fields[4]) + 1
                    tmpfield = list(range(start,end))
                    # 储存所有exon位置信息
                    info.setdefault(key,[])
                    info[key] += tmpfield
                else:
                    pass
            else:
                if type == 'exon':
                    # 名称
                    gene_name = fields[15].replace('"','').replace(';','')
                    gene_id = fields[9].replace('"','').replace(';','')
                    gene_type = fields[13].replace('"','').replace(';','')
                    # 连接名称
                    key = gene_name + '|' + gene_id + '|' + gene_type
                    # 计算多个外显子长度
                    start = int(fields[3])
                    end = int(fields[4]) + 1
                    tmpfield = list(range(start,end))
                    # 储存所有exon位置信息
                    info.setdefault(key,[])
                    info[key] += tmpfield
                else:
                    pass

    # 取并集(删除重复元素)
    # final_res = {}
    # loop for every gene
    # for key,val in info.items():
    #     length = len(list(set(val)))
    #     final_res[key] = length
    # 计算长度
    final_res = {key:len(list(set(val))) for key,val in info.items()}

    # 导出保存
    res =  open(length_info,'w')  

    # database
    if database == "ucsc":
        for key,val in final_res.items():
            ids = key.split(sep='|')
            res.write(ids[0] + '\t' + ids[1] + '\t' + str(val) + '\n')
    else:
        for key,val in final_res.items():
            ids = key.split(sep='|')
            res.write(ids[0] + '\t' + ids[1] + '\t' + str(val) + '\n')
                    
    # 关闭文件    
    res.close()
    print("Your job is done!")

相关文章:

重叠区间的求和

#摘抄 GetGeneLength/src/GetGeneLength/GetGeneLength.py at main PoShine/GetGeneLength GitHub def main(): """ Extract gene length based on featureCount calculation gene nonredundant exon length method. """ # 引…...

java包装类 及其缓存

Java 包装类(Wrapper Class)是将基本数据类型转换为对象的方式,每个基本数据类型在 java.lang 包中都有一个相应的包装类: Boolean 对应基本类型 boolean Character 对应基本类型 char Integer 对应基本类型 int Float 对应基本…...

大龄程序员的出路在哪里?

对于许多资深程序员而言,年龄并非职业发展的桎梏,反而如同陈年的美酒,随着时间的流逝愈发醇厚。他们手握的是丰富的经验和不断进阶的技能,而这些都为他们打开了职业发展的无数扇大门。让我们一同探索这些令人心动的可能性吧&#…...

Unity不用脚本实现点击按钮让另外一个物体隐藏

1.首先在场景中创建一个按钮和一个其他随便什么东西 2.点击按钮中的这个加号 3.然后将刚刚你创建的物体拖到这里来 4.然后依次点击下面这些给按钮绑定事件 5.运行游戏并点击按钮,就会发现拖进来的物体消失了 总结:如果按钮的功能单一,可以使用…...

RAG技术-为自然语言处理注入新动力

引言: 在自然语言处理(NLP)的领域中,RAG(Retrieval-Augmented Generation)技术以其独特的方式,正在改变我们与机器的交互方式。RAG技术结合了大语言模型的强大能力,使得机器在理解和…...

Docker安装ELK(简易版)

1、下载ELK镜像:打开终端,并执行以下命令以下载Elasticsearch、Logstash和Kibana的Docker镜像。您也可以根据需要选择其他版本: docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.6 docker pull docker.elastic.co/logstash…...

WPF项目实战视频《一》(主要为WPF基础知识)

1.WPF布局: Grid,stackPanel,wrapPanel,DockPanel,UniformGrid Grid 按行列布局, Grid.ColumnDefinitions列,Grid.RowDefinitions行 Grid.Row“0” Grid.Column“0” stackPanel 默认从上往下排…...

iOS ------ ARC的工作原理

一,ARC的概念 ARC (Automatic Reference Counting,自动引用计数) 是苹果公司在其编程语言(如 Objective-C 和 Swift)中的内存管理机制。ARC 通过编译器插入的代码自动管理对象的内存生命周期,减少了手动内存管理的复杂…...

【React】JSX基础

一、简介 JSX是JavaScript XML的缩写,它是一种在JavaScript代码中编写类似HTML模板的结构的方法。JSX是React框架中构建用户界面(UI)的核心方式之一。 1.什么是JSX JSX允许开发者使用类似HTML的声明式模板来构建组件。它结合了HTML的直观性…...

1分钟带你了解苹果手机删除照片恢复全过程

在日常使用苹果手机时,我们可能会不小心删除掉一些重要的照片,这让人非常烦恼。那么苹果手机怎么恢复删除的照片?下面小编将会向大家介绍苹果手机恢复删除的照片的方法,帮助大家轻松找回你丢失的照片。 一、利用“最近删除”文件夹…...

Ruby爬虫技术:深度解析Zhihu网页结构

在互联网时代,数据的价值日益凸显,尤其是在社交媒体和问答平台如Zhihu(知乎)上,用户生成的内容蕴含着丰富的信息和洞察。本文将深入探讨如何使用Ruby爬虫技术来解析Zhihu的网页结构,并获取有价值的数据。 …...

python中的re模块--正则表达式

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科 学的一个概念。正则表达式通常被用来检索、替换那些符合某个模 式(规则)的文本 re模块作用 通过使用…...

sqlalchemy反射视图

sqlalchemy反射视图 一个名为my_view的视图,使用SQLAlchemy来操作这个视图 from sqlalchemy import create_engine, MetaData# 创建数据库连接 engine = create_engine(数据库连接字符串)# 创建一个MetaData对象 metadata = MetaData()# 反射视图 metadata.reflect(bind=eng…...

最新版康泰克完整版- Kontakt v7.10.5 for Win和Mac,支持m芯片和intel,有入库工具

一。世界最受欢迎的采样器的新篇章 Native Instruments Kontakt是采样器领域的标准,您将获得高质量的滤波器,在这里您将找到经典的模拟电路和最现代的滤波器。每一个都可以根据您的口味进行定制,并且由于它,您可以获得前所未有的声…...

spring boot(学习笔记第十三课)

spring boot(学习笔记第十三课) 传统后端开发模式和前后端分离模式的不同,Spring Security的logout,invalidateHttpSession不好用,bug? 学习内容: 传统后端开发模式 vs 前后端分离模式Spring Security的logout功能inv…...

聊聊不再兼容安卓的鸿蒙

鸿蒙NExt已经确定不再兼容安卓系统,这意味着鸿蒙系统在更新迭代上将会展现出更加迅猛的速度。不过,这样的变化也给开发者们带来了不小的挑战。如今,鸿蒙的开发主要推荐使用的是ArkTS,而不是我们熟悉的Java SDK。对于大量习惯于使用…...

创建一个矩形,当鼠标进入这个矩形的时候,这个矩形边线变色,且鼠标变成手型

1.概要 创建一个矩形&#xff0c;当鼠标进入这个矩形的时候&#xff0c;这个矩形边线变色&#xff0c;且鼠标变成手型 2.代码 #include <QApplication> #include "customRectWidget.h" /** qt 6.7版&#xff0c; 创建一个矩形&#xff0c;当鼠标进入这个矩形…...

AI自动生成PPT哪个软件好?高效制作PPT优选这4个

7.15初伏的到来&#xff0c;也宣告三伏天的酷热正式拉开序幕~在这个传统的节气里&#xff0c;人们以各种方式避暑纳凉&#xff0c;享受夏日的悠闲时光。 而除了传统的避暑活动&#xff0c;我们还可以用一种新颖的方式记录和分享这份夏日的清凉——那就是通过PPT的方式将这一传…...

LruCache、Glide和SmartRefreshLayout使用总结

&#xff08;一&#xff09;Android智能下拉刷新框架-SmartRefreshLayout https://github.com/scwang90/SmartRefreshLayout?tabreadme-ov-file &#xff08;二&#xff09;LruCache使用 使用它可以进行图片的内存缓存 public class ImageLoaderUtil {private LruCache<St…...

Redis中数据分片与分片策略

概述 数据分片是一种将数据分割并存储在多个节点上的技术&#xff0c;可以有效提高系统的扩展性和性能。在Redis中&#xff0c;数据分片主要用于解决单个实例存储容量和性能瓶颈的问题。通过将数据分散存储到多个Redis节点中&#xff0c;可以将负载均衡到不同的服务器上&#…...

leetcode_169. 多数元素

leetcode_169. 多数元素 问题描述 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums …...

STM32 GPIO的工作原理

STM32的GPIO管脚有下面8种可能的配置:&#xff08;4输入 2 输出 2 复用输出) &#xff08;1&#xff09;浮空输入_IN_FLOATING 在上图上&#xff0c;阴影的部分处于不工作状态&#xff0c;尤其是下半部分的输出电路&#xff0c;实际上是与端口处于隔离状态。黄色的高亮部分显示…...

板级调试小助手(2)ZYNQ自定义IP核构建属于自己的DDS外设

一、前言 在上期文章中讲述了小助手的系统结构和原理。在PYNQ的框架开发中&#xff0c;我们一般可以将PL端当做PS端的一个外设&#xff0c;通过读写寄存器的方式来操作外设的功能&#xff0c;就类似于在开发ARM和DSP中操作外设一样&#xff0c;不同时的是&#xff0c;我们可以通…...

vim+cscope+ctags

一、简单安装 1.安装cscope # apt install cscope 2.安装ctags # apt install ctags 3.taglist安装 下载Vim source code browser plugin - Browse /vim-taglist at SourceForge.net&#xff0c;解压和复制文件 # unzip taglist_46.zip# cp doc/taglist.txt /usr/share/…...

Java 8的变革:函数式编程和Lambda表达式探索

文章目录 一、函数接口二、Lambda表达式简介三、Lambda表达式外部参数四、Lambda范例五、Runnable Lambda表达式 一、函数接口 函数接口是一个具有单个抽象方法的接口&#xff0c;接口设计主要是为了支持 Lambda 表达式和方法引用&#xff0c;使得 Java 能更方便地实现函数式编…...

Java集合框架的内部揭秘:List、Set与Map的深潜之旅

Java集合框架是一套强大的工具&#xff0c;为开发者提供了灵活的数据管理方式。本文将深入剖析List、Set和Map的内部机制&#xff0c;通过详细的示例和扩展讨论&#xff0c;带你领略这些数据容器的真谛。 一、List&#xff1a;有序序列的深度剖析 List接口是一个可以包含重复…...

爬虫(二)——爬虫的伪装

前言 本文是爬虫系列的第二篇文章&#xff0c;主要讲解关于爬虫的简单伪装&#xff0c;以及如何爬取B站的视频。建议先看完上一篇文章&#xff0c;再来看这一篇文章。要注意的是&#xff0c;本文介绍的方法只能爬取免费视频&#xff0c;会员视频是无法爬取的哦。 爬虫的伪装 …...

空安全编程的典范:Java 8中的安全应用指南

文章目录 一、Base64 编码解码1.1 基本的编码和解码1.2 URL 和文件名安全的编码解码器1.3 MIME Base64编码和解码 二、Optional类三、Nashorn JavaScript 一、Base64 编码解码 1.1 基本的编码和解码 Base64 编码&#xff1a; 使用 Base64.getEncoder().encodeToString(origin…...

Docker Machine 深入解析

Docker Machine 深入解析 引言 Docker Machine 是 Docker 生态系统中的一个重要工具,它简化了 Docker 容器环境的配置和管理过程。本文将深入探讨 Docker Machine 的概念、功能、使用场景以及如何在实际环境中高效利用它。 什么是 Docker Machine? Docker Machine 是一个…...

20.x86游戏实战-远线程注入的实现

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...

工装网站建设方案/网络营销与直播电商就业前景

2019独角兽企业重金招聘Python工程师标准>>> location 大会是在 中关村 的创新工厂(innovation works)办的. 从西二旗到 那个地方要大概1个小时的时间. 工厂环境整的很有艺术气息. 墙上有各个作品的logo和合影. hackathon情况 这次的比赛去了18个队伍. 有不少的学生…...

wordpress 404模板在哪里/哈尔滨seo公司

以下为作者提供的一种思路&#xff0c;个人认为有参考价值&#xff0c;但是通往罗马的道路不止一条&#xff0c;不是吗 What 软件工程师的职业生涯要历经以下几个阶段&#xff1a;初级、中级&#xff0c;最后才是高级。这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软…...

保定seo博客/seo的优化方向

在一对多方案中&#xff0c;我们用逗号拼接进行存储&#xff0c;避免存储多条&#xff0c;或者分表&#xff0c;那么此时出现了存储上如果需要修改的话 就带来了难度&#xff0c;比如规则记录表如下 如果2号规则被删除&#xff0c;那么这张表的所有有2的记录也要被清除掉&#…...

b2b电子商务网站对比/免费自助建站

中国PHA行业现状调查与未来发展趋势预测报告2022-2028年 【报告编号】: 414487 【出版时间】: 2022年2月 【出版单位】: 中商经济研究网 第一章 PHA相关概述 第一节 PHA基本概况 一、PHA概念与化学性质 二、PHA的研发历史概览 第二节 PHA产品种类分析 一、根据单体碳原…...

太原市做网站好的科技公司/网络营销该如何发展

谈巧除Word页眉折线(转)启动Word&#xff0c;打开需要清除折线的文档&#xff0c;在折线处双击&#xff08;或执行“视图→页眉和页脚”命令&#xff09;激活“页眉和页脚”编辑区。再执行“格式→边框和底纹”命令&#xff0c;打开“边框和底纹”对话框&#xff0c;在“设置”…...

专门网站建设/优化建站

谈谈你对线程安全的理解谈谈你对线程安全的理解&#xff1f;典型回答知识扩展并发与并行什么是并发并发与并行之间的关系进程和线程线程的特点轻型实体独立调度和分派的基本单位。可并发执行共享进程资源共享变量谈谈你对线程安全的理解&#xff1f; 典型回答 线程安全是指某…...