-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathngsBriggs_cli.cpp
145 lines (134 loc) · 4.83 KB
/
ngsBriggs_cli.cpp
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include "ngsBriggs_cli.h"
int helppage(FILE *fp){
fprintf(fp,"\t-> ./ngsBriggs -bam -tab -ref -len -ibam -iref -obam -otab -oinf -olen -model -eps -isrecal -olik -nthreads\n");
fprintf(fp,"\t-> -bam: The bam file for inference;\n");
fprintf(fp,"\t-> -tab: The table file for inference;\n");
fprintf(fp,"\t-> -ref: The reference file for inference;\n");
fprintf(fp,"\t-> -len: The length mass probability distribution file for inference;\n");
fprintf(fp,"\t-> -ibam: The bam file for ancient strand fishing;\n");
fprintf(fp,"\t-> -iref: The reference file for ancient strand fishing;\n");
fprintf(fp,"\t-> -obam: The output bam file name;\n");
fprintf(fp,"\t-> -otab: The output table file name;\n");
fprintf(fp,"\t-> -oinf: The output inferred parameters file name;\n");
fprintf(fp,"\t-> -olen: The output length mass probability distribution file name;\n");
fprintf(fp,"\t-> -model: Specifying the model, either b (the biotin model) or nb (the non-biotin model);\n");
fprintf(fp,"\t-> -eps: The overall modern contamination rate, the value should be within the interval [0,1);\n");
fprintf(fp,"\t-> -isrecal: Choose 1 if recalibration based on length is needed, otherwise 0 (default);\n");
fprintf(fp,"\t-> -olik: The output nucleotide likelihood file;\n");
fprintf(fp,"\t-> -nthreads: Choose the number of threads to speed up the recalibration process.\n");
fprintf(fp,"\t-> -bdamage: The mismatch matrix in bdamage format for metagenomic framework.\n");
fprintf(fp,"\t-> -rlens: The read length distributions for metagenomic framework.\n");
fprintf(fp,"\t-> Examples.\n");
fprintf(fp,"\t-> ./ngsbriggs -model nb -bdamage Chr22_024_36_68_0097.bdamage.gz -rlens Chr22_024_36_68_0097.rlens.gz\n");
fprintf(fp,"\t-> ./ngsbriggs -tab mismatch2.txt -len len.txt -model nb\n");
fprintf(fp,"\t-> ./ngsbriggs -bam Chr22_024_36_68_0097.sorted.MD.bam -ref chr22.fa -model nb\n");
exit(1);
return 0;
}
argStruct *pars_briggs(int argc,char ** argv){
argStruct *pars = new argStruct;
pars->hts = NULL;
pars->tab = NULL;
pars->ref = NULL;
pars->len = NULL;
pars->ihts = NULL;
pars->iref = NULL;
pars->ohts = NULL;
pars->otab = NULL;
pars->oinf = NULL;
pars->olen = NULL;
pars->model = 1;
pars->olik = NULL;
pars->eps = 0;
pars->dorecal = 0;
pars->nthread = 1;
pars->bdamage = NULL;
pars->rlens = NULL;
++argv;
while(*argv){
if(strcasecmp("-bam",*argv)==0){
pars->hts=strdup(*(++argv));
}
else if(strcasecmp("-tab",*argv)==0){
pars->tab=strdup(*(++argv));
}
else if(strcasecmp("-ref",*argv)==0){
pars->ref=strdup(*(++argv));
}
else if(strcasecmp("-len",*argv)==0){
pars->len=strdup(*(++argv));
}
else if(strcasecmp("-ibam",*argv)==0){
pars->ihts=strdup(*(++argv));
}
else if(strcasecmp("-iref",*argv)==0){
pars->iref=strdup(*(++argv));
}
else if(strcasecmp("-obam",*argv)==0){
pars->ohts=strdup(*(++argv));
}
else if(strcasecmp("-otab",*argv)==0){
pars->otab=strdup(*(++argv));
}
else if(strcasecmp("-oinf",*argv)==0){
pars->oinf=strdup(*(++argv));
}
else if(strcasecmp("-olen",*argv)==0){
pars->olen=strdup(*(++argv));
}
else if(strcasecmp("-model",*argv)==0){
++argv;
if(strcasecmp(*argv,"b")==0)
pars->model=0;
else if(strcasecmp(*argv,"nb")==0)
pars->model=1;
else{
fprintf(stderr,"\t-> Unknown option: \'%s\'\n",*argv);
exit(0);
}
}
else if(strcasecmp("-olik",*argv)==0){
pars->olik=strdup(*(++argv));
}
else if(strcasecmp("-eps",*argv)==0){
pars->eps=atof(*(++argv));
}
else if(strcasecmp("-isrecal",*argv)==0){
pars->dorecal=atoi(*(++argv));
}
else if(strcasecmp("-nthread",*argv)==0){
pars->nthread=atoi(*(++argv));
}
else if(strcasecmp("-bdamage",*argv)==0){
pars->bdamage=strdup(*(++argv));
}
else if(strcasecmp("-rlens",*argv)==0){
pars->rlens=strdup(*(++argv));
}
else{
fprintf(stderr,"Unrecognized input option %s, see ngsBriggs help page\n\n",*(argv));
return NULL;
}
++argv;
}
return pars;
}
void argStruct_destroy(argStruct *pars){
free(pars->hts);
free(pars->tab);
free(pars->ref);
free(pars->len);
free(pars->ihts);
free(pars->iref);
free(pars->ohts);
free(pars->otab);
free(pars->oinf);
free(pars->olen);
free(pars->olik);
free(pars->bdamage);
free(pars->rlens);
delete(pars);
}