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

python之函数返回数据框

1.原始文件

##gff-version 3
Chr1A   IWGSC_v2.1      gene    40098   70338   33      -       .       ID=TraesCS1A03G0000200;previous_id=TraesCS1A02G000100;primconf=HC;Name=TraesCS1A03G0000200;cds=CDS_OK;mapping=fullMatchWithMissmatches
Chr1A   IWGSC_v2.1      mRNA    40098   70338   .       -       .       ID=TraesCS1A03G0000200.1;Parent=TraesCS1A03G0000200;Note=TraesCS1A01G000100;primconf=HC;Name=TraesCS1A03G0000200.1;secconf=HC2;cds=CDS_OK;mapping=fullMatchWithMissmatches;previous_id=TraesCS1A02G000100.1
Chr1A   IWGSC_v2.1      three_prime_UTR 40098   40731   .       -       .       ID=TraesCS1A03G0000200.1.utr3p1;Parent=TraesCS1A03G0000200.1
Chr1A   IWGSC_v2.1      exon    40098   40731   .       -       .       ID=TraesCS1A03G0000200.1.exon1;Parent=TraesCS1A03G0000200.1
Chr1A   IWGSC_v2.1      three_prime_UTR 58474   58507   .       -       .       ID=TraesCS1A03G0000200.1.utr3p2;Parent=TraesCS1A03G0000200.1
Chr1A   IWGSC_v2.1      exon    58474   58897   .       -       .       ID=TraesCS1A03G0000200.1.exon2;Parent=TraesCS1A03G0000200.1
Chr1A   IWGSC_v2.1      CDS     58508   58768   .       -       0       ID=TraesCS1A03G0000200.1.CDS1;Parent=TraesCS1A03G0000200.1
Chr1A   IWGSC_v2.1      five_prime_UTR  58769   58897   .       -       .       ID=TraesCS1A03G0000200.1.utr5p1;Parent=TraesCS1A03G0000200.1
Chr1A   IWGSC_v2.1      exon    70089   70338   .       -       .       ID=TraesCS1A03G0000200.1.exon3;Parent=TraesCS1A03G0000200.1
Chr1A   IWGSC_v2.1      five_prime_UTR  70089   70338   .       -       .       ID=TraesCS1A03G0000200.1.utr5p2;Parent=TraesCS1A03G0000200.1
Chr1A   IWGSC_v2.1      gene    70239   89245   35      +       .       ID=TraesCS1A03G0000400;previous_id=TraesCS1A02G000200;primconf=HC;Name=TraesCS1A03G0000400;cds=CDS_OK;mapping=fullPerfectMatch
Chr1A   IWGSC_v2.1      mRNA    70239   89245   .       +       .       ID=TraesCS1A03G0000400.1;Parent=TraesCS1A03G0000400;Note=TraesCS1A01G000200;primconf=HC;Name=TraesCS1A03G0000400.1;secconf=HC2;cds=CDS_OK;mapping=fullPerfectMatch;previous_id=TraesCS1A02G000200.1

2.目的文件:

TraesCS1A02G002100      bad
TraesCS1A02G002200      bad
TraesCS1A02G002900      bad
TraesCS1A02G003200      bad
TraesCS1A02G003300      bad
TraesCS1A02G003700      good
TraesCS1A02G003900      bad
TraesCS1A02G004100      bad
TraesCS1A02G004300      bad
TraesCS1A02G004700      bad
TraesCS1A02G004800      bad
TraesCS1A02G004900      good
TraesCS1A02G005700      good

3.代码:

