This is an automated email from the git hooks/post-receive script.

malex-guest pushed a commit to branch master
in repository seq-gen.

commit 95dced205a29151807e7b4bbac80785456eb410d
Author: Alexandre Mestiashvili <[email protected]>
Date:   Mon Oct 2 16:23:50 2017 +0200

    New upstream version 1.3.4
---
 .gitignore                        |   5 +
 documentation/Seq-Gen.Manual.html |  55 +++++++++-
 examples/seqs+trees.phy           |   7 ++
 source/aamodels.c                 |   4 +-
 source/aamodels.h                 |   4 +-
 source/eigen.c                    |   4 +-
 source/eigen.h                    |   4 +-
 source/evolve.c                   |   4 +-
 source/evolve.h                   |   4 +-
 source/gamma.c                    |   4 +-
 source/gamma.h                    |   4 +-
 source/global.c                   |   9 +-
 source/global.h                   |   4 +-
 source/model.c                    |   4 +-
 source/model.h                    |   4 +-
 source/nucmodels.c                |   4 +-
 source/nucmodels.h                |   4 +-
 source/progress.c                 |   4 +-
 source/progress.h                 |   4 +-
 source/seq-gen.c                  | 213 +++++++++++++++++++++-----------------
 source/tree.h                     |   4 +-
 source/treefile.c                 |  14 +--
 source/treefile.h                 |   4 +-
 source/twister.c                  |   4 +-
 source/twister.h                  |   4 +-
 25 files changed, 231 insertions(+), 148 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e519cba
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+._*
+*.o
+*~
+*.swp
+source/seq-gen
diff --git a/documentation/Seq-Gen.Manual.html 
b/documentation/Seq-Gen.Manual.html
index 843bf10..850779a 100755
--- a/documentation/Seq-Gen.Manual.html
+++ b/documentation/Seq-Gen.Manual.html
@@ -2,18 +2,31 @@
 <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <title>Seq-Gen: Simulation of molecular sequences</title> 
+       <style>body { font-family: Helvetica, Arial, Sans-Serif; }</style>
 </head>
 <body>
        <center>
                <h1><i>Seq-Gen</i></h1> <h2>Sequence-Generator: An application 
for the Monte Carlo simulation of molecular sequence evolution along 
phylogenetic trees. 
                        <br>
-                       Version 1.3.2</h2> 
+                       Version 1.3.4</h2> 
                <p align="center">
                        <img width="32" height="32" src="icon.gif"> 
                </p>
-               <h2><i>&copy; Copyright 1996-2005<br>
-               Andrew Rambaut and Nick C. Grassly</i></h2>
-               <h2>Supported by <a href="http://www.royalsoc.ac.uk/";>The Royal 
Society</a></h2> 
+               <h2><i>&copy; Copyright 1996-2017<br>
+               Andrew Rambaut and Nicholas C. Grassly</i></h2>
+               <h2>Supported by <a href="http://www.royalsoc.ac.uk/";>The Royal 
Society of London</a></h2> 
+               <address>
+                       Institute of Evolutionary Biology, 
+                       <br>
+                       University of Edinburgh, 
+                       <br>
+                       Ashworth Laboratories, 
+                       <br>
+                       King's Buildings, 
+                       <br>
+                       Edinburgh EH9 2FL, U.K. 
+               </address>
+               <br />Originally developed at:
                <address>
                        Department of Zoology, 
                        <br>
@@ -23,7 +36,41 @@
                        <br>
                        Oxford OX1 3PS, U.K. 
                </address>
+               <br />
        </center>
+       <h4>New features and bugs fixed in version 1.3.4 - 16 Sept 2017</h4> 
+       <ul>
+               <li>
+               FASTA format output (thanks to Kevin Murray)
+               </li>
+               <li>
+               Errors now return a non-zero error code.
+               </li>
+               <li>
+               White space at the end of the last sequence no longer prevents 
the tree from being read.
+               </li>
+               <li>
+               If the tree file was specified as a command line option the 
program was hanging.
+               </li>
+               <li>
+               Command line options now allows a space for the model (i.e., -m 
HKY).
+               </li>
+               <li>
+               Long standing error fixed when expanding memory allocated for 
big trees (thanks Fr�d�ric Lemoine).
+               </li>
+       </ul>
+       <h4>New features and bugs fixed in version 1.3.3 - 28 Oct 2011</h4> 
+       <ul>
+               <li>
+               MtArt amino acid model added by Lars Jermiin.
+               </li>
+               <li>
+               Memory allocation bugs (thanks to Graham Jones for submitting a 
fix)
+               </li>
+               <li>
+               Rare array overflow causing odd characters in sequence. Thanks 
to Howard Ross, Jeff Thorne and Michael Ott for independently spotting this 
error and Michael and Lars Jermiin for submitting a fix.
+               </li>
+       </ul>
        <h4>Bug fixed in version 1.3.2 - 7 Jan 2005</h4> 
        <ul>
                <li>
