/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.nbio.ronn;
import org.biojava.nbio.core.exceptions.CompoundNotFoundException;
import org.biojava.nbio.core.sequence.DNASequence;
import org.biojava.nbio.core.sequence.ProteinSequence;
import org.biojava.nbio.core.sequence.RNASequence;
import org.biojava.nbio.data.sequence.FastaSequence;
import org.biojava.nbio.ronn.Jronn.Range;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
public class JronnTest {
// Implemented with two platform checks.
public void verifyRanges() {
Range[] ranges = Jronn.getDisorder(new FastaSequence("name", "LLRGRHLMNGTMIMRPWNFLNDHHFPKFFPHLIEQQAIWLADWWRKKHC" +
"RPLPTRAPTMDQWDHFALIQKHWTANLWFLTFPFNDKWGWIWFLKDWTPGSADQAQRACTWFFCHGHDTN" +
"CQIIFEGRNAPERADPMWTGGLNKHIIARGHFFQSNKFHFLERKFCEMAEIERPNFTCRTLDCQKFPWDDP" +
"CSSTHSDCPKLEDLISFTETHGCSAADNADRPSQACHIGWAAMCEPTAMFMLMGSRCRCSFWPQNNAARHR" +
"NFLIQIEMHSHLEHWIQTLHPQRPFLCNTWDDNWPICQFASQARGNSPDHHP"));
assertEquals(4, ranges.length);
assertEquals(53, ranges[0].from);
assertEquals(59, ranges[0].to);
assertEquals(190, ranges[1].from);
assertEquals(196, ranges[1].to);
assertEquals(210, ranges[2].from);
assertEquals(226, ranges[2].to);
assertEquals(305, ranges[3].from);
assertEquals(313, ranges[3].to);
//System.out.println(Arrays.toString(ranges));
}
/**
* Jronn was breaking on Windows platform due to the different System.getProperty("line.separator") values
* (CRLF vs LF). This wraps the existing unit testing to show that it works on windows or unix.
*/
@Test
public void checkJronn() {
// Windows CRLF
ScopedProperty lineSepProp = new ScopedProperty("line.separator", "\r\n");
verifyRanges();
lineSepProp.close();
// UNIX LF
ScopedProperty lineSepPropUnix = new ScopedProperty("line.separator", "\n");
verifyRanges();
lineSepPropUnix.close();
}
/**
* A scoped property helper class to check with Windows style CRLF.
* Credit Thomas Klambauer, but here have removed the implement of
* AutoCloseable (Java 7) for BioJava support of Java 6.
*/
public class ScopedProperty {
private final String key;
private final String oldValue;
/**
*
* @param key The System.setProperty key
* @param value The System.setProperty value to switch to.
*/
public ScopedProperty(final String key, final String value) {
this.key = key;
oldValue = System.setProperty(key, value);
}
public void close() {
// Can't use setProperty(key, null) -> Throws NullPointerException.
if( oldValue == null ) {
// Previously there was no entry.
System.clearProperty(key);
} else {
System.setProperty(key, oldValue);
}
}
}
/** Test the user scenario when disorder scores are calculated over a sequence containing the selenocysteine (Sec) amino acid.
* The user has to manually convert the stop codons symbols ("*") to the "U" symbol and Jronn is expected to handle this sequence.
*
* @throws CompoundNotFoundException
*/
@Test
public void testStopCodons() throws CompoundNotFoundException {
// gene: DIO2, NM_001007023
String dnaString = "ATGGGCATCCTCAGCGTAGACTTGCTGATCACACTGCAAATTCTGCCAGTTTTTTTCTCCAACTGCCTCT" +
"TCCTGGCTCTCTATGACTCGGTCATTCTGCTCAAGCACGTGGTGCTGCTGTTGAGCCGCTCCAAGTCCAC" +
"TCGCGGAGAGTGGCGGCGCATGCTGACCTCAGAGGGACTGCGCTGCGTCTGGAAGAGCTTCCTCCTCGAT" +
"GCCTACAAACAGCTAAATTGTCCTCCATCAGGTTTTAGCAAAGATGGACACATTTTATGACTAGTATATG" +
"AAGCTTATAAAAGCAGACTACTGGTCTACTCACATTTGGATTTATGGATGGTGAAATTGGGTGAGGATGC" +
"CCCCAATTCCAGTGTGGTGCATGTCTCCAGTACAGAAGGAGGTGACAACAGTGGCAATGGTACCCAGGAG" +
"AAGATAGCTGAGGGAGCCACATGCCACCTTCTTGACTTTGCCAGCCCTGAGCGCCCACTAGTGGTCAACT" +
"TTGGCTCAGCCACTTGACCTCCTTTCACGAGCCAGCTGCCAGCCTTCCGCAAACTGGTGGAAGAGTTCTC" +
"CTCAGTGGCTGACTTCCTGCTGGTCTACATTGATGAGGCTCATCCATCAGATGGCTGGGCGATACCGGGG" +
"GACTCCTCTTTGTCTTTTGAGGTGAAGAAGCACCAGAACCAGGAAGATCGATGTGCAGCAGCCCAGCAGC" +
"TTCTGGAGCGTTTCTCCTTGCCGCCCCAGTGCCGAGTTGTGGCTGACCGCATGGACAATAACGCCAACAT" +
"AGCTTACGGGGTAGCCTTTGAACGTGTGTGCATTGTGCAGAGACAGAAAATTGCTTATCTGGGAGGAAAG" +
"GGCCCCTTCTCCTACAACCTTCAAGAAGTCCGGCATTGGCTGGAGAAGAATTTCAGCAAGAGATGAAAGA" +
"AAACTAGATTAGCTGGTTAA";
DNASequence dnaSequence = new DNASequence(dnaString);
RNASequence mRNA = dnaSequence.getRNASequence();
ProteinSequence protein = mRNA.getProteinSequence();
String proteinString = protein.getSequenceAsString();
// replace the symbol * (codon TGA) with U at amino acid
String proteinStringU = proteinString.replaceAll("\\*", "u");
FastaSequence fsequence = new FastaSequence("", proteinStringU);
try {
float[] rawProbabilityScores = Jronn.getDisorderScores(fsequence);
}
catch (Exception e) {
fail("Disorder scores calculation doesn't work");
}
}
}