-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsyncset
executable file
·53 lines (49 loc) · 1.09 KB
/
syncset
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/opt/maths/bin/perl
use strict;
use warnings;
use lib 'lib';
use Type;
use Seq::Db;
my $typename = 'r';
# Only track() supports this logic
my %supported = map +($_ => 1), qw{ r };
while (@ARGV && $ARGV[0] =~ /^-/) {
my $arg = shift(@ARGV);
last if $arg eq '--';
$typename = $1, next if $arg =~ /^-y(.*)/;
die "Unknown option '$arg'";
}
die "Type '$typename' not yet supported" unless $supported{$typename};
my $type = Type->new($typename);
my $db = Seq::Db->new($type, 0);
my $prev = -1;
my $prevg = undef;
for my $g ($db->resultset('TauG')->search(
undef, { order_by => 'n' }
)->all) {
my $n = $g->n;
if ($n != $prev + 1) {
if ($prevg) {
$prevg->superset(0);
$prevg->update;
}
goto doneg;
}
if (!$prevg->complete && !$g->complete
&& $prevg->ming == $g->ming + 1
) {
$prevg->superset(1);
$g->subset(1);
} else {
$prevg->superset(0);
$g->subset(0);
}
$prevg->update;
doneg:
$prev = $n;
$prevg = $g;
}
if ($prevg) {
$prevg->superset(0);
$prevg->update;
}