其实这种问题应该用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的输入格式相关推荐

  1. java的构造函数格式_java – 自定义MapReduce输入格式 – 找不到构造函数

    我正在为Hadoop 0.20.2编写一个自定义的InputFormat,并且遇到NoSuchMethodException我无法摆脱.我开始时: public class ConnectionInp ...

  2. 【QT】Qt正则表达式的使用:使用QRegExp来限制QLineEdit的输入格式

    QLineEdit中使用QRegExp来限制输入格式,下面以IP输入框为例 QLineEdit *lineEditIP = new QLineEdit("192.168.147.200&qu ...

  3. 4、题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出。 * * 输入格式:测试输入包含若干测试用例,每个测试用例的格式为 第1行:N 第2行:N名学生的成绩,相邻两数字用一个

    题目: /* 4.题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式:测试输入包含若干测试用例,每个测试用例的格式为   第1行:N   第2行:N名学生的成绩,相邻两数字用一 ...

  4. UITextFIeld的输入格式问题 ----W.P

    ---恢复内容开始--- 1.银行卡的输入格式,四个数字,一个空格. 2.金额的输入格式限制,不能以"."开头,"."后精确两位. 注意:第三方输入软件(百度, ...

  5. iOS限定UITextField的输入格式

    iOS限定文本框的输入格式 // // ViewController.m // 限定文本框只能接收数字 // // Created by mac on 16/4/13. // Copyright © ...

  6. JS收集:限制输入格式

    限制输入格式: [A-Z]{3,10}:[A-Z_]{4,50}.ASPX 例如: VIEW:ADMIN_USER.ASPX DEL:ADMIN_USER_LOG.ASPX 转载于:https://w ...

  7. Vue中实现输入框Input输入格式限制

    Vue中实现输入框Input输入格式限制 1.使用修饰符实现数字输入 在VUE中可以在v-modal后添加修饰符的形式来限制输入,比如: <input v-model.number=" ...

  8. QTP- 对输入格式的检查

    1.这个函数是判断输入的字符串是否符合格式要求,格式可以根据需要进行实例化 Function RegExpTest(patrn,strng)      Dim regEx      Set regEx ...

  9. JAVA捕捉输入格式异常_Java学习(四).异常处理

    异常处理 任何一个软件或程序都可能在运行的过程中出现故障,问题的关键是故障出现以后如何处理?谁来处理?怎样处理?处理后系统能否恢复正常的运行?本章在介绍Java处理这类问题基本方法的基础上,讨论包含异 ...

最新文章

  1. 一个当了爹的程序员的自白
  2. Asp.net面试题之一
  3. 【资源】媲美搜索神器everything,超过1秒出结果算我输!
  4. 计算机电缆检测报告,天联牌计算机电缆详细介绍
  5. 关于类微博的timeline的设计思考
  6. 剑指offer JZ02/05 替换空格 Python
  7. 14个开源Ajax框架
  8. 关于es的使用-es语法
  9. Excel VBA内部函数大全
  10. Vue实现点击上传图片预览图片功能
  11. 启动定时器t0的工作指令是_80c51单片机定时器t0工作于方式1定时时间1ms当晶振为6mhz时求计数初值为多少...
  12. 西达摩花魁咖啡豆名字来源
  13. 如何把word里的分页符、换行符替换成回车符?
  14. 当程序员追求佛系,会发生什么……
  15. cluster by、group by操作
  16. MAC下downie下载网页视频报错“转换错误”解决方案
  17. UML图绘制-----时序图的画法
  18. hive 任务查询报错 Reduce operator initialization failed
  19. 使用opentelemetry-go操作Jaeger
  20. 小时候电视剧里常听到的“IT精英”,今天怎么变成了“码农”?

热门文章

  1. 论文模型构建的步骤_构建进化树---核苷酸替换模型的选择
  2. 黑猴子的家:TortoiseSVN 客户端安装
  3. 服务器端JSP页面连接MySQL数据库的学习
  4. 关于JavaSwing表格部件的表格数据的刷新解决方法
  5. odoo12有些登录用户能显示菜单,有些登录用户显示不了
  6. thread_join.c:(.text+0x6f): undefined reference to `pthread_create' 问题的解决
  7. saiku 使用笔记
  8. 【深度学习】回归任务评价方法(MSE、MAE、RMSE)
  9. 最详细的一篇讲解Spring的博客
  10. 【Flutter组件】Expanded详解