- 论坛徽章:
- 0
|
本帖最后由 Okelani 于 2018-02-02 15:24 编辑
perl map.pl data > map.txt
- #!/usr/bin/perl
- use 5.010;
- sub get {
- state $min = 1.4;
- state $class = 0.05;
- state $sign = [ 'A' .. 'J' ];
- my $in = shift;
- my $val = $in - $min;
- return $sign->[0] if $val <= 0;
- return $sign->[-1] if $val > 0.4;
- return $sign->[ 1 + $val / $class ];
- }
- my %xy;
- my %y;
- while (<>) {
- my ( $xy, undef, $vol ) = split;
- #chomp;
- #say "$_\t", get($vol);
- my ( $x, $y ) = $xy =~ /\((\S+),(\S+)\)/;
- $xy{$x}{$y} //= get($vol);
- $y{$y} //= 1;
- }
- my $NA = '_';
- my ( $xmin, $xmax ) = ( sort { $a <=> $b } keys %xy )[ 0, -1 ];
- my ( $ymin, $ymax ) = ( sort { $a <=> $b } keys %y )[ 0, -1 ];
- say join "\t", 'y\x', $xmin .. $xmax;
- for ( my $y = $ymax ; $y >= $ymin ; $y-- ) {
- say join "\t", $y, map { $xy{$_}{$y} // $NA } $xmin .. $xmax;
- }
- __DATA__
- (7,1) bgr_trim8 1.4796 V
- (8,1) bgr_trim8 1.6455 V
复制代码 |
|