转录本长度,在计算基因表达量TPM等需要,本脚本从gtf文件提取生成转录本长度文件。

1. 找出所有的转录本

# 找出所有的转录本
cat hg38.refGene.gtf|awk -F '\t' '{if($3=="transcript")  print $0}'|head

2. 找出某一转录本的所有外显子

# 某一转录本的所有外显子
cat hg38.refGene.gtf|grep "\"NM_001476\""|awk '{if($3=="exon")  print $0}' # 匹配"NM_001476"

3. 计算某一转录本所有外显子之和

# 计算某一转录本的长度(所有exon之和)
cat hg38.refGene.gtf|grep "\"NM_001476\""|awk '{if($3=="exon")  print $0}'|awk '{print $5,$4,$5-$4+1}'|awk '{sum+=$3};END {print "NM_001476\t" sum}'

4. 找出某一基因的所有转录本

# 找出某一基因的所有转录本,如BRAF
cat hg38.refGene.gtf|awk -F '\t' '{if($3=="transcript")  print $0}'|grep BRAF

5. 列出所有转录本的编码区长度(外显子之和)

## 列出转录本所有exon之和
##分两步
cat hg38.refGene.gtf|awk -F '\t' '{if($3=="transcript")  print $9}'|awk '{print $4}' > transtript_id.txtfor id in `cat transtript_id.txt|head -2`; do cat hg38.refGene.gtf|grep $id|awk '{if($3=="exon") print $0}'|awk '{print $5,$4,$5-$4+1}'|awk -v name=${id:1:-2} '{sum+=$3};END {print name, "\t", sum}';done# 注意-v参数 ${id:1:-2} 去掉前面一个和后面两个字符## 一行代码搞定
for id in `cat hg38.refGene.gtf|awk -F '\t' '{if($3=="transcript")  print $9}'|awk '{print $4}'`; do cat hg38.refGene.gtf|grep $id|awk '{if($3=="exon") print $0}'|awk '{print $5,$4,$5-$4+1}'|awk -v name=${id:1:-2} '{sum+=$3};END {print name, "\t", sum}';done  >cds_len.txt

6. 某一转录本mRNA长度

cat hg38.refGene.gtf|grep "\"NM_001476\""|awk '{if($3=="exon"||$3=="5UTR"||$3=="3UTR") print $0}'|awk '{print $5,$4,$5-$4+1}'|awk '{sum+=$3};END {print "NM_001476\t" sum}'

7. 列出所有转录本mRNA长度

for id in `cat hg38.refGene.gtf|awk -F '\t' '{if($3=="transcript")  print $9}'|awk '{print $4}'`; do cat hg38.refGene.gtf|grep $id|awk '{if($3=="exon" || $3=="5UTR" || $3=="3UTR") print $0}'|awk '{print $5,$4,$5-$4+1}'|awk -v name=${id:1:-2} '{sum+=$3};END {print name, "\t", sum}';done

注:某一转录本加工成成熟的mRNA,长度应该为 5UTR+CDS+3UTR

bash脚本计算转录本长度相关推荐

  1. Shell脚本中计算字符串长度的5种方法

    这篇文章主要介绍了Shell脚本中计算字符串长度的5种方法,来自于个人Shell脚本长期的开发经验,需要的朋友可以参考下 有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前S ...

  2. BAT批处理脚本案例--计算字符串长度

    BAT批处理脚本没有提供字符串长度计算函数,为此需要自定义实现,本例将涉及批处理脚本下述几个关键知识点: 1)call 调用,调用结果如何赋值给变量 2)字符串截取 3)goto使用 4)变量延时读取 ...

  3. bash脚本编程之一 变量、变量类型等

    变量的内容 1.变量命名:            1.只能包含字母.数字和下划线,并且不能以数字开头,     2.不应该跟系统中已有的环境变量重名     3.最好能见名知意 2.变量赋值: 设置变 ...

  4. bash脚本之case语句应用,while、until和select循环应用及其示例

    bash脚本编程: case选择分支结构: case: case 词 in [模式 [| 模式]...) 命令 ;;]... esac 在脚本中使用case的结构: case ${VAR_NAME} ...

  5. bash脚本编程之条件判断、条件测试

    脚本编程: 编程面向过程有如下几种执行方式 顺序执行 选择执行:  如 if, case 循环执行:  如 for, while, until bash的变量类型: 本地变量 set VAR_NAME ...

  6. 生产力工具:shell 与 Bash 脚本

    生产力工具:shell 与 Bash 脚本 作者:吴甜甜 个人博客网站: wutiantian.github.io 微信公众号: 吴甜甜的博客 注意:本文只是我个人总结的学习笔记,不适合0基础人士观看 ...

  7. 通过shell/bash脚本使用ffmpeg批量去除视频固定片头和片尾(Cygwin环境)

    通过shell/bash脚本使用ffmpeg批量去除视频固定片头和片尾(Cygwin环境) 任务需求: 基本情况: 技能需求: 操作流程概括: 运行通过的shell脚本: 小结 任务需求: 对一批视频 ...

  8. bash脚本编程之for循环

    bash脚本编程: shell: 交互式接口:编程环境:能够提供一些内部命令,并且能通过PATH环境变量找到外部命令:把命令提交给内核启动为进程:默认字符型: 条件测试:$? 命令的状态结果 真( 0 ...

  9. 十分钟完成Bash 脚本进阶!列举Bash经典用法及其案例

    前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神.虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加 ...

最新文章

  1. HTML添加上传图片并进行预览
  2. php自动装载编程,php 类自动载入的方法
  3. GitBook关联GitHub
  4. py-faster-rcnn源码解读系列
  5. C/C++变量命名规则,个人习惯总结
  6. 批处理判断文件夹是否存在
  7. 小米tts语音引擎下载_TTS语音模块:XFS5152CE语音合成模块详解
  8. 《HeadFirst Python》第一章学习笔记
  9. 【Linux学习】常用指令-sortunique
  10. 南开大学c语言试题,南开大学二级C语言试题库,共71页
  11. java循环的内部改变循环变量的值_java在for循环中怎样修改参数值?
  12. JavaScript高级程序设计学习(二)之基本概念
  13. pytorch之---max()函数
  14. rstudio 修改代码间距_如何在RStudio里修改R脚本的编码方式
  15. 计算机组成原理白中英第五版之指令系统
  16. [转载]Wifi OKC 验证
  17. 依分布收敛、依概率收敛、均方收敛、几乎处处收敛
  18. 1.8万字详解实时数仓建设方案
  19. xp下安装什么linux系统版本,windows xp sp3下怎么安装linux系统?
  20. 惊!成年蚂蚁竟然返老还童!原因居然是。。。。

热门文章

  1. 手动求梯度,二范数的偏导,二范数平方的偏导
  2. 基于线性回归的房价预测分析
  3. kaptcha的使用
  4. java %2f_java保留两位的几种写法
  5. 学会这样用Github搜索,再也不用到处找练手的项目了
  6. hex反编译成c语言,IDA Hex-Rays反编译器使用的一些小技巧
  7. roc曲线的意义_【科研助手】ROC曲线在医学诊断类稿件中的应用
  8. python入门容易精通难_我珍藏的一些好的Python代码,技巧
  9. SC8835 双路H桥电机驱动芯片,完美替代DRV8835
  10. Spring之AOP的切点、通知、切点表达式以及知识要点