inprogress
authorcmzmasek@gmail.com <cmzmasek@gmail.com@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Thu, 11 Jul 2013 20:14:56 +0000 (20:14 +0000)
committercmzmasek@gmail.com <cmzmasek@gmail.com@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Thu, 11 Jul 2013 20:14:56 +0000 (20:14 +0000)
forester/java/src/org/forester/application/surfacing.java
forester/java/src/org/forester/surfacing/PrintableSpeciesSpecificDcData.java
forester/java/src/org/forester/surfacing/SurfacingUtil.java
forester/java/src/org/forester/util/SequenceIdParser.java

index 0c548af..71020c5 100644 (file)
@@ -225,8 +225,8 @@ public class surfacing {
     final static private String                               INPUT_GENOMES_FILE_OPTION                                                     = "genomes";
     final static private String                               INPUT_SPECIES_TREE_OPTION                                                     = "species_tree";
     final static private String                               SEQ_EXTRACT_OPTION                                                            = "prot_extract";
-    final static private String                               PRG_VERSION                                                                   = "2.290";
-    final static private String                               PRG_DATE                                                                      = "130709";
+    final static private String                               PRG_VERSION                                                                   = "2.300";
+    final static private String                               PRG_DATE                                                                      = "130711";
     final static private String                               E_MAIL                                                                        = "czmasek@burnham.org";
     final static private String                               WWW                                                                           = "https://sites.google.com/site/cmzmasek/home/software/forester/surfacing";
     final static private boolean                              IGNORE_DUFS_DEFAULT                                                           = true;
index 79dcb37..e54142f 100644 (file)
@@ -34,13 +34,14 @@ import java.util.TreeMap;
 import java.util.TreeSet;
 
 import org.forester.util.ForesterUtil;
+import org.forester.util.SequenceIdParser;
 
 class PrintableSpeciesSpecificDcData implements SpeciesSpecificDcData {
 
     final SortedMap<String, Integer> _combinable_domain_id_to_count_map;
     final SortedSet<String>          _key_domain_proteins;
-    final private int                _key_domain_domains_count;
     final private int                _combinable_domains_count;
+    final private int                _key_domain_domains_count;
 
     public PrintableSpeciesSpecificDcData( final int key_domain_domains_count, final int combinable_domains ) {
         _key_domain_proteins = new TreeSet<String>();
@@ -50,6 +51,17 @@ class PrintableSpeciesSpecificDcData implements SpeciesSpecificDcData {
     }
 
     @Override
+    public void addKeyDomainProtein( final String protein ) {
+        if ( ForesterUtil.isEmpty( protein ) ) {
+            throw new IllegalArgumentException( "attempt to add null or empty protein" );
+        }
+        if ( getKeyDomainProteins().contains( protein ) ) {
+            throw new IllegalArgumentException( "protein \"" + protein + "\" is not unique" );
+        }
+        getKeyDomainProteins().add( protein );
+    }
+
+    @Override
     public void addProteinsExhibitingCombinationCount( final String domain_id, final int count ) {
         if ( getCombinableDomainIdToCountsMap().containsKey( domain_id ) ) {
             throw new IllegalArgumentException( "Domain with id " + domain_id + " already exists" );
@@ -62,16 +74,9 @@ class PrintableSpeciesSpecificDcData implements SpeciesSpecificDcData {
         return _combinable_domain_id_to_count_map;
     }
 
-    private int getCombinableDomainsCount() {
-        return _combinable_domains_count;
-    }
-
-    private int getKeyDomainDomainsCount() {
-        return _key_domain_domains_count;
-    }
-
-    private int getKeyDomainProteinsCount() {
-        return _key_domain_proteins.size();
+    @Override
+    public SortedSet<String> getKeyDomainProteins() {
+        return _key_domain_proteins;
     }
 
     @Override
@@ -83,22 +88,6 @@ class PrintableSpeciesSpecificDcData implements SpeciesSpecificDcData {
     }
 
     @Override
-    public void addKeyDomainProtein( final String protein ) {
-        if ( ForesterUtil.isEmpty( protein ) ) {
-            throw new IllegalArgumentException( "attempt to add null or empty protein" );
-        }
-        if ( getKeyDomainProteins().contains( protein ) ) {
-            throw new IllegalArgumentException( "protein \"" + protein + "\" is not unique" );
-        }
-        getKeyDomainProteins().add( protein );
-    }
-
-    @Override
-    public SortedSet<String> getKeyDomainProteins() {
-        return _key_domain_proteins;
-    }
-
-    @Override
     public String toString() {
         return toStringBuffer( DomainSimilarityCalculator.Detailedness.LIST_COMBINING_DOMAIN_FOR_EACH_SPECIES, false )
                 .toString();
@@ -138,23 +127,56 @@ class PrintableSpeciesSpecificDcData implements SpeciesSpecificDcData {
         sb.append( " [" );
         boolean first = true;
         for( final String p : getKeyDomainProteins() ) {
-            String link = null;
-            final String up_id = ForesterUtil.extractUniProtKbProteinSeqIdentifier( p );
-            if ( !ForesterUtil.isEmpty( up_id ) ) {
-                link = "<a href=\"" + ForesterUtil.UNIPROT_KB + up_id + "\" target=\"_up_window\">" + up_id + "</a>";
-            }
-            else {
-                link = "<a href=\"" + "http://www.google.com/search?q=" + p + "\" target=\"_g_window\">" + p + "</a>";
-            }
+            final String link = obtainSeqLink( p );
             if ( first ) {
                 first = false;
             }
             else {
                 sb.append( ", " );
             }
-            sb.append( p );
+            sb.append( link );
         }
         sb.append( "]" );
         return sb;
     }
+
+    private int getCombinableDomainsCount() {
+        return _combinable_domains_count;
+    }
+
+    private int getKeyDomainDomainsCount() {
+        return _key_domain_domains_count;
+    }
+
+    private int getKeyDomainProteinsCount() {
+        return _key_domain_proteins.size();
+    }
+
+    private static String obtainSeqLink( final String p ) {
+        String link;
+        final String up_id = ForesterUtil.extractUniProtKbProteinSeqIdentifier( p );
+        if ( !ForesterUtil.isEmpty( up_id ) ) {
+            link = "<a class=\"pl\" href=\"" + ForesterUtil.UNIPROT_KB + up_id + "\" target=\"_up_window\">" + up_id
+                    + "</a>";
+        }
+        else {
+            final String gb_id = SequenceIdParser.parseGenbankProteinAccessor( p );
+            if ( !ForesterUtil.isEmpty( gb_id ) ) {
+                link = "<a class=\"pl\" href=\"" + ForesterUtil.NCBI_PROTEIN + gb_id + "\" target=\"_up_window\">"
+                        + gb_id + "</a>";
+            }
+            else {
+                final String gi = SequenceIdParser.parseGInumber( p );
+                if ( !ForesterUtil.isEmpty( gi ) ) {
+                    link = "<a class=\"pl\" href=\"" + ForesterUtil.NCBI_GI + gi + "\" target=\"_up_window\">gi|" + gi
+                            + "</a>";
+                }
+                else {
+                    link = "<a class=\"ps\" href=\"" + "http://www.google.com/search?q=" + p
+                            + "\" target=\"_g_window\">" + p + "</a>";
+                }
+            }
+        }
+        return link;
+    }
 }
index 9dfc40f..70d5654 100644 (file)
@@ -151,6 +151,25 @@ public final class SurfacingUtil {
         w.write( SurfacingConstants.NL );
         w.write( "a:hover { color : #FFFFFF; background-color : #99FF00; text-decoration : none; }" );
         w.write( SurfacingConstants.NL );
+        //
+        w.write( "a.pl:visited { color : #505050; text-decoration : none; font-size: 7pt;}" );
+        w.write( SurfacingConstants.NL );
+        w.write( "a.pl:link { color : #505050; text-decoration : none; font-size: 7pt;}" );
+        w.write( SurfacingConstants.NL );
+        w.write( "a.pl:active { color : #505050; text-decoration : none; font-size: 7pt;}" );
+        w.write( SurfacingConstants.NL );
+        w.write( "a.pl:hover { color : #FFFFFF; background-color : #99FF00; text-decoration : none; font-size: 7pt;}" );
+        w.write( SurfacingConstants.NL );
+        //
+        w.write( "a.ps:visited { color : #707070; text-decoration : none; font-size: 7pt;}" );
+        w.write( SurfacingConstants.NL );
+        w.write( "a.ps:link { color : #707070; text-decoration : none; font-size: 7pt;}" );
+        w.write( SurfacingConstants.NL );
+        w.write( "a.ps:active { color : #707070; text-decoration : none; font-size: 7pt;}" );
+        w.write( SurfacingConstants.NL );
+        w.write( "a.ps:hover { color : #FFFFFF; background-color : #99FF00; text-decoration : none; font-size: 7pt;}" );
+        w.write( SurfacingConstants.NL );
+        //
         w.write( "td { text-align: left; vertical-align: top; font-family: Verdana, Arial, Helvetica; font-size: 8pt}" );
         w.write( SurfacingConstants.NL );
         w.write( "h1 { color : #0000FF; font-family: Verdana, Arial, Helvetica; font-size: 18pt; font-weight: bold }" );
index d828a6a..7b400d2 100644 (file)
@@ -123,6 +123,16 @@ public final class SequenceIdParser {
         }\r
     }\r
 \r
+    public static String parseGenbankProteinAccessor( final String query ) {\r
+        final Matcher m = GENBANK_PROTEIN_AC_PATTERN.matcher( query );\r
+        if ( m.lookingAt() ) {\r
+            return m.group( 1 );\r
+        }\r
+        else {\r
+            return null;\r
+        }\r
+    }\r
+\r
     /**\r
      * Returns null if no match.\r
      * \r