1 /* $Id: samflags.h 214301 2018-03-19 23:36:38Z twu $ */
2 #ifndef SAMFLAGS_INCLUDED
3 #define SAMFLAGS_INCLUDED
4 
5 #define PAIRED_READ        0x0001 /* 1 */
6 #define PAIRED_MAPPING     0x0002 /* 2 */
7 #define QUERY_UNMAPPED     0x0004 /* 4 */
8 #define MATE_UNMAPPED      0x0008 /* 8 */
9 #define QUERY_MINUSP       0x0010 /* 16 */
10 #define MATE_MINUSP        0x0020 /* 32 */
11 #define FIRST_READ_P       0x0040 /* 64 */
12 #define SECOND_READ_P      0x0080 /* 128 */
13 #define NOT_PRIMARY        0x0100 /* 256 */
14 #define BAD_READ_QUALITY   0x0200 /* 512 */
15 #define DUPLICATE_READ     0x0400 /* 1024 */
16 #define SUPPLEMENTARY      0x0800 /* 2048 */
17 
18 
19 /* 83 = first read, minus strand for paired */
20 /* 99 = first read, plus strand for paired */
21 /* 147 = second read, minus strand for paired */
22 /* 163 = second read, plus strand for paired */
23 
24 /* For forcing a read to be primary */
25 #define SET_PRIMARY        0xFEFF /* do a logical-and (&) with this */
26 
27 
28 /* XO tag for output type */
29 #define ABBREV_NOMAPPING_1 "NM"
30 #define ABBREV_NOMAPPING_2 "NM"
31 
32 #define ABBREV_UNPAIRED_UNIQ "UU"
33 #define ABBREV_UNPAIRED_TRANSLOC "UT"
34 #define ABBREV_UNPAIRED_MULT "UM"
35 
36 #define ABBREV_UNPAIRED_CIRCULAR "UC"
37 #define ABBREV_UNPAIRED_MULT_XS "UX"
38 
39 
40 #define ABBREV_HALFMAPPING_UNIQ "HU"
41 #define ABBREV_HALFMAPPING_TRANSLOC "HT"
42 #define ABBREV_HALFMAPPING_MULT "HM"
43 
44 #define ABBREV_PAIRED_UNIQ_INV "PI"
45 #define ABBREV_PAIRED_UNIQ_SCR "PS"
46 #define ABBREV_PAIRED_UNIQ_LONG "PL"
47 #define ABBREV_PAIRED_MULT "PM"
48 
49 #define ABBREV_CONCORDANT_UNIQ "CU"
50 #define ABBREV_CONCORDANT_TRANSLOC "CT"
51 #define ABBREV_CONCORDANT_MULT "CM"
52 
53 #define ABBREV_HALFMAPPING_CIRCULAR "HC"
54 #define ABBREV_PAIRED_UNIQ_CIRCULAR "PC"
55 #define ABBREV_CONCORDANT_CIRCULAR "CC"
56 
57 #define ABBREV_HALFMAPPING_MULT_XS "HX"
58 #define ABBREV_PAIRED_MULT_XS "PX"
59 #define ABBREV_CONCORDANT_MULT_XS "CX"
60 
61 
62 typedef enum {OUTPUT_FILE,	/* 0: specified by the --output-file option */
63 
64 	      OUTPUT_NONE,	/* 1: used when omit_concordant_uniq_p or omit_concordant_mult_p is set */
65 
66 	      OUTPUT_NM,	/* 2: nomapping */
67 
68 	      OUTPUT_UU,	/* 3: unpaired_uniq */
69 	      OUTPUT_UT,	/* 4: unpaired_transloc */
70 	      OUTPUT_UM,	/* 5: unpaired_mult (N_SPLIT_OUTPUTS_SINGLE_STD) */
71 
72 	      OUTPUT_UC,	/* 6: unpaired_circular (N_SPLIT_OUTPUTS_SINGLE_TOCIRC) */
73 	      OUTPUT_UX,	/* 7: unpaired_mult_xs (N_SPLIT_OUTPUTS_SINGLE) */
74 
75 
76 	      OUTPUT_HU,	/* 8: halfmapping_uniq */
77 	      OUTPUT_HT,	/* 9: halfmapping_transloc */
78 	      OUTPUT_HM,	/* 10: halfmapping_mult */
79 
80 	      OUTPUT_PI,	/* 11: paired_uniq_inv */
81 	      OUTPUT_PS,	/* 12: paired_uniq_scr */
82 	      OUTPUT_PL,	/* 13: paired_uniq_long */
83 	      OUTPUT_PM,	/* 14: paired_mult */
84 	      OUTPUT_CU,	/* 15: concordant_uniq */
85 	      OUTPUT_CT,	/* 16: concordant_transloc */
86 	      OUTPUT_CM,	/* 17: concordant_mult (N_SPLIT_OUTPUTS_STD) */
87 
88 	      OUTPUT_HC,	/* 18: halfmapping_circular */
89 	      OUTPUT_PC,	/* 19: paired_uniq_circular */
90 	      OUTPUT_CC,	/* 20: concordant_circular (N_SPLIT_OUTPUTS_TOCIRC) */
91 
92 	      OUTPUT_HX,	/* 21: halfmapping_mult_xs */
93 	      OUTPUT_PX,	/* 22: paired_mult_xs */
94 	      OUTPUT_CX}	/* 23: concordant_mult_xs (N_SPLIT_OUTPUTS) */
95   SAM_split_output_type;
96 
97 /* output 0 is stdout */
98 /* Code checks for split_output = 1 to N_SPLIT_OUTPUTS inclusive */
99 #define N_SPLIT_OUTPUTS_SINGLE_STD 5
100 #define N_SPLIT_OUTPUTS_SINGLE_TOCIRC 6
101 #define N_SPLIT_OUTPUTS_SINGLE 7
102 
103 #define N_SPLIT_OUTPUTS_STD 17
104 #define N_SPLIT_OUTPUTS_TOCIRC 20
105 #define N_SPLIT_OUTPUTS 23
106 
107 
108 
109 
110 /* GSNAP outputs */
111 #if 0
112   FILE *fp_nomapping;		/* NM */
113 
114   FILE *fp_unpaired_uniq;	 /* UU */
115   FILE *fp_unpaired_transloc;	 /* UT */
116   FILE *fp_unpaired_mult;	 /* UM */
117 
118   FILE *fp_unpaired_circular;	 /* UC */
119   FILE *fp_unpaired_mult_xs_1;	 /* UX */
120   FILE *fp_unpaired_mult_xs_2;	 /* UX */
121 
122   FILE *fp_halfmapping_uniq;	/* HU */
123   FILE *fp_halfmapping_transloc; /* HT */
124   FILE *fp_halfmapping_mult;	 /* HM */
125 
126   FILE *fp_paired_uniq_inv;	 /* PI */
127   FILE *fp_paired_uniq_scr;	 /* PS */
128   FILE *fp_paired_uniq_long;	 /* PL */
129   FILE *fp_paired_mult;		 /* PM */
130 
131   FILE *fp_concordant_uniq;	 /* CU */
132   FILE *fp_concordant_transloc;	 /* CT */
133   FILE *fp_concordant_mult;	 /* CM */
134 
135   FILE *fp_halfmapping_circular; /* HC */
136   FILE *fp_paired_uniq_circular; /* PC */
137   FILE *fp_concordant_circular;	 /* CC */
138 
139   FILE *fp_halfmapping_mult_xs_1; /* HX */
140   FILE *fp_halfmapping_mult_xs_2; /* HX */
141   FILE *fp_paired_mult_xs_1;	 /* PX */
142   FILE *fp_paired_mult_xs_2;	 /* PX */
143   FILE *fp_concordant_mult_xs_1; /* CX */
144   FILE *fp_concordant_mult_xs_2; /* CX */
145 #endif
146 
147 /* GMAP outputs */
148 #if 0
149   FILE *fp_nomapping;		/* NM */
150 
151   FILE *fp_uniq;		/* UU */
152   FILE *fp_transloc;		/* UT */
153   FILE *fp_mult;		/* UM */
154 
155   FILE *fp_circular;		/* UC */
156   FILE *fp_mult_xs;		/* UX */
157 #endif
158 
159 
160 #endif
161 
162