其他
生信编程直播第11题:把文件内容按照染色体分开写出
问题描述
这个需求很常见,因为一般生物信息学数据比较大,比如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 | chr 2 43995310 43995986 chr 17 49788603 49789067 chr 17 59565573 59566163 chr 19 8390308 8390745 chr 12 49188033 49189033 chr 7 974903 975570 chr 7 98878532 98879500 chr 7 44044672 44045322 chr 1 153634052 153634772 chr 11 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; |
历史题目:
生物信息学技能面试题(第1题)-人类基因组的外显子区域到底有多长
生物信息学技能面试题(第4题)-多个同样的行列式文件合并起来
生物信息学技能面试题(第5题)-根据GTF画基因的多个转录本结构
生物信息学技能面试题(第6题)-下载最新版的KEGG信息,并且解析好