1 // $Id: gc_types.h,v 1.29 2011/12/30 22:50:10 jmcgill Exp $
2 
3 /*
4   Copyright 2002  Mary Kuhner, Jon Yamato, and Joseph Felsenstein
5 
6   This software is distributed free of charge for non-commercial use
7   and is copyrighted.  Of course, we do not guarantee that the software
8   works, and are not responsible for any damage you may cause or have.
9 */
10 
11 #ifndef GC_TYPES_H
12 #define GC_TYPES_H
13 
14 #include <map>
15 #include <list>
16 #include <set>
17 #include <string>
18 #include "Converter_types.h"
19 
20 enum GCFileFormat
21 {
22     // should include each type of file converter can read
23     format_NONE_SET,
24     format_PHYLIP,
25     format_MIGRATE
26 };
27 
28 enum gcSpecificDataType
29 {
30     //  data types as used in lamarc
31     sdatatype_NONE_SET,
32     sdatatype_DNA,
33     sdatatype_SNP,
34     sdatatype_KALLELE,
35     sdatatype_MICROSAT
36 };
37 
38 class gcGeneralDataType : public std::set<gcSpecificDataType>
39 {
40   public:
41     gcGeneralDataType();
42     virtual ~gcGeneralDataType();
43     bool HasAllelic() const;
44     bool HasNucleic() const;
45     bool CompatibleWith(const gcGeneralDataType&) const;
46     void Disallow(const gcSpecificDataType);
47     void Intersect(const gcGeneralDataType&);
48     void Union(const gcGeneralDataType&);
49     void Union(const gcSpecificDataType);
50     gcGeneralDataType & operator=(const gcSpecificDataType);
51 };
52 
53 enum GCInterleaving
54 {
55     // are data sequences presented all at once or for interleaved comparison
56     interleaving_NONE_SET,
57     interleaving_SEQUENTIAL,
58     interleaving_INTERLEAVED,
59     interleaving_MOOT
60 };
61 
62 enum gcPhaseSource
63 {
64     phaseSource_NONE_SET,
65     phaseSource_PHASE_FILE,
66     phaseSource_MULTI_PHASE_SAMPLE,
67     phaseSource_FILE_ADJACENCY,
68     phaseSource_COUNT
69 };
70 
71 enum loc_match
72 {
73     locmatch_DEFAULT,
74     locmatch_SINGLE,
75     locmatch_LINKED,
76     locmatch_VECTOR
77 };
78 
79 enum pop_match
80 {
81     popmatch_DEFAULT,
82     popmatch_NAME,
83     popmatch_SINGLE,
84     popmatch_VECTOR
85 };
86 
87 enum matrix_type
88 {
89     matrixtype_MIGRATION,
90     matrixtype_DIVERGENCE
91 };
92 
93 enum matrix_cell_type
94 {
95     matrixcelltype_EMPTY,
96     matrixcelltype_INVALID,
97     matrixcelltype_CORNER,
98     matrixcelltype_LABEL,
99     matrixcelltype_VALUE
100 };
101 
102 enum matrix_cell_source
103 {
104     matrixcellsource_NONE,
105     matrixcellsource_POP,
106     matrixcellsource_PARENT
107 };
108 
109 enum migration_method
110 {
111     migmethod_USER,
112     migmethod_FST
113 };
114 
115 enum migration_profile
116 {
117     migprofile_NONE,
118     migprofile_FIXED,
119     migprofile_PERCENTILE
120 };
121 
122 enum migration_constraint
123 {
124     migconstraint_INVALID,
125     migconstraint_CONSTANT,
126     migconstraint_SYMMETRIC,
127     migconstraint_UNCONSTRAINED
128 };
129 
130 #endif  // GC_TYPES_H
131 
132 //____________________________________________________________________________________
133