gff格式转gggenes的输入格式
其实这种问题应该用biopython解决才是正解,但本人才疏学浅,就暂时这样快速瞎搞一下。
使用prodigal得到的基因位置信息文件gff3或gff信息太多,但要用gggenes作图只需要序列名,起始坐标,结束坐标和方向(+1或-1)
直接在linux中使用awk操作,生成这四列内容
awk '!/^#/ {count[$1]++; if ($7 == "+") {print $1"_"count[$1],$4,$5,1} else if ($7 == "-") {print $1"_"count[$1],$4,$5,-1}}' input.gff3 > output.tsv
然后直接用R语言读取这些个文件,给列定义列名就好了。
输出文件形如
以上awk代码实现的内容:
1)删除以#为开头的那些行
2)保留1,4,5列
3)若第七列(基因方向)为+,则在第四列输出1;反之,则输出-1
4)因为我的文件是prodigal预测基因的结果,所以一条序列中出现的多个基因在gff3文件中没有编号,用awk手动按其出现顺序(也即在序列上出现位置的前后)编号,如k121_560011_1,k121_560011_2。
其实这个问题很简单,但我搞了好久,最后还是问的chatgpt。刚开始先尝试过gff2gggenes的方法,可以建库,可以返回“完成”字样,但得到的csv文件是空的,不知道我错在哪里。flyingicedragon/gff2gggenes: 解析并将 gff 中需要的内容输出到 csv 文件中以供 R 包 gggenes 调用。 (github.com)
另附,从组装完的.fa文件中提取contig的len信息(第四列),并把文件名放在第一列。
#文件len1.sh(储存在我自己的账号里)
for file in /home/user/*.fa; dofilename=$(basename "$file" .fa)grep "^>" "$file" | sed 's/>//' | awk -v filename="$filename" '{print filename, $1, $4}' > "/home/user/fahead/$filename.tsv"done
输出文件形如以下,之后直接 cat fahead/*.tsv>merge_gff.tsv 合并所有输出文件即可。
以上代码实现的内容:
1)找到">",即序列名的那行
2)使用sed命令将描述信息行中的">"字符去掉。
3) -v filename="$filename" 提取
shell变量$filename。
4) 使用awk命令将文件名、序列ID和序列长度提取出来,并将它们输出为一个.tsv文件。
gff格式转gggenes的输入格式相关推荐
- java的构造函数格式_java – 自定义MapReduce输入格式 – 找不到构造函数
我正在为Hadoop 0.20.2编写一个自定义的InputFormat,并且遇到NoSuchMethodException我无法摆脱.我开始时: public class ConnectionInp ...
- 【QT】Qt正则表达式的使用:使用QRegExp来限制QLineEdit的输入格式
QLineEdit中使用QRegExp来限制输入格式,下面以IP输入框为例 QLineEdit *lineEditIP = new QLineEdit("192.168.147.200&qu ...
- 4、题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出。 * * 输入格式:测试输入包含若干测试用例,每个测试用例的格式为 第1行:N 第2行:N名学生的成绩,相邻两数字用一个
题目: /* 4.题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式:测试输入包含若干测试用例,每个测试用例的格式为 第1行:N 第2行:N名学生的成绩,相邻两数字用一 ...
- UITextFIeld的输入格式问题 ----W.P
---恢复内容开始--- 1.银行卡的输入格式,四个数字,一个空格. 2.金额的输入格式限制,不能以"."开头,"."后精确两位. 注意:第三方输入软件(百度, ...
- iOS限定UITextField的输入格式
iOS限定文本框的输入格式 // // ViewController.m // 限定文本框只能接收数字 // // Created by mac on 16/4/13. // Copyright © ...
- JS收集:限制输入格式
限制输入格式: [A-Z]{3,10}:[A-Z_]{4,50}.ASPX 例如: VIEW:ADMIN_USER.ASPX DEL:ADMIN_USER_LOG.ASPX 转载于:https://w ...
- Vue中实现输入框Input输入格式限制
Vue中实现输入框Input输入格式限制 1.使用修饰符实现数字输入 在VUE中可以在v-modal后添加修饰符的形式来限制输入,比如: <input v-model.number=" ...
- QTP- 对输入格式的检查
1.这个函数是判断输入的字符串是否符合格式要求,格式可以根据需要进行实例化 Function RegExpTest(patrn,strng) Dim regEx Set regEx ...
- JAVA捕捉输入格式异常_Java学习(四).异常处理
异常处理 任何一个软件或程序都可能在运行的过程中出现故障,问题的关键是故障出现以后如何处理?谁来处理?怎样处理?处理后系统能否恢复正常的运行?本章在介绍Java处理这类问题基本方法的基础上,讨论包含异 ...
最新文章
- 一个当了爹的程序员的自白
- Asp.net面试题之一
- 【资源】媲美搜索神器everything,超过1秒出结果算我输!
- 计算机电缆检测报告,天联牌计算机电缆详细介绍
- 关于类微博的timeline的设计思考
- 剑指offer JZ02/05 替换空格 Python
- 14个开源Ajax框架
- 关于es的使用-es语法
- Excel VBA内部函数大全
- Vue实现点击上传图片预览图片功能
- 启动定时器t0的工作指令是_80c51单片机定时器t0工作于方式1定时时间1ms当晶振为6mhz时求计数初值为多少...
- 西达摩花魁咖啡豆名字来源
- 如何把word里的分页符、换行符替换成回车符?
- 当程序员追求佛系,会发生什么……
- cluster by、group by操作
- MAC下downie下载网页视频报错“转换错误”解决方案
- UML图绘制-----时序图的画法
- hive 任务查询报错 Reduce operator initialization failed
- 使用opentelemetry-go操作Jaeger
- 小时候电视剧里常听到的“IT精英”,今天怎么变成了“码农”?
热门文章
- 论文模型构建的步骤_构建进化树---核苷酸替换模型的选择
- 黑猴子的家:TortoiseSVN 客户端安装
- 服务器端JSP页面连接MySQL数据库的学习
- 关于JavaSwing表格部件的表格数据的刷新解决方法
- odoo12有些登录用户能显示菜单,有些登录用户显示不了
- thread_join.c:(.text+0x6f): undefined reference to `pthread_create' 问题的解决
- saiku 使用笔记
- 【深度学习】回归任务评价方法(MSE、MAE、RMSE)
- 最详细的一篇讲解Spring的博客
- 【Flutter组件】Expanded详解