added some tests for viral codes
[jalview.git] / forester / archive / perl / rio_slave_driver.pl
1 #!/usr/bin/perl -W
2
3 # rio_slave_driver.pl
4 # -------------------
5 #
6 # Copyright (C) 2002 Washington University School of Medicine
7 # and Howard Hughes Medical Institute
8 # All rights reserved
9 #
10 # Created: 01/18/02
11 # Author: Christian M. Zmasek
12 # zmasek@genetics.wustl.edu
13 # http://www.genetics.wustl.edu/eddy/people/zmasek/
14 #
15 # Last modified: 02/20/02
16
17
18 # 0: block size
19 # 1: number of blocks which have a size of block size + 1
20 # 2: name of resampled alignment, inc. query
21 # 3: matrix number
22 # 4: name of query
23 # 5: PWD file
24 # 6: temp dir
25 # 7: seed for random number generator for neighbor
26 # 8...: list of node names
27
28
29
30
31 use strict;
32
33 use FindBin;
34 use lib $FindBin::Bin;
35 use rio_module;
36
37 if ( @ARGV < 9 ) {
38     &dieWithUnexpectedError( "argumnet count off" ); 
39 }
40
41
42 my $block_size    = shift( @ARGV );
43 my $larger_blocks = shift( @ARGV );
44 my $align         = shift( @ARGV );
45 my $matrix_n      = shift( @ARGV );
46 my $name          = shift( @ARGV );
47 my $pwd_file      = shift( @ARGV );
48 my $temp_dir      = shift( @ARGV );
49 my $seed          = shift( @ARGV );
50 my @nodelist      = @ARGV;
51 my $start         = 0;   
52 my $end           = 0;
53 my $x             = 0;
54 my $node          = "";
55
56
57 $start = 0;
58
59 if ( $larger_blocks > 0 ) {
60     $end = $block_size;
61 }
62 else {
63     $end = $block_size - 1;
64 }
65
66 for ( $x = 0; $x < scalar( @nodelist ); $x++ ) {
67     my $child_pid;
68     $node = $nodelist[ $x ];
69             
70     if ( !defined( $child_pid = fork() ) ) {
71         &dieWithUnexpectedError( "cannot fork" );
72     }
73     elsif ( $child_pid ) {
74         # I'm the parent, forking off $nodelist number of children
75     }
76     else {      
77         exec( "ssh",
78               $node,
79               "/usr/bin/perl",
80               $RIO_SLAVE,
81               $start,
82               $end,
83               $align.$x,
84               $matrix_n,
85               $name,
86               $pwd_file,
87               $seed,
88               $x,
89               $temp_dir )
90               || &dieWithUnexpectedError( "could not \"exec ssh $node /usr/bin/perl $RIO_SLAVE\"" );
91
92     }
93     $larger_blocks--;   
94     if ( $larger_blocks > 0 ) {
95         $start += ( $block_size + 1 );
96         $end   += ( $block_size + 1 );
97     }
98     elsif ( $larger_blocks == 0 ) {
99         $start += ( $block_size + 1 );
100         $end   += $block_size;
101     }
102     else {
103         $start += $block_size;
104         $end   += $block_size;
105     }
106 }
107       
108 exit( 0 );