0
|
1 #!/usr/bin/perl
|
|
2
|
|
3 #------------------------------------------------------------------------------
|
|
4 # Split a fasta file (create one file per sequence)
|
|
5 #
|
|
6 #
|
|
7 #------------------------------------------------------------------------------
|
|
8
|
|
9 use strict;
|
|
10
|
|
11 #------------------------------------------------------------------------------
|
|
12 # Write fasta file
|
|
13 #------------------------------------------------------------------------------
|
|
14 sub writeSeq($$) {
|
|
15 my($name, $seq) = @_;
|
|
16 $name = "chr" . $name . ".fa";
|
|
17 print "Writing to $name\n";
|
|
18 open OUT, "> $name";
|
|
19 print OUT $seq;
|
|
20 close OUT;
|
|
21 }
|
|
22
|
|
23 #------------------------------------------------------------------------------
|
|
24 # Main
|
|
25 #------------------------------------------------------------------------------
|
|
26
|
|
27 my($seq, $name) = ('', '');
|
|
28 my($lineNum, $l, $newName);
|
|
29 #---
|
|
30 # Read fasta file
|
|
31 #---
|
|
32 for($lineNum=0 ; $l = <STDIN> ; $lineNum++ ) {
|
|
33 if( $l =~/^>\s*(.*?)\s+.*/ ) {
|
|
34 $newName = $1;
|
|
35 if( $seq ne "" ) { writeSeq($name, $seq); }
|
|
36 # New sequence
|
|
37 $name = $newName;
|
|
38 $seq = $l;
|
|
39 } else { $seq .= $l; }
|
|
40 }
|
|
41
|
|
42 if( $seq ne "" ) { writeSeq($name, $seq); }
|