查看原文
其他

生信编程直播第11题:把文件内容按照染色体分开写出

2017-04-28 jimmy 生信技能树

问题描述

这个需求很常见,因为一般生物信息学数据比较大,比如sam,vcf,或者gtf,bed都是把所有染色体综合在一起的文件。
如果想根据染色体把大文件拆分成小的文件呢?
比如:ftp://ftp.ncbi.nlm.nih.gov/pub/CCDS/current_human/CCDS.current.txt

这个文件里面的基因就有染色体信息,那根据染色体把这个文件拆分成1~22和其它染色体,这样的23个文件,我

练习题

如果你觉得下载文件比较麻烦,我给你一个测试数据如下:


01
02
03
04
05
06
07
08
09
10
chr2    43995310    43995986
chr17   49788603    49789067
chr17   59565573    59566163
chr19   8390308 8390745
chr12   49188033    49189033
chr7    974903  975570
chr7    98878532    98879500
chr7    44044672    44045322
chr1    153634052   153634772
chr11   60905850    60906575


给出示例perl代码如下:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
use FileHandle;
foreach( 1..22 ){
    $normal_chr{"chr".$_}=1 ;
    open $fh{"chr".$_},">chr$_.txt" or die;
}
open other,">chr_other.txt" or die;
open FH,'a.bed';
while(<FH>){
    chomp;
    @F=split;
    if(exists $normal_chr{$F[0]}){
         $fh{$F[0]}->print( "$_\n" );
    }else{
        print other $_;
    }
}
foreach( 1..22 ){
    close $fh{$_};
}
close other;



历史题目:

生信编程直播第0题-生信编程很简单!

生物信息学技能面试题(第1题)-人类基因组的外显子区域到底有多长

生物信息学技能面试题(第2题)-探索人类基因组序列

生物信息学技能面试题(第3题)-探索人类基因组注释文件

生物信息学技能面试题(第4题)-多个同样的行列式文件合并起来

生物信息学技能面试题(第5题)-根据GTF画基因的多个转录本结构

生物信息学技能面试题(第6题)-下载最新版的KEGG信息,并且解析好

生信编程直播第七题:写超几何分布检验!

生信编程直播第八题:ID转换大全

生信编程直播第9题-根据指定染色体及坐标得到参考碱基

生信编程直播第10题:根据指定染色体及坐标得到位置信息




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存