a2a29ed4 |
#include <stdlib.h>
|
b22faf0d |
#include <gstruct/bool.h>
#include <gstruct/iit-read.h>
#include <gstruct/genome.h>
#include <gstruct/genomicpos.h>
#include <gstruct/bamread.h>
#include <gstruct/bamtally.h>
#include "gmapR.h"
|
3f899953 |
#include "iit.h"
|
86afb162 |
#include "genome.h"
|
b22faf0d |
SEXP
R_Bamtally_iit (SEXP bamreader_R, SEXP genome_dir_R, SEXP db_R,
|
4d5cc806 |
SEXP which_R, SEXP desired_read_group_R,
|
b22faf0d |
SEXP alloclength_R,
SEXP minimum_mapq_R, SEXP good_unique_mapq_R,
SEXP maximum_nhits_R,
SEXP need_concordant_p_R, SEXP need_unique_p_R,
|
86afb162 |
SEXP need_primary_p_R, SEXP ignore_duplicates_p_R,
|
b22faf0d |
SEXP min_depth_R, SEXP variant_strands_R,
SEXP ignore_query_Ns_p_R,
SEXP print_indels_p_R,
SEXP blocksize_R,
|
c78be696 |
SEXP verbosep_R, SEXP max_softclip_R,
|
8418591e |
SEXP genome_iit_file_R,
SEXP print_xs_scores_p_R, SEXP print_cycles_p_R,
|
685d60e3 |
SEXP minimum_quality_score_R, SEXP noncovered_R,
SEXP print_nm_scores_p_R)
|
b22faf0d |
{
Bamreader_T bamreader = (Bamreader_T) R_ExternalPtrAddr(bamreader_R);
const char *genome_dir =
genome_dir_R == R_NilValue ? NULL : CHAR(asChar(genome_dir_R));
const char *db = CHAR(asChar(db_R));
int alloclength = asInteger(alloclength_R);
|
4d5cc806 |
const char *desired_read_group =
desired_read_group_R == R_NilValue ? NULL :
CHAR(asChar(desired_read_group_R));
|
b22faf0d |
int minimum_mapq = asInteger(minimum_mapq_R);
int good_unique_mapq = asInteger(good_unique_mapq_R);
int maximum_nhits = asInteger(maximum_nhits_R);
bool need_concordant_p = asLogical(need_concordant_p_R);
bool need_unique_p = asLogical(need_unique_p_R);
bool need_primary_p = asLogical(need_primary_p_R);
|
86afb162 |
bool ignore_duplicates_p = asLogical(ignore_duplicates_p_R);
|
b22faf0d |
int min_depth = asInteger(min_depth_R);
int variant_strands = asInteger(variant_strands_R);
bool ignore_query_Ns_p = asLogical(ignore_query_Ns_p_R);
bool print_indels_p = asLogical(print_indels_p_R);
int blocksize = asInteger(blocksize_R);
int verbosep = asLogical(verbosep_R);
|
17db5e75 |
int max_softclip = asInteger(max_softclip_R);
|
8418591e |
bool print_xs_scores_p = asLogical(print_xs_scores_p_R);
bool print_cycles_p = asLogical(print_cycles_p_R);
int minimum_quality_score = asInteger(minimum_quality_score_R);
bool noncovered_p = asLogical(noncovered_R);
|
685d60e3 |
bool print_nm_scores_p = asLogical(print_nm_scores_p_R);
|
86afb162 |
Genome_T genome = createGenome(genome_dir, db);
IIT_T chromosome_iit = readChromosomeIIT(genome_dir, db);
|
8418591e |
IIT_T map_iit = genome_iit_file_R == R_NilValue ? NULL :
IIT_read((char*)CHAR(asChar(genome_iit_file_R)), /*name*/ NULL,
/*readonlyp*/true, /*divread*/READ_ALL, /*divstring*/NULL,
/*add_iit_p*/false, /*labels_read_p*/true);
|
b22faf0d |
const char *chr = NULL;
Genomicpos_T start = 0;
Genomicpos_T end = 0;
if (which_R != R_NilValue) {
chr = CHAR(asChar(VECTOR_ELT(which_R, 0)));
start = asInteger(VECTOR_ELT(which_R, 1));
end = asInteger(VECTOR_ELT(which_R, 2));
}
|
4d5cc806 |
IIT_T tally_iit = Bamtally_iit(bamreader, (char *)chr,
/* TODO: bam_lacks_chr */ NULL,
start, end,
|
c78be696 |
genome,
|
8418591e |
chromosome_iit,
map_iit,
alloclength,
(char *)desired_read_group,
|
4d5cc806 |
minimum_mapq, good_unique_mapq,
|
8418591e |
minimum_quality_score,
|
b22faf0d |
maximum_nhits, need_concordant_p,
need_unique_p, need_primary_p,
|
86afb162 |
ignore_duplicates_p,
|
b22faf0d |
min_depth, variant_strands, ignore_query_Ns_p,
|
3a231c30 |
print_indels_p, blocksize, verbosep,
|
f5e63d36 |
/*readlevel_p*/false, max_softclip,
|
8418591e |
print_cycles_p,
|
685d60e3 |
print_nm_scores_p,
|
8418591e |
print_xs_scores_p, noncovered_p);
|
b22faf0d |
IIT_free(&chromosome_iit);
Genome_free(&genome);
|
cfb01d1f |
if(map_iit != NULL)
IIT_free(&map_iit);
|
b22faf0d |
if (tally_iit == NULL) {
error("Could not create tally\n");
}
|
3f899953 |
return R_IIT_new(tally_iit);
|
b22faf0d |
}
|