diff --git a/examples/seqs+trees.phy b/examples/seqs+trees.phy
new file mode 100644
index 0000000..ff20088
--- /dev/null
+++ b/examples/seqs+trees.phy
@@ -0,0 +1,7 @@
+ 4 40
+Taxon1 ATCTTTGTAGTCATCGCCGTATTAGCATTCTTAGATCTAA 
+Taxon2 ATCCTAGTAGTCGCTTGCGCACTAGCCTTCCGAAATCTAG 
+Taxon3 ACTTCTGTGTTTACTGAGCTACTAGCTTCCCTAAATCTAG 
+Taxon4 ATTCCTATATTCGCTAATTTCTTAGCTTTCCTGAATCTGG  
+1
+(((Taxon1:0.2,Taxon2:0.2):0.1,Taxon3:0.3):0.1,Taxon4:0.4);
diff --git a/source/aamodels.c b/source/aamodels.c
index 3337ff4..f30f288 100755
--- a/source/aamodels.c
+++ b/source/aamodels.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/aamodels.h b/source/aamodels.h
index 815d392..f3e08f6 100755
--- a/source/aamodels.h
+++ b/source/aamodels.h
@@ -1,8 +1,8 @@
 /*  Header file for aamodels.c                             */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/eigen.c b/source/eigen.c
index 4525c0f..d2468a0 100755
--- a/source/eigen.c
+++ b/source/eigen.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
 
    The code in this file is taken from Ziheng Yang's PAML package.
diff --git a/source/eigen.h b/source/eigen.h
index c23ac5c..23d23b2 100755
--- a/source/eigen.h
+++ b/source/eigen.h
@@ -1,8 +1,8 @@
 /*  Header file for eigen.c                                */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
 
    The code in this file is taken from Ziheng Yang's PAML package.
diff --git a/source/evolve.c b/source/evolve.c
index 559bdd5..710d15f 100755
--- a/source/evolve.c
+++ b/source/evolve.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/evolve.h b/source/evolve.h
index 7f71fb5..be82c23 100755
--- a/source/evolve.h
+++ b/source/evolve.h
@@ -1,8 +1,8 @@
 /*  Header file for evolve.c                               */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/gamma.c b/source/gamma.c
index 7d5f36e..8f34618 100755
--- a/source/gamma.c
+++ b/source/gamma.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
 
    The code in this file is taken from Ziheng Yang's PAML package.
diff --git a/source/gamma.h b/source/gamma.h
index a98bf60..9779b14 100755
--- a/source/gamma.h
+++ b/source/gamma.h
@@ -1,8 +1,8 @@
 /*  Header file for gamma.c                                */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
 
    The code in this file is taken from Ziheng Yang's PAML package.
diff --git a/source/global.c b/source/global.c
index 3739d44..0df2ca3 100755
--- a/source/global.c
+++ b/source/global.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
@@ -171,7 +171,7 @@ int GetUnsignedLongParams(int argc, char **argv, int *argn, 
char *pos, int numPa
                        if (st==NULL)
                                return -1;
                }
-               
+       
                if (sscanf(st, "%lu", params+i)!=1)
                        return -1;
                i++;
