From: gmungoc Date: Fri, 11 Mar 2016 12:15:22 +0000 (+0000) Subject: Merge branch 'develop' into features/JAL-653_JAL-1766_htslib_refseqsupport X-Git-Tag: Release_2_10_0~296^2~7 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=a064561d8665ee9db217b17cda826fceac90cbbc;hp=b9df385dd6b61f92577c68b9f39ca0f9fc4d3993;p=jalview.git Merge branch 'develop' into features/JAL-653_JAL-1766_htslib_refseqsupport --- diff --git a/src/jalview/analysis/SequenceIdMatcher.java b/src/jalview/analysis/SequenceIdMatcher.java index 23e9a14..b89287c 100755 --- a/src/jalview/analysis/SequenceIdMatcher.java +++ b/src/jalview/analysis/SequenceIdMatcher.java @@ -272,7 +272,7 @@ public class SequenceIdMatcher return r; } - private class SeqIdName + class SeqIdName { String id; diff --git a/src/jalview/gui/StructureChooser.java b/src/jalview/gui/StructureChooser.java index 5d381b9..d313002 100644 --- a/src/jalview/gui/StructureChooser.java +++ b/src/jalview/gui/StructureChooser.java @@ -43,6 +43,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; +import java.util.Objects; import javax.swing.JCheckBox; import javax.swing.JComboBox; @@ -301,6 +302,7 @@ public class StructureChooser extends GStructureChooser implements if (!isPDBRefsFound && !isUniProtRefsFound) { String seqName = seq.getName(); + seqName = sanitizeSeqName(seqName); String[] names = seqName.toLowerCase().split("\\|"); for (String name : names) { @@ -328,6 +330,21 @@ public class StructureChooser extends GStructureChooser implements } /** + * Remove the following special characters from input string +, -, &, |, !, (, + * ), {, }, [, ], ^, ", ~, *, ?, :, \ + * + * @param seqName + * @return + */ + private static String sanitizeSeqName(String seqName) + { + Objects.requireNonNull(seqName); + return seqName.replaceAll("\\[\\d*\\]", "") + .replaceAll("[^\\dA-Za-z ]", "").replaceAll("\\s+", "+"); + } + + + /** * Ensures sequence ref names are not less than 3 characters and does not * contain a database name * @@ -921,7 +938,8 @@ public class StructureChooser extends GStructureChooser implements pdbRequest.setResponseSize(1); pdbRequest.setFieldToSearchBy("(pdb_id:"); pdbRequest.setWantedFields(wantedFields); - pdbRequest.setSearchTerm(txt_search.getText() + ")"); + pdbRequest + .setSearchTerm(txt_search.getText().toLowerCase() + ")"); pdbRequest.setAssociatedSequence(selectedSequence); pdbRestCleint = new PDBRestClient(); PDBRestResponse resultList; diff --git a/src/jalview/ws/dbsources/PDBRestClient.java b/src/jalview/ws/dbsources/PDBRestClient.java index 8e08c84..05dab95 100644 --- a/src/jalview/ws/dbsources/PDBRestClient.java +++ b/src/jalview/ws/dbsources/PDBRestClient.java @@ -111,7 +111,7 @@ public class PDBRestClient // Get the JSON string from the response object String responseString = clientResponse.getEntity(String.class); - System.out.println("query >>>>>>> " + pdbRestRequest.toString()); + // System.out.println("query >>>>>>> " + pdbRestRequest.toString()); // Check the response status and report exception if one occurs if (clientResponse.getStatus() != 200) diff --git a/src/jalview/ws/sifts/SiftsClient.java b/src/jalview/ws/sifts/SiftsClient.java index f25c1cf..50cf5cb 100644 --- a/src/jalview/ws/sifts/SiftsClient.java +++ b/src/jalview/ws/sifts/SiftsClient.java @@ -927,7 +927,8 @@ public class SiftsClient implements SiftsClientI // output mappings StringBuffer output = new StringBuffer(); output.append(NEWLINE); - output.append("Sequence ⟷ Structure mapping details").append(NEWLINE); + output.append("Sequence \u27f7 Structure mapping details").append( + NEWLINE); output.append("Method: SIFTS"); output.append(NEWLINE).append(NEWLINE); diff --git a/test/jalview/analysis/SequenceIdMatcherTest.java b/test/jalview/analysis/SequenceIdMatcherTest.java new file mode 100644 index 0000000..eb0fc47 --- /dev/null +++ b/test/jalview/analysis/SequenceIdMatcherTest.java @@ -0,0 +1,78 @@ +package jalview.analysis; + +import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertTrue; + +import jalview.analysis.SequenceIdMatcher.SeqIdName; +import jalview.datamodel.SequenceI; + +import org.testng.annotations.Test; + +public class SequenceIdMatcherTest +{ + + /** + * Test the method that checks for one sequence id starting with the other, + * followed by an 'allowed' separator character + */ + @Test(groups = "Functional") + public void test_seqIdNameEquals() + { + SequenceIdMatcher sequenceIdMatcher = new SequenceIdMatcher( + new SequenceI[] {}); + + /* + * target name = matcher name + word separator... + */ + SeqIdName testee = sequenceIdMatcher.new SeqIdName("A12345"); + assertTrue(testee.equals("A12345")); + assertTrue(testee.equals("A12345~")); + assertTrue(testee.equals("A12345.")); + assertTrue(testee.equals("A12345 ")); + assertTrue(testee.equals("A12345|")); + assertTrue(testee.equals("A12345#")); + assertTrue(testee.equals("A12345\\")); + assertTrue(testee.equals("A12345/")); + assertTrue(testee.equals("A12345<")); + assertTrue(testee.equals("A12345>")); + assertTrue(testee.equals("A12345!")); + assertTrue(testee.equals("A12345\"")); + assertTrue(testee.equals("A12345" + String.valueOf((char) 0x00A4))); + assertTrue(testee.equals("A12345$a")); + assertTrue(testee.equals("A12345%b")); + assertTrue(testee.equals("A12345^cd")); + assertTrue(testee.equals("A12345*efg")); + assertTrue(testee.equals("A12345)^&!")); + assertTrue(testee.equals("A12345}01&*")); + assertTrue(testee.equals("A12345[A23456")); + assertTrue(testee.equals("A12345@|Uniprot")); + assertTrue(testee.equals("A12345'whatever you want here")); + assertTrue(testee.equals("A12345,")); + assertTrue(testee.equals("A12345?")); + assertTrue(testee.equals("A12345_")); + + /* + * matcher name = target name + word separator... + */ + testee = sequenceIdMatcher.new SeqIdName("A12345#"); + assertTrue(testee.equals("A12345")); + + /* + * miscellaneous failing cases + */ + testee = sequenceIdMatcher.new SeqIdName("A12345"); + assertFalse(testee.equals((Object) null)); + assertFalse(testee.equals("")); + assertFalse(testee.equals("a12345")); + assertFalse(testee.equals("A12346|A12345")); + + testee = sequenceIdMatcher.new SeqIdName("A12345?B23456"); + assertFalse(testee.equals("B23456")); + assertFalse(testee.equals("A12345|")); + assertFalse(testee.equals("A12345?")); + + testee = sequenceIdMatcher.new SeqIdName("A12345<"); + assertFalse(testee.equals("A12345?")); + assertTrue(testee.equals("A12345<")); // bug? inconsistent + } +}