Skip to content

Commit

Permalink
Fix problems with -E cis_splice_effects
Browse files Browse the repository at this point in the history
  • Loading branch information
gatoravi committed May 18, 2017
1 parent 7a332b1 commit c3a0c09
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
41 changes: 41 additions & 0 deletions src/variants/variants_annotator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,22 @@ void VariantsAnnotator::set_variant_cis_effect_limits_ps(const vector<BED>& exon
return;
}

//Set limits on + strand for exonic/intronic case
inline
void VariantsAnnotator::set_variant_cis_effect_limits_exonic_intronic_ps(const vector<BED>& exons,
AnnotatedVariant& variant) {
variant.cis_effect_start = exons[0].start;
variant.cis_effect_end = exons[exons.size() - 1].end;
}

//Set limits on - strand for exonic/intronic case
inline
void VariantsAnnotator::set_variant_cis_effect_limits_exonic_intronic_ns(const vector<BED>& exons,
AnnotatedVariant& variant) {
variant.cis_effect_end = exons[0].end;
variant.cis_effect_start = exons[exons.size() - 1].start;
}

//Set limits on - strand
inline
void VariantsAnnotator::set_variant_cis_effect_limits_ns(const vector<BED>& exons,
Expand Down Expand Up @@ -241,6 +257,27 @@ void VariantsAnnotator::set_variant_cis_effect_limits(const vector<BED>& exons,
}
}

//Get the coordinates which limit the effect of this variant.
//The cis-splice-effects command uses these fields to pull out
//junctions which might be related to the presence of this variant.
//This is set to the nearest acceptor and donor of the neigboring
//exons. The calculation will vary according to the strand of this
//transcript.
//This is for exonic/intronic variants - not necessarily in the splice region
inline
void VariantsAnnotator::set_variant_cis_effect_limits_exonic_intronic(const vector<BED>& exons,
AnnotatedVariant& variant) {
string transcript_strand = exons[0].strand;
if(transcript_strand == "+") {
set_variant_cis_effect_limits_exonic_intronic_ps(exons, variant);
return;
}
if(transcript_strand == "-") {
set_variant_cis_effect_limits_exonic_intronic_ns(exons, variant);
return;
}
}

//Overlap splice region in the negative strand
void VariantsAnnotator::get_variant_overlaps_spliceregion_ns(const vector<BED>& exons,
AnnotatedVariant& variant) {
Expand All @@ -258,6 +295,7 @@ void VariantsAnnotator::get_variant_overlaps_spliceregion_ns(const vector<BED>&
variant.score = common::num_to_str(min(variant.end - exons[i].start,
exons[i].end - variant.end));
variant.annotation = "exonic";
set_variant_cis_effect_limits_exonic_intronic(exons, variant);
return;
}
}
Expand All @@ -267,6 +305,7 @@ void VariantsAnnotator::get_variant_overlaps_spliceregion_ns(const vector<BED>&
variant.score = common::num_to_str(min(variant.end - exons[i+1].end,
exons[i].start - variant.end));
variant.annotation = "intronic";
set_variant_cis_effect_limits_exonic_intronic(exons, variant);
return;
}
}
Expand Down Expand Up @@ -341,6 +380,7 @@ void VariantsAnnotator::get_variant_overlaps_spliceregion_ps(const vector<BED>&
variant.score = common::num_to_str(min(variant.end - exons[i].start,
exons[i].end - variant.end));
variant.annotation = "exonic";
set_variant_cis_effect_limits_exonic_intronic(exons, variant);
return;
}
}
Expand All @@ -351,6 +391,7 @@ void VariantsAnnotator::get_variant_overlaps_spliceregion_ps(const vector<BED>&
variant.score = common::num_to_str(min(variant.end - exons[i].end,
exons[i+1].start - variant.end));
variant.annotation = "intronic";
set_variant_cis_effect_limits_exonic_intronic(exons, variant);
return;
}
}
Expand Down
9 changes: 9 additions & 0 deletions src/variants/variants_annotator.h
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,15 @@ class VariantsAnnotator {
void set_variant_cis_effect_limits_ps(const vector<BED>& exons,
AnnotatedVariant& variant1,
uint32_t i);
//Cis limits for exonic/intronic case - figure out strand here
void set_variant_cis_effect_limits_exonic_intronic(const vector<BED>& exons,
AnnotatedVariant& variant);
//Cis limits for exonic/intronic case - negative strand
void set_variant_cis_effect_limits_exonic_intronic_ns(const vector<BED>& exons,
AnnotatedVariant& variant);
//Cis limits for exonic/intronic case - positive strand
void set_variant_cis_effect_limits_exonic_intronic_ps(const vector<BED>& exons,
AnnotatedVariant& variant);
};

inline string variant_set_to_string(const set<AnnotatedVariant> &av1) {
Expand Down

0 comments on commit c3a0c09

Please sign in to comment.