# lin_whether_1st_intron_longest.py
#! /usr/bin/env python
#统计第一个内含子是否是最长的,如果是输出good,否则输出bad
#usage: python lin_whether_1st_intron_longest.py Ta_genomeplus.gff5-1 > Ta_genomeplus.gff5-120824
#usage: python lin_whether_1st_intron_longest.py Ta_genomeminus.gff5-1 > Ta_genomeminus.gff5-120824
import pandas as pddef outputlist1(f1):list1 = []list2 = []list21 = []df1=pd.read_table(f1,index_col=0)df1["id1"]=df1.indexdf1["id1_start_end"]=df1["id1"]+","+df1["start"].astype(str)+","+df1["end"].astype(str)df2=df1.iloc[:,[3]]df3 = df2.groupby("id").apply(lambda x: x["id1_start_end"].tolist())for i in range(len(df3)):list1.append(",".join(df3[i]))# print(list1)for i in list1:i=i.strip().split(",")# " ".join(i)if len(i)>=9:for j in range(2,len(i)-1,3):list2.append(i[0])list2.append(str(int(i[j+2])-int(i[j])-1))else:continue# print(list2)# b=open("47out2.txt","w")# def output_length(list02):# b.write("id" + "\t" + "length"+"\n")for i in range(len(list2)):# list2[i]=list2[i].strip().split()# print(list2[i])if i % 2 == 0:#         # b.write(str(list2[i])+"\t"+str(list2[i+1])+"\t"+str(list2[i+2])+"\n")#         # print(str(list2[i+1])+"\t"+str(list2[i+2])+"\t"+str(list2[i]))#         b.write(str(list2[i])+"\t"+str(list2[i+1])+"\n")list21.append(list2[i:i+2])return list21def outputlist2(f2):list31 = []list32 = []list4 = []list41=[]df21 = pd.DataFrame(f2)# df21=pd.read_table(df21)df21.columns = ['id', 'length']df21=df21.set_index("id")# df21=f2df21["id1"]=df21.indexdf21["length1"]=df21["length"].astype(str)df21["id1_length"]=df21["id1"]+","+df21["length"].astype(str)df22=df21.iloc[:,[2]]df23 = df22.groupby("id").apply(lambda x: x["length1"].tolist())for i in range(len(df23)):list31.append(",".join(df23[i]))#新的数据框2df32=df21.iloc[:,[3]]df33 = df32.groupby("id").apply(lambda x: x["id1_length"].tolist())# print(df23)for i in range(len(df33)):list32.append(",".join(df33[i]))# list3=[int(i) for i in list3]# print(list32)# print(list3[1])# print(max(list3[1]))for i in range(len(list31)):list32[i] = list32[i].strip().split(",")list31[i]=list31[i].strip().split(",")list31[i]=[int(k) for k in list31[i]]# print(max(list3[i]))# for j in range(len(list3[i])):if list31[i][0]==max((list31[i])):list4.append(list32[i][0])list4.append("good")else:list4.append(list32[i][0])list4.append("bad")for i in range(len(list4)):if i % 2==0:print(str(list4[i])+"\t"+str(list4[i+1]))def outputlist3(f2):list31 = []list32 = []list4 = []list41=[]df21 = pd.DataFrame(f2)# df21=pd.read_table(df21)df21.columns = ['id', 'length']df21=df21.set_index("id")# df21=f2df21["id1"]=df21.indexdf21["length1"]=df21["length"].astype(str)df21["id1_length"]=df21["id1"]+","+df21["length"].astype(str)df22=df21.iloc[:,[2]]df23 = df22.groupby("id").apply(lambda x: x["length1"].tolist())for i in range(len(df23)):list31.append(",".join(df23[i]))#新的数据框2df32=df21.iloc[:,[3]]df33 = df32.groupby("id").apply(lambda x: x["id1_length"].tolist())# print(df23)for i in range(len(df33)):list32.append(",".join(df33[i]))# list3=[int(i) for i in list3]# print(list32)# print(list3[1])# print(max(list3[1]))for i in range(len(list31)):list32[i] = list32[i].strip().split(",")list31[i]=list31[i].strip().split(",")list31[i]=[int(k) for k in list31[i]]# print(max(list3[i]))# for j in range(len(list3[i])):if list31[i][0]==max((list31[i])):list4.append(list32[i][0])list4.append("good")else:list4.append(list32[i][0])list4.append("bad")for i in range(len(list4)):if i % 2==0:print(str(list4[i])+"\t"+str(list4[i+1]))
import argparse
import os
parser = argparse.ArgumentParser(description="Advanced screening always by hash")
parser.add_argument("-f1","--file1",help="the original file,tabulated,make sure do not contain blank line")
args = parser.parse_args()
with open (args.file1,"r") as f1:if "plus" in args.file1:df01=outputlist1(args.file1)outputlist2(df01)else:df01=outputlist1(args.file1)outputlist3(df01)

相关文章:

python之函数返回数据框

1.原始文件 ##gff-version 3 Chr1A IWGSC_v2.1 gene 40098 70338 33 - . IDTraesCS1A03G0000200;previous_idTraesCS1A02G000100;primconfHC;NameTraesCS1A03G0000200;cdsCDS_OK;mappingfullMatchWithMissmatches Chr1A IWGSC_v2.1 mRN…...

电子商务安全体系架构技术方面

技术方面是本文所要阐述的主要方面,因为它能够依靠企业自 身的努力来达到令人满意的安全保障效果。目前,关于电子商务安全体系的研究比 较多,有基于层次的体系,也有基于对象的体系,还有基于风险管理的体系&#xff0…...

新安装IDEA 常用插件、设置

新安装IDEA 常用插件、设置 mybatiscodeHelperProRestfulToolkit-fixJrebelmybatis log freepojo to jsonGrep ConsoleMaven HelperCamelCaseCamelCase常用设置 mybatiscodeHelperPro mapper.xml 编码校验 sql 生成,代码生成 RestfulToolkit-fix URI 跳转到对应的…...

ChromeOS 的 Linux 操作系统和 Chrome 浏览器分离

导读科技媒体 Ars Technica 报道称,谷歌正在将 ChromeOS 的浏览器从操作系统中分离出来 —— 让它变得更像 Linux。虽然目前还没有任何官方消息,但这项变化可能会在本月的版本更新中推出。 据介绍,谷歌将该项目命名为 "Lacros"——…...

哔哩哔哩 B站 bilibili 视频倍速设置 视频倍速可自定义

