splitCNV.olderVersion
author A.M. Thurnherr <athurnherr@yahoo.com>
Tue, 10 Apr 2012 20:30:23 +0000
changeset 8 88ba92d0e30c
parent 3 711dd29cb6dd
permissions -rwxr-xr-x
.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     1
#!/usr/bin/perl
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     2
#======================================================================
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     3
#                    S P L I T C N V 
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     4
#                    doc: Mon Oct 25 22:24:21 2010
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     5
#                    dlm: Fri Oct 29 20:04:42 2010
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     6
#                    (c) 2010 A.M. Thurnherr
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     7
#                    uE-Info: 16 29 NIL 0 0 72 2 2 4 NIL ofnI
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     8
#======================================================================
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     9
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    10
# split SeaBird CNV file using scan values found with yoyo
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    11
#	e.g. splitCNV P403_015_1sec.cnv `importCNV -s P403_015_1sec.cnv | yoyo -QFscan -ut`
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    12
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    13
# HISTORY:
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    14
#	Oct 25, 2010: - created
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    15
#	Oct 26, 2010: - BUG: *.00 file always only contained the 1st record
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    16
#	Oct 29, 2010: - cosmetics
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    17
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    18
# scan number must be the first field of each record
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    19
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    20
die("Usage: $0 <CNV-file> <val> [...]\n")
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    21
	unless (@ARGV >= 2 && -f $ARGV[0]);
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    22
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    23
chomp($basename = `basename $ARGV[0] .cnv`);
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    24
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    25
$state = 0;								# init finite state machine
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    26
$next = 0;								# next extension number
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    27
$trg = 2;								# NB: yoyo -ut includes first & last scans
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    28
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    29
open(IN,$ARGV[0]);
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    30
while (<IN>) {
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    31
	if ($state == 0) {					# state 0: reading header
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    32
		push(@HDR,$_);
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    33
		$state = 1 if /^\*END\*/;
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    34
		next;
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    35
	}
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    36
	if ($state == 1) {					# state 1: begin new file
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    37
		close(OUT);
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    38
		printf(STDERR "writing $basename.%02d\n",$next);
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    39
		open(OUT,sprintf(">$basename.%02d",$next++));
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    40
		foreach my $h (@HDR) { print(OUT $h); }
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    41
		$state = 2;
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    42
	}
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    43
	if ($state == 2) {					# state 2: copy data until target scan
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    44
		print(OUT);
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    45
		my(@f) = split;
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    46
		$trg++,$state=1 if ($f[0] == $ARGV[$trg]);
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    47
	}
711dd29cb6dd post 2011_IWISE
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    48
}