示例#1
0
// Entry point for variant classification
bool AlleleIdentity::getVariantType(
  const string _altAllele,
  const LocalReferenceContext &reference_context,
  const TIonMotifSet & ErrorMotifs,
  const ClassifyFilters &filter_variant,
  const ReferenceReader &ref_reader,
  int chr_idx) {

  altAllele = _altAllele;
  bool is_ok = reference_context.context_detected;

  if ((reference_context.position0 + (long)altAllele.length()) > ref_reader.chr_size(chr_idx)) {
    is_ok = false;
  }

  // We should now be guaranteed a valid variant position in here
  if (is_ok) {
    is_ok = CharacterizeVariantStatus(reference_context, ref_reader, chr_idx);
    PredictSequenceMotifSSE(reference_context, ErrorMotifs, ref_reader, chr_idx);
  }
  is_ok = is_ok and CheckValidAltAllele(reference_context);

  if (!is_ok) {
    status.isProblematicAllele = true;
    filterReasons.push_back("BADCANDIDATE");
  }

  return(is_ok);
}
示例#2
0
// Entry point for variant classification
bool AlleleIdentity::getVariantType(
  string _altAllele,
  LocalReferenceContext &reference_context,
  const string & local_contig_sequence,
  TIonMotifSet & ErrorMotifs,
  ClassifyFilters &filter_variant) {

  altAllele = _altAllele;
  bool is_ok = reference_context.context_detected;

  // We should now be guaranteed a valid variant position in here
  if (is_ok) {
    is_ok = CharacterizeVariantStatus(reference_context, filter_variant.min_hp_for_overcall);

    PredictSequenceMotifSSE(reference_context, local_contig_sequence, ErrorMotifs);

    // Just confusing -> refactor away
    ModifyStartPosForAllele(reference_context.position0 + 1);
  }
  is_ok = is_ok and CheckValidAltAllele(reference_context);

  if (!is_ok) {
    status.isNoCallVariant = true;
    filterReason += ",NOCALLxBADCANDIDATE";
  }

  return(is_ok);
}