Revision: 21010
          http://sourceforge.net/p/jmol/code/21010
Author:   hansonr
Date:     2016-03-21 17:30:06 +0000 (Mon, 21 Mar 2016)
Log Message:
-----------
SmilesAromatic.java
SmilesSearch.java

Modified Paths:
--------------
    branches/v14_4/Jmol/src/org/jmol/smiles/SmilesAromatic.java
    trunk/Jmol/src/org/jmol/smiles/SmilesAromatic.java

Modified: branches/v14_4/Jmol/src/org/jmol/smiles/SmilesAromatic.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/smiles/SmilesAromatic.java 2016-03-21 
17:15:38 UTC (rev 21009)
+++ branches/v14_4/Jmol/src/org/jmol/smiles/SmilesAromatic.java 2016-03-21 
17:30:06 UTC (rev 21010)
@@ -552,11 +552,10 @@
   private static void removeBridgingRings(Lst<BS> lstAromatic, Lst<SmilesRing> 
lstSP2) {
     BS bs = new BS();
     BS bsBad = new BS();
-    checkBridges(lstAromatic, bsBad, null, null, bs);
     BS bsBad2 = new BS();
-    checkBridges(lstSP2, bsBad2, null, null, bs);
+    checkBridges(lstAromatic, bsBad, lstAromatic, bsBad, bs);
+    checkBridges(lstSP2, bsBad2, lstSP2, bsBad2, bs);
     checkBridges(lstAromatic, bsBad, lstSP2, bsBad2, bs);
-
     for (int i = lstAromatic.size(); --i >= 0;)
       if (bsBad.get(i))
         lstAromatic.remove(i);
@@ -567,22 +566,10 @@
 
   private static void checkBridges(Lst<?> lst, BS bsBad, Lst<?> lst2,
                                    BS bsBad2, BS bs) {
+    boolean isSameList = (lst == lst2);
     for (int i = lst.size(); --i >= 0;) {
       BS bs1 = (BS) lst.get(i);
-      if (lst2 == null)
-        for (int j = lst.size(); --j > i;) {
-          BS bs2 = (BS) lst.get(j);
-          bs.clearAll();
-          bs.or(bs1);
-          bs.and(bs2);
-          int n = bs.cardinality();
-          if (n > 2) {
-            bsBad.set(i);
-            bsBad.set(j);
-          }
-        }
-      else
-        for (int j = lst2.size(); --j >= 0;) {
+        for (int j0 = (isSameList ? i + 1 : 0), j = lst2.size(); --j >= j0;) {
           BS bs2 = (BS) lst2.get(j);
           if (bs2.equals(bs1))
             continue;
@@ -592,9 +579,8 @@
           int n = bs.cardinality();
           if (n > 2) {
             bsBad.set(i);
-            bsBad2.set(i);
+            bsBad2.set(j);
           }
-
         }
     }
   }

Modified: trunk/Jmol/src/org/jmol/smiles/SmilesAromatic.java
===================================================================
--- trunk/Jmol/src/org/jmol/smiles/SmilesAromatic.java  2016-03-21 17:15:38 UTC 
(rev 21009)
+++ trunk/Jmol/src/org/jmol/smiles/SmilesAromatic.java  2016-03-21 17:30:06 UTC 
(rev 21010)
@@ -552,11 +552,10 @@
   private static void removeBridgingRings(Lst<BS> lstAromatic, Lst<SmilesRing> 
lstSP2) {
     BS bs = new BS();
     BS bsBad = new BS();
-    checkBridges(lstAromatic, bsBad, null, null, bs);
     BS bsBad2 = new BS();
-    checkBridges(lstSP2, bsBad2, null, null, bs);
+    checkBridges(lstAromatic, bsBad, lstAromatic, bsBad, bs);
+    checkBridges(lstSP2, bsBad2, lstSP2, bsBad2, bs);
     checkBridges(lstAromatic, bsBad, lstSP2, bsBad2, bs);
-
     for (int i = lstAromatic.size(); --i >= 0;)
       if (bsBad.get(i))
         lstAromatic.remove(i);
@@ -567,22 +566,10 @@
 
   private static void checkBridges(Lst<?> lst, BS bsBad, Lst<?> lst2,
                                    BS bsBad2, BS bs) {
+    boolean isSameList = (lst == lst2);
     for (int i = lst.size(); --i >= 0;) {
       BS bs1 = (BS) lst.get(i);
-      if (lst2 == null)
-        for (int j = lst.size(); --j > i;) {
-          BS bs2 = (BS) lst.get(j);
-          bs.clearAll();
-          bs.or(bs1);
-          bs.and(bs2);
-          int n = bs.cardinality();
-          if (n > 2) {
-            bsBad.set(i);
-            bsBad.set(j);
-          }
-        }
-      else
-        for (int j = lst2.size(); --j >= 0;) {
+        for (int j0 = (isSameList ? i + 1 : 0), j = lst2.size(); --j >= j0;) {
           BS bs2 = (BS) lst2.get(j);
           if (bs2.equals(bs1))
             continue;
@@ -592,9 +579,8 @@
           int n = bs.cardinality();
           if (n > 2) {
             bsBad.set(i);
-            bsBad2.set(i);
+            bsBad2.set(j);
           }
-
         }
     }
   }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to