{
String lastCodon = String.valueOf(cdnaSeqChars,
cdnaLength - CODON_LENGTH, CODON_LENGTH).toUpperCase();
- for (String stop : ResidueProperties.STOP)
+ for (String stop : ResidueProperties.STOP_CODONS)
{
if (lastCodon.equals(stop))
{
* allow * in protein to match untranslatable in dna
*/
final char aaRes = aaSeqChars[aaPos];
- if ((translated == null || "STOP".equals(translated)) && aaRes == '*')
+ if ((translated == null || ResidueProperties.STOP.equals(translated))
+ && aaRes == '*')
{
continue;
}
if (dnaPos == cdnaSeqChars.length - CODON_LENGTH)
{
String codon = String.valueOf(cdnaSeqChars, dnaPos, CODON_LENGTH);
- if ("STOP".equals(ResidueProperties.codonTranslate(codon)))
+ if (ResidueProperties.STOP
+ .equals(ResidueProperties.codonTranslate(codon)))
{
return true;
}
{
for (String base : alleles.split(","))
{
- if (!base1.equals(base))
+ if (!base1.equalsIgnoreCase(base))
{
- String codon = base + base2 + base3;
+ String codon = base.toUpperCase() + base2.toLowerCase()
+ + base3.toLowerCase();
+ String canonical = base1.toUpperCase() + base2.toLowerCase()
+ + base3.toLowerCase();
if (addPeptideVariant(peptide, peptidePos, residue, var,
- codon))
+ codon, canonical))
{
count++;
}
{
for (String base : alleles.split(","))
{
- if (!base2.equals(base))
+ if (!base2.equalsIgnoreCase(base))
{
- String codon = base1 + base + base3;
+ String codon = base1.toLowerCase() + base.toUpperCase()
+ + base3.toLowerCase();
+ String canonical = base1.toLowerCase() + base2.toUpperCase()
+ + base3.toLowerCase();
if (addPeptideVariant(peptide, peptidePos, residue, var,
- codon))
+ codon, canonical))
{
count++;
}
{
for (String base : alleles.split(","))
{
- if (!base3.equals(base))
+ if (!base3.equalsIgnoreCase(base))
{
- String codon = base1 + base2 + base;
+ String codon = base1.toLowerCase() + base2.toLowerCase()
+ + base.toUpperCase();
+ String canonical = base1.toLowerCase() + base2.toLowerCase()
+ + base3.toUpperCase();
if (addPeptideVariant(peptide, peptidePos, residue, var,
- codon))
+ codon, canonical))
{
count++;
}
}
/**
- * Helper method that adds a peptide variant feature, provided the given codon
- * translates to a value different to the current residue (is a non-synonymous
- * variant). ID and clinical_significance attributes of the dna variant (if
- * present) are copied to the new feature.
+ * Helper method that adds a peptide variant feature. ID and
+ * clinical_significance attributes of the dna variant (if present) are copied
+ * to the new feature.
*
* @param peptide
* @param peptidePos
* @param residue
* @param var
* @param codon
+ * the variant codon e.g. aCg
+ * @param canonical
+ * the 'normal' codon e.g. aTg
* @return true if a feature was added, else false
*/
static boolean addPeptideVariant(SequenceI peptide, int peptidePos,
- String residue, DnaVariant var, String codon)
+ String residue, DnaVariant var, String codon, String canonical)
{
/*
* get peptide translation of codon e.g. GAT -> D
{
return false;
}
- String desc = codon;
+ String desc = canonical + "/" + codon;
String featureType = "";
if (trans.equals(residue))
{
featureType = SequenceOntologyI.SYNONYMOUS_VARIANT;
}
+ else if (ResidueProperties.STOP.equals(trans))
+ {
+ featureType = SequenceOntologyI.STOP_GAINED;
+ }
else
{
String residue3Char = StringUtils