.match_warp.stretch
author Andreas Thurnherr <ant@ldeo.columbia.edu>
Mon, 13 Apr 2020 11:06:22 -0400
changeset 40 c1803ae2540f
parent 39 56bdfe65a697
permissions -rw-r--r--
.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     2
#                    . M A T C H _ W A R P . S T R E T C H 
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Tue Aug 22 18:31:22 2006
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     4
#                    dlm: Wed Aug 23 23:51:25 2006
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 2006 A.M. Thurnherr
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     6
#                    uE-Info: 52 0 NIL 0 0 72 2 2 4 NIL ofnI
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     7
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     8
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     9
# stretch (and shift!) monotonically increasing coordinate
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    10
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    11
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    12
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    13
sub MW_usage(@)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    14
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    15
	croak("match-warp usage: -w stretch(<field>)\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    16
		unless (@_ == 1);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
	($MW_cfname) = @_;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    18
	
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    19
	$MW_cfnr  =  fnr($MW_cfname);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    20
	$MW_cwfnr = wfnr($MW_cfname);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    21
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    22
	croak("$0: field $MW_cfname must be numeric\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    23
		unless numberp($ants_[0][$MW_cfnr]);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    24
	for (my($r)=1; $r<@ants_; $r++) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    25
		croak("$0: field $MW_cfname of rec $r must be numeric ($ants_[$r][$MW_cfnr])\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    26
			unless numberp($ants_[$r][$MW_cfnr]);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    27
		croak("$0: field $MW_cfname must be monotonically increasing (" .
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    28
				  "$ants_[$r][$MW_cfnr]=>$ants_[$r-1][$MW_cfnr]" .
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    29
			  	  ")\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    30
			unless ($ants_[$r][$MW_cfnr] >= $ants_[$r-1][$MW_cfnr]);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    31
	}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    32
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    33
	croak("$0: warp-file field $MW_cfname must be numeric\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    34
		unless numberp($wf_[0][$MW_cwfnr]);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    35
	for (my($r)=1; $r<@wf_; $r++) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    36
		croak("$0: warp-file field $MW_cfname of rec $r must be numeric ($wf_[$r][$MW_cwfnr])\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    37
			unless numberp($wf_[$r][$MW_cwfnr]);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    38
		croak("$0: warp-file field $MW_cfname must be monotonically increasing (" .
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    39
				  "$wf_[$r][$MW_cwfnr]=>$wf_[$r-1][$MW_cwfnr]" .
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
			  	  ")\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    41
			unless ($wf_[$r][$MW_cwfnr]  >= $wf_[$r-1][$MW_cwfnr]);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    42
		$MW_unwarped[$r] = $wf_[$r][$MW_cwfnr];
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    43
	}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    44
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    45
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    46
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    47
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    48
sub MW_warp(@)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    49
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    50
	my($offset,$scale) = @_;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    51
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    52
	for (my($r)=0; $r<@wf_; $r++) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    53
		$wf_[$r][$MW_cwfnr] = $MW_unwarped[$r]*$scale + $offset;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    54
	}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    55
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    56
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    57
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    58
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    59
1;