package fr.ens.biologie.genomique.eoulsan.bio.readsfilters; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; import fr.ens.biologie.genomique.eoulsan.EoulsanException; import fr.ens.biologie.genomique.eoulsan.bio.ReadSequence; public class PatternReadFilterTest { @Test public void testAcceptForbiddenReadSequence() throws EoulsanException { ReadFilter filter = new PatternReadFilter(); // test regular expression filter.setParameter("forbidden.regex", "(A.GC){2}"); filter.init(); // Null case assertFalse(filter.accept(null)); // Not illumina id case ReadSequence read = new ReadSequence(0, "read1", "AGGGGGCAAAAAATGCATGCAATCT", "wxy"); assertFalse(filter.accept(read)); assertTrue(filter.accept(new ReadSequence(0, "", "ATGATGC", ""))); assertFalse(filter.accept(new ReadSequence(0, "", "ATGCACGC", ""))); assertFalse(filter.accept(new ReadSequence(0, "", "AAATGCGATGCATGC", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "ATGCCGATGC", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "AGCT", ""))); filter = new PatternReadFilter(); filter.setParameter("forbidden.regex", "A*GC"); filter.init(); // Not illumina id case assertFalse(filter.accept(read)); assertFalse(filter.accept(new ReadSequence(0, "", "AGC", ""))); assertFalse(filter.accept(new ReadSequence(0, "", "AGGGGGC", ""))); filter = new PatternReadFilter(); filter.setParameter("forbidden.regex", "AG+C"); filter.init(); // Not illumina id case assertFalse(filter.accept(read)); assertFalse(filter.accept(new ReadSequence(0, "", "AGGGGGC", ""))); filter = new PatternReadFilter(); filter.setParameter("forbidden.regex", "AT?GC"); filter.init(); // Not illumina id case assertFalse(filter.accept(read)); assertFalse(filter.accept(new ReadSequence(0, "", "AGC", ""))); assertFalse(filter.accept(new ReadSequence(0, "", "ATGC", ""))); // test of pattern count filter = new PatternReadFilter(); filter.setParameter("forbidden.regex", "(AA){2}"); filter.init(); // Not illumina id case assertFalse(filter.accept(read)); assertFalse(filter.accept(new ReadSequence(0, "", "AAAAAA", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "AAA", ""))); assertFalse(filter.accept(new ReadSequence(0, "", "AAAA", ""))); filter = new PatternReadFilter(); filter.setParameter("forbidden.regex", "(AA){3}"); filter.init(); // Not illumina id case assertFalse(filter.accept(read)); assertFalse(filter.accept(new ReadSequence(0, "", "AAAAAA", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "AAA", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "AAAA", ""))); filter = new PatternReadFilter(); filter.setParameter("forbidden.regex", "ATGC"); filter.init(); // Not illumina id case assertFalse(filter.accept(read)); assertTrue(filter.accept(new ReadSequence(0, "", "ATG", ""))); assertFalse(filter.accept(new ReadSequence(0, "", "ATGC", ""))); assertFalse(filter.accept(new ReadSequence(0, "", "AAATGCG", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "AGCT", ""))); filter = new PatternReadFilter(); filter.setParameter("allowed.regex", "ATGC"); filter.init(); assertTrue(filter.accept(read)); assertFalse(filter.accept(new ReadSequence(0, "", "ATG", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "CATGCAA", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "ATGC", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "GCATGCAA", ""))); filter = new PatternReadFilter(); filter.setParameter("allowed.regex", "A.GC"); filter.init(); assertTrue(filter.accept(read)); assertFalse(filter.accept(new ReadSequence(0, "", "AGCT", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "CATGCAA", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "ATGC", ""))); assertTrue(filter.accept(new ReadSequence(0, "", "AAATGCG", ""))); } }