目录 一、复制如下代码 二、在B站视频播放页面进入控制台 三、将复制的代码粘贴到下方输入框,并 回车Enter 即可 四、然后就可以了 一、复制如下代码 (该代码用于设置倍速为3,最后的数值是多少就是多少倍速,可以带小数点&#…...

Lazada商品详情接口 获取Lazada商品详情数据 Lazada商品价格接

一、引言 随着电子商务的迅速发展和普及,电商平台之间的竞争也日趋激烈。为了提供更好的用户体验和更高效的后端管理,Lazada作为东南亚最大的电商平台之一,开发了一种商品详情接口(Product Detail API)。该接口允许第…...

路由攻击(ospf attack)及C/C++代码实现

开放式最短路径优先(OSPF)是应用最广泛的域内路由协议之一。不幸的是,它有许多严重的安全问题。OSPF上的伪造是可能导致路由循环和黑洞的最关键的漏洞之一。 大多数已知的OSPF攻击基于伪造攻击者控制的路由器的链路状态通告(LSA&…...

nginx配置站点强制开启https

当站点域名配置完SSL证书后,如果要强制开启HTTPS,可以在站点配置文件中加上: #HTTP_TO_HTTPS_START if ($server_port !~ 443){rewrite ^(/.*)$ https://$host$1 permanent; } #HTTP_TO_HTTPS_END 附上完整的配置完SSL证书,强制…...

Jacoco XML 解析

1 XML解析器对比 1. DOM解析器: ○ 优点:易于使用,提供完整的文档树,可以方便地修改和遍历XML文档。 ○ 缺点:对大型文档消耗内存较多,加载整个文档可能会变慢。 ○ 适用场景:适合小型XML文档…...

【面试题】JDK(工具包)、JRE(运行环境和基础库)、JVM(java虚拟机)之间的关系?

【面试题】JDK、JRE、JVM之间的关系? JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。 JRE(Java Runtime Environment):Java运行时环境&…...

软件设计师学习笔记7-输入输出技术+总线+可靠性+性能指标

目录 1.输入输出技术 1.1数据传输控制方式 1.2中断处理过程 2.总线 3.可靠性 3.1可靠性指标 3.2串联系统与并联系统 3.3混合模型 4.性能指标 1.输入输出技术 即CPU控制主存与外设交互的过程 1.1数据传输控制方式 (1)程序控制(查询)方式&…...

Windows下MATLAB调用Python函数操作说明

MATLAB与Python版本的兼容 具体可参看MATLAB与Python版本的兼容 操作说明 操作说明请参看下面两个链接: 操作指南 简单说明: 我安装的是MATLAB2022a和Python3.8.6(安装时请勾选所有可以勾选的,包括路径)。对应版本安…...

【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常

ST的传感器驱动与HAL一直成功后,能拿到数据了,但是设备是横屏,系统默认是竖屏。就会出现屏幕自动转动时方向是错的的情况,设备横立展示的是竖屏,设备竖立展示的是横屏。 这个是PCB上设计的传感器贴片方向和横屏不一致…...

JavaScript Es6_3笔记

JavaScript 进阶 文章目录 JavaScript 进阶编程思想面向过程面向对象 构造函数原型对象constructor 属性对象原型原型继承原型链 了解构造函数原型对象的语法特征,掌握 JavaScript 中面向对象编程的实现方式,基于面向对象编程思想实现 DOM 操作的封装。 …...

Qt产生随机数

Qt产生随机数 提问:注意:实现: 提问: 有没有小伙伴遇到这么一种情况,使用rand()和qrand()函数生成的随机数好像不是那么随机,每次都一样。那这种就叫做“伪随机”,因为没有种随机数种子&#x…...

postgresql常用函数-数学函数

postgresql常用函数 简介数学函数算术运算符绝对值取整函数乘方与开方指数与对数整数商和余数弧度与角度常量 π符号函数生成随机数 简介 函数(function)是一些预定义好的代码模块,可以将输入进行计算和处理,最终输出一个 结果值…...

【排序】快速排序(前后指针法)—— 考的最少的一种算法

以从小到大的顺序进行说明。 前后指针法 是指对于一个数组,定义前后各一个指针(prev 和 cur) prev用于卡一个比基准值大的值进行交换cur用于向前遍历出比基准值小的,和prev进行交换 图解 初始化 选出基准值4 如果cur 所在的值…...

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解

软考:中级软件设计师:关系代数 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 &…...

openCV实战-系列教程2:阈值与平滑处理(图像阈值/图像平滑处理/高斯/中值滤波)、源码解读

1、图像阈值 t图像阈值函数,就是需要判断一下像素值大于一个数应该怎么处理,小于一个数应该怎么处理 ret, dst cv2.threshold(src, thresh, maxval, type) 参数解析: src: 原始输入图,只能输入单通道图像&#…...

C语言第五章-循环结构练习

1、设计一个小型模拟彩票中奖机,已知彩票中奖号码是一个固定的3位数(原始号码)。对任意一个3位数,取出它的每位数字和原始号码的每位数字比较,有1位数相同中三等奖,有2位数相同中二等奖,有3位数…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

线程同步:确保多线程程序的安全与高效!

全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...