@@ -188,7 +188,7 @@ int GetStrParam(int argc, char **argv, int *argn, char 
*pos, char *param, int le
 {
        int i;
        char *st, *P, buf[256];
-       
+               
        i=0;
        strcpy(buf, pos);
        st=strtok(buf, "\t,/");
@@ -202,6 +202,7 @@ int GetStrParam(int argc, char **argv, int *argn, char 
*pos, char *param, int le
                if (st==NULL)
                        return -1;
        }
+
        strncpy(param, st, len);
        param[len]='\0';
        P=param;
diff --git a/source/global.h b/source/global.h
index 16bdef2..b028bca 100755
--- a/source/global.h
+++ b/source/global.h
@@ -1,8 +1,8 @@
 /*  Header file for global.c                               */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/model.c b/source/model.c
index c148114..117a8ea 100755
--- a/source/model.c
+++ b/source/model.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/model.h b/source/model.h
index e3a755a..de1437e 100755
--- a/source/model.h
+++ b/source/model.h
@@ -1,8 +1,8 @@
 /*  Header file for model.c                                */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/nucmodels.c b/source/nucmodels.c
index 7345b2b..71e33b0 100755
--- a/source/nucmodels.c
+++ b/source/nucmodels.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/nucmodels.h b/source/nucmodels.h
index 21d5568..918bd0a 100755
--- a/source/nucmodels.h
+++ b/source/nucmodels.h
@@ -1,8 +1,8 @@
 /*  Header file for nucmodels.c                            */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/progress.c b/source/progress.c
index e484294..70b3ebd 100755
--- a/source/progress.c
+++ b/source/progress.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/progress.h b/source/progress.h
index b97d0ae..9ebc39d 100755
--- a/source/progress.h
+++ b/source/progress.h
@@ -1,8 +1,8 @@
 /*  Header file for progress.c                             */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/seq-gen.c b/source/seq-gen.c
index 4372408..eb384bb 100755
--- a/source/seq-gen.c
+++ b/source/seq-gen.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
@@ -54,7 +54,7 @@
 #include "twister.h"
 
 #define PROGRAM_NAME "seq-gen"
-#define VERSION_NUMBER "Version 1.3.2x"
+#define VERSION_NUMBER "Version 1.3.4"
 
 int treeFile, textFile, numDatasets, numTrees;
 int scaleTrees, scaleBranches, ancestorSeq, writeAncestors, writeRates;
@@ -87,9 +87,10 @@ static void PrintTitle()
 {
        fprintf(stderr, "Sequence Generator - %s\n", PROGRAM_NAME);
        fprintf(stderr, "%s\n", VERSION_NUMBER);
-       fprintf(stderr, "(c) Copyright, 1996-2004 Andrew Rambaut and Nick 
Grassly\n");
-       fprintf(stderr, "Department of Zoology, University of Oxford\n");
-       fprintf(stderr, "South Parks Road, Oxford OX1 3PS, U.K.\n\n");
+       fprintf(stderr, "(c) Copyright, 1996-2017 Andrew Rambaut and Nick 
Grassly\n");
+       fprintf(stderr, "Institute of Evolutionary Biology, University of 
Edinburgh\n\n");
+       fprintf(stderr, "Originally developed at:\n");
+       fprintf(stderr, "Department of Zoology, University of Oxford\n\n");
 }
 
 static void PrintUsage()
@@ -141,8 +142,9 @@ static void PrintUsage()
 
 void ReadParams(int argc, char **argv)
 {
-       int i, j;
+       int i, j, k;
        char ch, *P, st[4];
+       int modelTwoArgs = 0;
        
        model=NONE;
 
@@ -206,18 +208,16 @@ void ReadParams(int argc, char **argv)
                                        exit(0);
                                break;
                                case 'M':
+                                       k = i;
                                        if (GetStrParam(argc, argv, &i, P, st, 
3)) {
                                                fprintf(stderr, "Bad (or 
missing) Model Code: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
-                                       
                                        P=st;
-                                       while (*P) {
-                                               *P=toupper(*P);
-                                               P++;
+                                       if (i > k) {
+                                               modelTwoArgs = 1;
                                        }
-                                       P=st;
-               
+                                                               
                                        model=-1;
                                        for (j=F84; j<numModels; j++) {
                                                if (strncmp(P, modelNames[j], 
3)==0) {
@@ -238,7 +238,7 @@ void ReadParams(int argc, char **argv)
                                        }
                                        if (model==-1) {
                                                fprintf(stderr, "Unknown Model: 
%s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
 
                                break;
@@ -249,7 +249,7 @@ void ReadParams(int argc, char **argv)
        if (model==NONE) {
                fprintf(stderr, "No model has been specified (use the -m 
option)\n\n");
                PrintUsage();
-               exit(0);
+               exit(1);
        }
 
        for (i=1; i<argc; i++) {
@@ -258,7 +258,7 @@ void ReadParams(int argc, char **argv)
                        if (treeFile) {
                                fprintf(stderr, "Illegal command parameter: 
%s\n\n", argv[i]);
                                PrintUsage();
-                               exit(0);
+                               exit(1);
                        }
                        treeFile=1;
                        strcpy(treeFileName, argv[i]);
@@ -280,73 +280,77 @@ void ReadParams(int argc, char **argv)
                                break;
                                case 'M':
                                        // already delt with
+                                       if (modelTwoArgs) {
+                                               // the model took two arguments 
so skip the second one.
+                                               i++;
+                                       }
                                break;
                                case 'L':
                                        if (GetIntParams(argc, argv, &i, P, 1, 
&numSites) || numSites<1) {
                                                fprintf(stderr, "Bad (or 
missing) sequence length: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'N':
                                        if (GetIntParams(argc, argv, &i, P, 1, 
&numDatasets) || numDatasets<1) {
                                                fprintf(stderr, "Bad (or 
missing) number of datasets: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'P':
                                        if (GetIntParams(argc, argv, &i, P, 1, 
&maxPartitions) || maxPartitions < 1) {
                                                fprintf(stderr, "Bad number of 
partitions: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'C':
                                        if (!isNucModel) {
                                                fprintf(stderr, "You can only 
have codon rates when using nucleotide models\n\n");
-                                               exit(0);
+                                               exit(1);
                                        }
                                        if (rateHetero==GammaRates) {
                                                fprintf(stderr, "You can only 
have codon rates or gamma rates not both\n\n");
-                                               exit(0);
+                                               exit(1);
                                        }
                                        numCats=3;
                                        rateHetero=CodonRates;
                                        if (GetDoubleParams(argc, argv, &i, P, 
3, catRate) ||
                                                catRate[0] <= 0.0 || catRate[1] 
<= 0.0 || catRate[2] <= 0.0 ) {
                                                fprintf(stderr, "Bad Category 
Rates: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'I':
                                        if (GetDoubleParams(argc, argv, &i, P, 
1, &proportionInvariable) || 
                                                        proportionInvariable < 
0.0 || proportionInvariable >= 1.0) {
                                                fprintf(stderr, "Bad Proportion 
of Invariable Sites: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                        invariableSites = 1;
                                break;
                                case 'A':
                                        if (rateHetero==CodonRates) {
                                                fprintf(stderr, "You can only 
have codon rates or gamma rates not both\n\n");
-                                               exit(0);
+                                               exit(1);
                                        }
                                        
                                        if (rateHetero==NoRates)
                                                rateHetero=GammaRates;
                                        if (GetDoubleParams(argc, argv, &i, P, 
1, &gammaShape) || gammaShape<=0.0) {
                                                fprintf(stderr, "Bad Gamma 
Shape: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'G':
                                        if (rateHetero==CodonRates) {
                                                fprintf(stderr, "You can only 
have codon rates or gamma rates not both\n\n");
-                                               exit(0);
+                                               exit(1);
                                        }
                                        
                                        rateHetero=DiscreteGammaRates;
                                        if (GetIntParams(argc, argv, &i, P, 1, 
&numCats) || numCats<2 || numCats>MAX_RATE_CATS) {
                                                fprintf(stderr, "Bad number of 
Gamma Categories: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'F':
@@ -357,7 +361,7 @@ void ReadParams(int argc, char **argv)
                                                        equalFreqs = 0;
                                                        if 
(GetDoubleParams(argc, argv, &i, P, NUM_NUC, nucFreq)) {
                                                                fprintf(stderr, 
"Bad Nucleotide Frequencies: %s\n\n", argv[i]);
-                                                               exit(0);
+                                                               exit(1);
                                                        }
                                                }
                                        } else {
@@ -371,7 +375,7 @@ void ReadParams(int argc, char **argv)
                                                        equalFreqs = 0;
                                                        if 
(GetDoubleParams(argc, argv, &i, P, NUM_AA, aaFreq)) {
                                                                fprintf(stderr, 
"Bad Amino Acid Frequencies: %s\n\n", argv[i]);
-                                                               exit(0);
+                                                               exit(1);
                                                        }
                                                }
                                        }
@@ -379,19 +383,19 @@ void ReadParams(int argc, char **argv)
                                case 'T':
                                        if (model != HKY && model != F84) {
                                                fprintf(stderr, "You can only 
have a transition/transversion ratio when using HKY or F84 models\n\n");
-                                               exit(0);
+                                               exit(1);
                                        }
                                        equalTstv = 0;
                                        if (GetDoubleParams(argc, argv, &i, P, 
1, &tstv)) {
                                                fprintf(stderr, "Bad 
Transition-Transversion Ratio: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'R':
                                        if (model == GTR) {
                                                if (GetDoubleParams(argc, argv, 
&i, P, NUM_NUC_REL_RATES, nucRelativeRates)) {
                                                        fprintf(stderr, "Bad 
General Nucleotide Rate Matrix: %s\n\n", argv[i]);
-                                                       exit(0);
+                                                       exit(1);
                                                }
                                                if 
(nucRelativeRates[NUM_NUC_REL_RATES - 1]!=1.0) {
                                                        for (j=0; j < 
NUM_NUC_REL_RATES - 1; j++) 
@@ -401,46 +405,46 @@ void ReadParams(int argc, char **argv)
                                        } else if ( model == GENERAL) {
                                                if (GetDoubleParams(argc, argv, 
&i, P, NUM_AA_REL_RATES, aaRelativeRate)) {
                                                        fprintf(stderr, "Bad 
General Amino Acid Rate Matrix: %s\n\n", argv[i]);
-                                                       exit(0);
+                                                       exit(1);
                                                }
                                        } else {
                                                fprintf(stderr, "You can only 
have a general rate matrix when using GTR or GENERAL models\n\n");
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'D':
                                        scaleTrees=1;
                                        if (GetDoubleParams(argc, argv, &i, P, 
1, &treeScale) || treeScale<=0.0) {
                                                fprintf(stderr, "Bad Total Tree 
Scale: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                        if (scaleBranches) {
                                                fprintf(stderr, "You can't 
specify both the -d and -s options\n\n");
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'S':
                                        scaleBranches=1;
                                        if (GetDoubleParams(argc, argv, &i, P, 
1, &branchScale) || branchScale<=0.0) {
                                                fprintf(stderr, "Bad Branch 
Length Scale: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                        if (scaleTrees) {
                                                fprintf(stderr, "You can't 
specify both the -d and -s options\n\n");
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'K':
                                        if (GetIntParams(argc, argv, &i, P, 1, 
&ancestorSeq) || ancestorSeq<1) {
                                                fprintf(stderr, "Bad ancestral 
sequence number: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'Z':
                                        userSeed = 1;
                                        if (GetUnsignedLongParams(argc, argv, 
&i, P, 1, &randomSeed)) {
                                                fprintf(stderr, "Bad random 
number generator seed: %s\n\n", argv[i]);
-                                               exit(0);
+                                               exit(1);
                                        }
                                break;
                                case 'O':
@@ -452,7 +456,7 @@ void ReadParams(int argc, char **argv)
                                                default:                        
                
                                                        fprintf(stderr, 
"Unknown output format: %s\n\n", argv[i]);
                                                        PrintUsage();
-                                                       exit(0);
+                                                       exit(1);
                                        }
                                break;
                                case 'W':
@@ -462,7 +466,7 @@ void ReadParams(int argc, char **argv)
                                                default:                        
                
                                                        fprintf(stderr, 
"Unknown write mode: %s\n\n", argv[i]);
                                                        PrintUsage();
-                                                       exit(0);
+                                                       exit(1);
                                        }
                                break;
                                case 'Q':
@@ -471,7 +475,7 @@ void ReadParams(int argc, char **argv)
                                default:
                                        fprintf(stderr, "Illegal command 
parameter: %s\n\n", argv[i]);
                                        PrintUsage();
-                                       exit(0);
+                                       exit(1);
                                break;
                        }
                }
@@ -496,6 +500,13 @@ void PrintVerbose(FILE *fv)
 
        fputc('\n', fv);
        
+       if (hasAlignment) {
+               fprintf(fv, "Alignment read: numSequences = %d, 
numAlignmentSites = %d\n", numSequences, numAlignmentSites);
+               if (ancestorSeq > 0) {
+                       fprintf(fv, "Using sequence %d as the ancestral 
sequence\n", ancestorSeq);
+               }
+               fputc('\n', fv);
+       }
        
        if (scaleTrees) {
                fprintf(fv, "Branch lengths of trees scaled so that tree is %G 
from root to tip\n\n", treeScale);
@@ -562,21 +573,24 @@ void ReadFileParams()
        
        hasAlignment=0;
        
-       ch=fgetc(stdin);
-       while (!feof(stdin) && isspace(ch)) 
-               ch=fgetc(stdin);
+       ch=fgetc(tree_fv);
+       while (!feof(tree_fv) && isspace(ch)) {
+               ch=fgetc(tree_fv);
+       }
                
-       ungetc(ch, stdin);
+       ungetc(ch, tree_fv);
 
        if (ch!='(' && isdigit(ch)) {
-               fgets(st, 255, stdin);
+               fgets(st, 255, tree_fv);
                if ( sscanf( st, " %d %d", &numSequences, 
&numAlignmentSites)!=2 ) {
                        fprintf(stderr, "Unable to read parameters from 
standard input\n");
-                       exit(0);
+                       exit(2);
                }
+
                hasAlignment=1;
-       }
                
+//             fprintf(stderr, "%d sequences, %d sites\n", numSequences, 
numAlignmentSites);
+       }               
 }
 
 void AllocateMemory()
@@ -599,56 +613,64 @@ void ReadFile()
                
        n=0;
        do {
-               ch=fgetc(stdin);
-               while ( !feof(stdin) && isspace(ch)) 
-                       ch=fgetc(stdin);
+               ch=fgetc(tree_fv);
+               while ( !feof(tree_fv) && isspace(ch)) {
+                       ch=fgetc(tree_fv);
+               }
                        
-               if ( feof(stdin) ) {
+               if ( feof(tree_fv) ) {
                        fprintf(stderr, "Unexpected end of file on standard 
input\n"); 
-                       exit(0);
+                       exit(2);
                }
-       
+                       
                i=0;
-               while ( i<MAX_NAME_LEN && !feof(stdin) && !isspace(ch) ) {
+               while ( i<MAX_NAME_LEN && !feof(tree_fv) && !isspace(ch) ) {
                        names[n][i]=ch;
-                       ch=fgetc(stdin);
+                       ch=fgetc(tree_fv);
                        i++;
                }
                names[n][i]='\0';
                if (i==0) {
                        fprintf(stderr, "Name missing for species %d\n", n+1);
-                       exit(0);
+                       exit(2);
+               }
+               while (!feof(tree_fv) && isspace(ch)) {
+                       ch=fgetc(tree_fv);
                }
-               while (!feof(stdin) && isspace(ch))
-                       ch=fgetc(stdin);
                
-               if ( feof(stdin) ) {
+               if ( feof(tree_fv) ) {
                        fprintf(stderr, "Unexpected end of file on standard 
input\n");
-                       exit(0);
+                       exit(2);
                }
                
                b=0;
-               while ( !feof(stdin) && b<numAlignmentSites) {
+               while ( !feof(tree_fv) && b<numAlignmentSites) {
                        if ( !isspace(ch) ) {
                                sequences[n][b]=ch;
                                b++;
                        }
-                       ch=toupper(fgetc(stdin));
+                       ch=toupper(fgetc(tree_fv));
                }
-               
+
                if ( b<numAlignmentSites ) {
                        fprintf(stderr, "Unexpected end of file on standard 
input\n");
-                       exit(0);
+                       exit(2);
                }
                
-               /*fprintf(stderr, "%d: %s, bases read: %d\n", n+1, names[n], 
b);*/
+//             fprintf(stderr, "%d: %s, bases read: %d, %s\n", n+1, names[n], 
b, sequences[n]); 
+
                n++;
                
-               if ( n<numSequences && feof(stdin) ) {
+               if ( n<numSequences && feof(tree_fv) ) {
                        fprintf(stderr, "Too few sequences in input file\n");
-                       exit(0);
+                       exit(2);
                }
        } while ( n<numSequences );
+       
+       while (!feof(tree_fv) && isspace(ch)) {
+               ch=fgetc(tree_fv);
+       }
+       ungetc(ch, tree_fv);
 }
 
 int OpenTreeFile()
@@ -659,7 +681,7 @@ int OpenTreeFile()
        if (treeFile) {
                if ( (tree_fv=fopen(treeFileName, "rt"))==NULL ) {
                        fprintf(stderr, "Error opening tree file: '%s'\n", 
treeFileName);
-                       exit(0);
+                       exit(3);
                }
                n=CountTrees(tree_fv);
        } else {
@@ -668,7 +690,7 @@ int OpenTreeFile()
                        fgets(st, 255, stdin);
                        if ( sscanf(st, " %d ", &n)!=1 ) {
                                fprintf(stderr, "Tree is missing from end of 
sequence file\n");
-                               exit(0);
+                               exit(3);
                        }
                } else
                        n=CountTrees(stdin);
@@ -693,7 +715,7 @@ int main(int argc, char **argv)
 
        if (rateHetero == CodonRates && invariableSites) {
                fprintf(stderr, "Invariable sites model cannot be used with 
codon rate heterogeneity.\n");
-               exit(0);
+               exit(4);
        }
 
        if (writeAncestors && fileFormat == NEXUSFormat) {
@@ -702,7 +724,7 @@ int main(int argc, char **argv)
 
        if (writeAncestors && maxPartitions > 1) {
                fprintf(stderr, "Writing ancestral sequences can only be used 
for a single partition.\n");
-               exit(0);
+               exit(4);
        }
                        
        if (!userSeed)
@@ -713,19 +735,22 @@ int main(int argc, char **argv)
        if (!quiet)
                PrintTitle();
        
-       if (!treeFile) {
+       numTrees = OpenTreeFile();
+
+       /* if (!treeFile) { */
                ReadFileParams();
-       }
-       
+       /*} */
+
+
        if ((ancestorSeq>0 && !hasAlignment) || ancestorSeq>numSequences) {
-               fprintf(stderr, "Bad ancestral sequence number\n");
-               exit(0);
+               fprintf(stderr, "Bad ancestral sequence number: %d (%d 
sequences loaded)\n", ancestorSeq, numSequences);
+               exit(4);
        }
        
        if (textFile) {
                if ( (text_fv=fopen(textFileName, "rt"))==NULL ) {
                        fprintf(stderr, "Error opening text file for insertion 
into output: '%s'\n", textFileName);
-                       exit(0);
+                       exit(4);
                }
        }
 
@@ -739,8 +764,8 @@ int main(int argc, char **argv)
                        
                if (ancestorSeq>0) {
                        if (numSites!=numAlignmentSites) {
-                               fprintf(stderr, "Ancestral sequence is of a 
different length to the simulated sequences\n");
-                               exit(0);
+                               fprintf(stderr, "Ancestral sequence is of a 
different length to the simulated sequences (%d)\n", numAlignmentSites);
+                               exit(4);
                        }
                        ancestor=sequences[ancestorSeq-1];
                }
@@ -755,30 +780,28 @@ int main(int argc, char **argv)
        treeSet = (TTree **)malloc(sizeof(TTree **) * maxPartitions);
        if (treeSet==NULL) {
                fprintf(stderr, "Out of memory\n");
-               exit(0);
+               exit(5);
        }
        
        partitionLengths = (int *)malloc(sizeof(int) * maxPartitions);
        if (partitionLengths==NULL) {
                fprintf(stderr, "Out of memory\n");
-               exit(0);
+               exit(5);
        }
        
        partitionRates = (double *)malloc(sizeof(double) * maxPartitions);
        if (partitionRates==NULL) {
                fprintf(stderr, "Out of memory\n");
-               exit(0);
+               exit(5);
        }
        
        for (i = 0; i < maxPartitions; i++) {
                if ((treeSet[i]=NewTree())==NULL) {
                        fprintf(stderr, "Out of memory\n");
-                       exit(0);
+                       exit(5);
                }
        }
-                       
-       numTrees = OpenTreeFile();
-               
+                                       
        CreateRates();
        
        treeNo=0;
@@ -800,7 +823,7 @@ int main(int argc, char **argv)
                        }
                } else if (treeSet[0]->numTips != numTaxa) {
                        fprintf(stderr, "All trees must have the same number of 
tips.\n");
-                       exit(0);
+                       exit(4);
                }
                
                if (maxPartitions == 1) {
@@ -817,7 +840,7 @@ int main(int argc, char **argv)
                        if (!IsTreeAvail(tree_fv)) {
                                fprintf(stderr, "\nA set of trees number %d had 
less partition length (%d) than\n", treeNo + 1, sumLength);
                                fprintf(stderr, "was required to make a 
sequence of length %d.\n", numSites);
-                               exit(0);
+                               exit(4);
                        }
                                
                        ReadTree(tree_fv, treeSet[i], treeNo+1, 
treeSet[0]->numTips, treeSet[0]->names, 
@@ -825,7 +848,7 @@ int main(int argc, char **argv)
                                                
                        if (treeSet[i]->numTips != numTaxa) {
                                fprintf(stderr, "All trees must have the same 
number of tips.\n");
-                               exit(0);
+                               exit(4);
                        }
                        
                        sumLength += partitionLengths[i];
@@ -840,7 +863,7 @@ int main(int argc, char **argv)
                if (sumLength != numSites) {
                        fprintf(stderr, "The sum of the partition lengths in 
the treefile does not equal\n");
                        fprintf(stderr, "the specified number of sites.\n");
-                       exit(0);
+                       exit(4);
                }
                        
                for (i = 0; i < numPartitions; i++)
@@ -871,7 +894,7 @@ int main(int argc, char **argv)
                                if (scaleTrees) { 
                                        if (!treeSet[j]->rooted) {
                                                fprintf(stderr, "To scale tree 
length, they must be rooted and ultrametric.\n");
-                                               exit(0);
+                                               exit(4);
                                        }
                                        scale *= 
treeScale/treeSet[j]->totalLength;
                                } else if (scaleBranches)
diff --git a/source/tree.h b/source/tree.h
index e1c564e..ca16b78 100755
--- a/source/tree.h
+++ b/source/tree.h
@@ -1,8 +1,8 @@
 /*  Header file to define tree and node structures         */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/treefile.c b/source/treefile.c
index e42b597..fbd33fc 100755
--- a/source/treefile.c
+++ b/source/treefile.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
@@ -386,7 +386,7 @@ TNode *ReadNode(FILE *fv, TTree *tree, int numNames, char 
**names, int detectPol
                fprintf(stderr, "This tree contains nodes which aren't 
bifurcations. Resolve the node\n");
                fprintf(stderr, "with zero branch lengths to obtain correct 
results. This can be done\n");
                fprintf(stderr, "with a program called TreeEdit: 
http://evolve.zoo.ox.ac.uk/software/TreeEdit\n";);
-               exit(0);
+               exit(4);
        }
 
        if (feof(fv)) {
@@ -475,7 +475,7 @@ void ReadTree(FILE *fv, TTree *tree, int treeNum, int 
numNames, char **names,
        if (ch == '[') {
                if (fscanf(fv, "%d", outNumSites)!=1) {
                        sprintf(treeErrorMsg, "Unable to read partition 
length");
-                       exit(0);
+                       exit(4);
                }
 
                ch=fgetc(fv);
@@ -485,7 +485,7 @@ void ReadTree(FILE *fv, TTree *tree, int treeNum, int 
numNames, char **names,
                if (ch == ',') {
                        if (fscanf(fv, "%lf", outRelRate)!=1) {
                                sprintf(treeErrorMsg, "Unable to read partition 
relative rate");
-                               exit(0);
+                               exit(4);
                        }
 
                        ch=fgetc(fv);
@@ -496,7 +496,7 @@ void ReadTree(FILE *fv, TTree *tree, int treeNum, int 
numNames, char **names,
        
        if (ch!='(' || (tree->root=ReadNode(fv, tree, numNames, names, 
0))==NULL) {
                fprintf(stderr, "Error reading tree number %d: %s.\n", treeNum, 
treeErrorMsg);
-               exit(0);
+               exit(4);
        }
        
        ch=fgetc(fv);
@@ -507,7 +507,7 @@ void ReadTree(FILE *fv, TTree *tree, int treeNum, int 
numNames, char **names,
                tree->rooted=0;
                if ((tree->root->branch0=ReadBranch(fv, tree, numNames, 
names))==NULL) {
                        fprintf(stderr, "Error reading tree number %d: %s.\n", 
treeNum, treeErrorMsg);
-                       exit(0);
+                       exit(4);
                }
                tree->root->branch0->branch0=tree->root;
                tree->root->length0=tree->root->branch0->length0;
diff --git a/source/treefile.h b/source/treefile.h
index 1e02fa4..81ca52f 100755
--- a/source/treefile.h
+++ b/source/treefile.h
@@ -1,8 +1,8 @@
 /*  Header file for treefile.c                             */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 
diff --git a/source/twister.c b/source/twister.c
index 07e90ca..38dbbd6 100755
--- a/source/twister.c
+++ b/source/twister.c
@@ -1,6 +1,6 @@
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
        
    The code in this file is covered by the license and copyright message
diff --git a/source/twister.h b/source/twister.h
index 1e544b4..446db90 100755
--- a/source/twister.h
+++ b/source/twister.h
@@ -1,8 +1,8 @@
 /*  Header file for twister.c                             */
 
 /*  
-   Sequence Generator - seq-gen, version 1.3.3
-   Copyright (c)1996-2011, Andrew Rambaut & Nick Grassly
+   Sequence Generator - seq-gen, version 1.3.4
+   Copyright (c)1996-2017, Andrew Rambaut & Nick Grassly
    Institute of Evolutionary Biology, University of Edinburgh                  
    All rights reserved.                          
 

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/debian-med/seq-gen.git

_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to