Brassicanapus的个人博客分享 http://blog.sciencenet.cn/u/Brassicanapus

博文

perl脚本实现gene ID号与alias的对应替换

已有 3620 次阅读 2019-6-19 18:19 |个人分类:perl|系统分类:科研笔记

甘蓝型油菜Darmor参考基因组的cds文件的序列编号为gene的alias,如“GSBRNA2T00121640001”;而文章发表习惯使用gene的ID号,如“BnaC09g12820D”。需要将brassican_napus_v4.1.chromosomes/Brassica_napus.annotation_v5.gff3.cds.fa文件中的gene alias对等替换为gene ID 生成新的fa文件,以便建立blast数据库。之前使用了perl结合sed命令,该101040条数据需要72-84小时的运算时间。脚本如下:

#!/usr/bin/perl;

while(<>){

split;

`sed -i 's/$_[1]/$_[0]/' /database/brassican_napus_v4.1.chromosomes/test/Brassica_napus.annotation_v5.gff3.cds.fa `

}

经再学习小骆驼,修改脚本如下:

#!/usr/bin/perl ;

#repalce.pl脚本用于替换基因编号,需要三个文件作为脚本运行参数,第一个文件为替换对照表,第二个文件为要替换的fa文件,第三个为输出结果文件

#usage:perl repalce.pl list.file fa.file out.file

open LIST,$ARGV[0];

open FAFILE,$ARGV[1];

open OUT,">$ARGV[2]";

undef $/;#在misa.pl 中学到的,取消“\n”作为换行符

$in=<FAFILE>;#整体输入fa文件为单个变量,内存需要足够大

study $in;

$/="\n";#恢复换行符

while(<LIST>){

    chomp;

    my($new,$old)=split;

    $in=~s/$old/$new/;

}

该脚本大约30-40分钟即可完成101040条数据的替换。



附件:

list 文本格式如下:

BnaC09g12820D GSBRNA2T00000001001

BnaC09g12810D GSBRNA2T00000003001

BnaC09g12800D GSBRNA2T00000005001

BnaC09g12790D GSBRNA2T00000007001

BnaC09g12780D GSBRNA2T00000008001

BnaC09g12770D GSBRNA2T00000009001

BnaC09g12760D GSBRNA2T00000011001

BnaC09g12750D GSBRNA2T00000012001

BnaC09g12740D GSBRNA2T00000015001

BnaC09g12730D GSBRNA2T00000016001

fa文本如下:

>GSBRNA2T00121640001

ATGGATTGGCAAGGACAGAAACTAGCGGAGCAGCTGATGCAGATCCTGCTCTTGATCGCC

GCCGTTGTGGCGTTCGTCGTTGGTTACACGACGGCGTCGTTTAGGACGATGATGTTGATT

TACGCGGGAGGGGTTGGTGTCACGACGTTGATCACGGTGCCGAACTGGCCATTCTTTAAC

CGTCATCCACTCAAGTGGTTGGAACCAAGTGAAGCGGAGAAGCATCCTAAACCGGAAGTC

GTTGTTAGCTCGAAGAAGAAGTCATCTAAAAAGTAG

>GSBRNA2T00121639001

ATGGAATGCAGATTGATTCATATCTGGATAGACTTAGCAGCTCCTACTATCATAGCATTG

ATCATTTTGATTTTAAATCCACAATCCGCGATGCTGCTAACACTAAAGCCCTTTGTGCCC

ATCACACCAAAGCCTCGTTATTCATACATCATTCCTCATCACCATCATCATGTTAGTTTC

输出结果文本如下:

>BnaA01g00010D

ATGGATTGGCAAGGACAGAAACTAGCGGAGCAGCTGATGCAGATCCTGCTCTTGATCGCC

GCCGTTGTGGCGTTCGTCGTTGGTTACACGACGGCGTCGTTTAGGACGATGATGTTGATT

TACGCGGGAGGGGTTGGTGTCACGACGTTGATCACGGTGCCGAACTGGCCATTCTTTAAC

CGTCATCCACTCAAGTGGTTGGAACCAAGTGAAGCGGAGAAGCATCCTAAACCGGAAGTC

GTTGTTAGCTCGAAGAAGAAGTCATCTAAAAAGTAG

>BnaA01g00020D

ATGGAATGCAGATTGATTCATATCTGGATAGACTTAGCAGCTCCTACTATCATAGCATTG

ATCATTTTGATTTTAAATCCACAATCCGCGATGCTGCTAACACTAAAGCCCTTTGTGCCC

ATCACACCAAAGCCTCGTTATTCATACATCATTCCTCATCACCATCATCATGTTAGTTTC




https://blog.sciencenet.cn/blog-3416088-1185857.html


下一篇:perl map函数与数组切片组合使用实现文本列的提取
收藏 IP: 220.163.128.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 15:50

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部