Skip to content

Commit

Permalink
sssr fixed. memory usage decreased.
Browse files Browse the repository at this point in the history
  • Loading branch information
stsouko committed Feb 26, 2019
1 parent c006de2 commit 4b1ffbb
Show file tree
Hide file tree
Showing 3 changed files with 217 additions and 21 deletions.
41 changes: 21 additions & 20 deletions CGRtools/algorithms/sssr.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ def sssr(self):
if n in next_stack:
next_stack[n].extend(next_broom)
else:
next_broom.extend(stack[n])
terminated[n] = next_stack[n] = next_broom
stack[n].extend(next_broom) # not visited
terminated[n] = stack[n]
elif n in next_stack: # even rings
next_stack[n].extend(next_broom)
if n not in terminated:
Expand All @@ -89,8 +89,8 @@ def sssr(self):
if n in next_stack:
next_stack[n].extend(next_broom)
else:
next_broom.extend(stack[n])
terminated[n] = next_stack[n] = next_broom
stack[n].extend(next_broom) # not visited
terminated[n] = stack[n]
elif n in next_stack: # even rings
next_stack[n].extend(next_broom)
if n not in terminated:
Expand Down Expand Up @@ -145,29 +145,30 @@ def sssr(self):

c_set.append((c_num, p1ij, p2ij))

n_ringidx, c_sssr = 0, {}
c_sssr = {}
for c_num, p1ij, p2ij in sorted(c_set):
if c_num % 2:
if c_num % 2: # odd rings
c1 = p1ij[0]
c11 = c1[1]
c12 = c1[-2]
for c2 in p2ij:
if c11 != c2[1]:
c = c1 + c2[-2:0:-1]
ck = tuple(sorted(c))
if ck not in c_sssr:
c_sssr[ck] = c
n_ringidx += 1
if n_ringidx == n_sssr:
if c11 == c2[1] or c12 == c2[-2]:
continue
c = c1 + c2[-2:0:-1]
ck = tuple(sorted(c))
if ck not in c_sssr:
c_sssr[ck] = c
if len(c_sssr) == n_sssr:
return list(c_sssr.values())
else:
for c1, c2 in zip(p1ij, p1ij[1:]):
if c1[1] != c2[1]:
c = c1 + c2[-2:0:-1]
ck = tuple(sorted(c))
if ck not in c_sssr:
c_sssr[ck] = c
n_ringidx += 1
if n_ringidx == n_sssr:
if c1[1] == c2[1] or c1[-2] == c2[-2]:
continue
c = c1 + c2[-2:0:-1]
ck = tuple(sorted(c))
if ck not in c_sssr:
c_sssr[ck] = c
if len(c_sssr) == n_sssr:
return list(c_sssr.values())


Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

setup(
name='CGRtools',
version='3.1.1',
version='3.1.2',
packages=['CGRtools', 'CGRtools.algorithms', 'CGRtools.attributes', 'CGRtools.containers', 'CGRtools.files',
'CGRtools.files.dll', 'CGRtools.periodictable', 'CGRtools.utils'],
url='https://github.com/cimm-kzn/CGRtools',
Expand Down
195 changes: 195 additions & 0 deletions test/cycle.sdf
Original file line number Diff line number Diff line change
Expand Up @@ -325,4 +325,199 @@ $$$$
8 11 1 0 0 0 0
9 12 2 0 0 0 0
M END
$$$$

Mrv1641802221917402D

18 22 0 0 0 0 999 V2000
0.7600 0.9706 0.0000 C 0 0 0 0 0 0 0 0 0 27 0 0
0.7600 0.1456 0.0000 C 0 0 0 0 0 0 0 0 0 51 0 0
-1.4940 0.1456 0.0000 C 0 0 0 0 0 0 0 0 0 60 0 0
0.0455 -0.2669 0.0000 C 0 0 0 0 0 0 0 0 0 69 0 0
1.4745 -0.2669 0.0000 C 0 0 0 0 0 0 0 0 0 70 0 0
-0.7795 -0.2669 0.0000 C 0 0 0 0 0 0 0 0 0 75 0 0
-2.2084 -0.2669 0.0000 C 0 0 0 0 0 0 0 0 0 76 0 0
0.0455 -1.0919 0.0000 C 0 0 0 0 0 0 0 0 0 81 0 0
1.4745 -1.0919 0.0000 C 0 0 0 0 0 0 0 0 0 82 0 0
-0.7795 -1.0919 0.0000 C 0 0 0 0 0 0 0 0 0 83 0 0
-2.2084 -1.0919 0.0000 C 0 0 0 0 0 0 0 0 0 84 0 0
0.7600 -1.5044 0.0000 C 0 0 0 0 0 0 0 0 0 85 0 0
-1.4940 -1.5044 0.0000 C 0 0 0 0 0 0 0 0 0 86 0 0
1.1725 1.6851 0.0000 C 0 0 0 0 0 0 0 0 0 2 0 0
0.3475 1.6851 0.0000 C 0 0 0 0 0 0 0 0 0 1 0 0
1.8870 2.0976 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.8870 2.9226 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.6014 1.6851 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 4 4 0 0 0 0
2 5 4 0 0 0 0
3 6 4 0 0 0 0
3 7 4 0 0 0 0
4 6 1 0 0 0 0
4 8 4 0 0 0 0
5 9 4 0 0 0 0
6 10 4 0 0 0 0
7 11 4 0 0 0 0
8 10 1 0 0 0 0
8 12 4 0 0 0 0
9 12 4 0 0 0 0
10 13 4 0 0 0 0
11 13 4 0 0 0 0
1 14 1 0 0 0 0
1 15 1 0 0 0 0
15 14 1 0 0 0 0
14 16 1 0 0 0 0
16 17 1 0 0 0 0
16 18 1 0 0 0 0
17 18 1 0 0 0 0
M END
$$$$

Mrv1641802261917343D

62 81 0 0 0 0 999 V2000
-0.0730 -8.9498 -1.3294 Ru 0 0 0 0 0 0 0 0 0 1 0 0
-1.4165 -6.3871 -0.6558 Ru 0 0 0 0 0 0 0 0 0 2 0 0
1.3874 -8.3184 -0.0172 N 0 0 0 0 0 0 0 0 0 3 0 0
-0.3933 -10.6029 -0.0146 N 0 0 0 0 0 0 0 0 0 4 0 0
0.7549 -7.7724 -2.8525 N 0 0 0 0 0 0 0 0 0 5 0 0
-1.1525 -9.9009 -2.8502 N 0 0 0 0 0 0 0 0 0 6 0 0
-1.3806 -6.2143 1.4142 N 0 0 0 0 0 0 0 0 0 7 0 0
-3.0235 -7.7002 -0.4079 N 0 0 0 0 0 0 0 0 0 8 0 0
-0.3275 -4.5625 -0.7069 N 0 0 0 0 0 0 0 0 0 9 0 0
-2.1815 -5.8013 -2.5027 N 0 0 0 0 0 0 0 0 0 10 0 0
1.4582 -8.6223 1.2909 C 0 0 0 0 0 0 0 0 0 11 0 0
2.2790 -7.3602 -0.3264 C 0 0 0 0 0 0 0 0 0 12 0 0
0.0930 -10.7346 1.2086 C 0 0 0 0 0 0 0 0 0 13 0 0
-1.0949 -11.6340 -0.4861 C 0 0 0 0 0 0 0 0 0 14 0 0
1.7536 -6.9779 -2.6831 C 0 0 0 0 0 0 0 0 0 15 0 0
0.2779 -7.6131 -4.0530 C 0 0 0 0 0 0 0 0 0 16 0 0
-1.8516 -11.0376 -2.7121 C 0 0 0 0 0 0 0 0 0 17 0 0
-1.3628 -9.4066 -4.0843 C 0 0 0 0 0 0 0 0 0 18 0 0
-2.0863 -6.9928 2.2576 C 0 0 0 0 0 0 0 0 0 19 0 0
-0.7312 -5.2598 2.1080 C 0 0 0 0 0 0 0 0 0 20 0 0
-3.2503 -8.4180 0.6582 C 0 0 0 0 0 0 0 0 0 21 0 0
-3.7721 -8.0844 -1.3823 C 0 0 0 0 0 0 0 0 0 22 0 0
0.3200 -4.0443 0.2945 C 0 0 0 0 0 0 0 0 0 23 0 0
-0.1088 -3.8346 -1.7474 C 0 0 0 0 0 0 0 0 0 24 0 0
-3.2305 -6.4043 -3.0913 C 0 0 0 0 0 0 0 0 0 25 0 0
-1.7813 -4.7535 -3.2476 C 0 0 0 0 0 0 0 0 0 26 0 0
0.7302 -9.6260 1.8969 C 0 0 0 0 0 0 0 0 0 27 0 0
2.3625 -7.7259 1.8703 C 0 0 0 0 0 0 0 0 0 28 0 0
2.5556 -6.8757 -1.5813 C 0 0 0 0 0 0 0 0 0 29 0 0
2.8803 -6.9413 0.8547 C 0 0 0 0 0 0 0 0 0 30 0 0
-0.1710 -12.0514 1.7162 C 0 0 0 0 0 0 0 0 0 31 0 0
-1.7715 -11.8776 -1.6232 C 0 0 0 0 0 0 0 0 0 32 0 0
-0.9333 -12.5257 0.6309 C 0 0 0 0 0 0 0 0 0 33 0 0
1.8886 -6.2310 -3.7835 C 0 0 0 0 0 0 0 0 0 34 0 0
-0.7081 -8.3205 -4.6420 C 0 0 0 0 0 0 0 0 0 35 0 0
0.9514 -6.6156 -4.6357 C 0 0 0 0 0 0 0 0 0 36 0 0
-2.6254 -11.2289 -3.8552 C 0 0 0 0 0 0 0 0 0 37 0 0
-2.3248 -10.1901 -4.7177 C 0 0 0 0 0 0 0 0 0 38 0 0
-2.8024 -8.1629 1.9158 C 0 0 0 0 0 0 0 0 0 39 0 0
-1.9686 -6.4192 3.5315 C 0 0 0 0 0 0 0 0 0 40 0 0
0.1542 -4.3290 1.6000 C 0 0 0 0 0 0 0 0 0 41 0 0
-1.1017 -5.3509 3.4413 C 0 0 0 0 0 0 0 0 0 42 0 0
-4.0429 -9.4295 0.2652 C 0 0 0 0 0 0 0 0 0 43 0 0
-3.8741 -7.5321 -2.6354 C 0 0 0 0 0 0 0 0 0 44 0 0
-4.4013 -9.1945 -0.9881 C 0 0 0 0 0 0 0 0 0 45 0 0
1.1310 -3.0902 -0.1697 C 0 0 0 0 0 0 0 0 0 46 0 0
-0.7064 -3.9462 -2.9696 C 0 0 0 0 0 0 0 0 0 47 0 0
0.8325 -2.9335 -1.4488 C 0 0 0 0 0 0 0 0 0 48 0 0
-3.5381 -5.6886 -4.2488 C 0 0 0 0 0 0 0 0 0 49 0 0
-2.6311 -4.6444 -4.3453 C 0 0 0 0 0 0 0 0 0 50 0 0
0.6213 -9.6966 3.2843 C 0 0 0 0 0 0 0 0 0 51 0 0
-3.0608 -9.0232 2.9889 C 0 0 0 0 0 0 0 0 0 60 0 0
-0.6342 -9.7083 3.9174 C 0 0 0 0 0 0 0 0 0 69 0 0
1.7227 -9.9844 4.1442 C 0 0 0 0 0 0 0 0 0 70 0 0
-2.0150 -9.5472 3.7734 C 0 0 0 0 0 0 0 0 0 75 0 0
-4.3650 -9.2429 3.5172 C 0 0 0 0 0 0 0 0 0 76 0 0
-0.8196 -10.1260 5.2262 C 0 0 0 0 0 0 0 0 0 81 0 0
1.5384 -10.3101 5.5183 C 0 0 0 0 0 0 0 0 0 82 0 0
-2.2015 -10.0424 5.0551 C 0 0 0 0 0 0 0 0 0 83 0 0
-4.5622 -9.8390 4.7981 C 0 0 0 0 0 0 0 0 0 84 0 0
0.2441 -10.4151 6.0867 C 0 0 0 0 0 0 0 0 0 85 0 0
-3.4688 -10.2223 5.6171 C 0 0 0 0 0 0 0 0 0 86 0 0
1 2 1 0 0 0 0
1 3 1 0 0 0 0
1 4 1 0 0 0 0
1 5 1 0 0 0 0
1 6 1 0 0 0 0
2 7 1 0 0 0 0
2 8 1 0 0 0 0
2 9 1 0 0 0 0
2 10 1 0 0 0 0
3 11 1 0 0 0 0
3 12 1 0 0 0 0
4 13 2 0 0 0 0
4 14 1 0 0 0 0
5 15 2 0 0 0 0
5 16 1 0 0 0 0
6 17 4 0 0 0 0
6 18 4 0 0 0 0
7 19 4 0 0 0 0
7 20 4 0 0 0 0
8 21 1 0 0 0 0
8 22 2 0 0 0 0
9 23 1 0 0 0 0
9 24 2 0 0 0 0
10 25 1 0 0 0 0
10 26 1 0 0 0 0
11 27 2 0 0 0 0
11 28 1 0 0 0 0
12 29 2 0 0 0 0
12 30 1 0 0 0 0
13 27 1 0 0 0 0
13 31 1 0 0 0 0
14 32 2 0 0 0 0
14 33 1 0 0 0 0
15 29 1 0 0 0 0
15 34 1 0 0 0 0
16 35 2 0 0 0 0
16 36 1 0 0 0 0
17 32 1 0 0 0 0
17 37 4 0 0 0 0
18 35 1 0 0 0 0
18 38 4 0 0 0 0
19 39 1 0 0 0 0
19 40 4 0 0 0 0
20 41 1 0 0 0 0
20 42 4 0 0 0 0
21 39 2 0 0 0 0
21 43 1 0 0 0 0
22 44 1 0 0 0 0
22 45 1 0 0 0 0
23 41 2 0 0 0 0
23 46 1 0 0 0 0
24 47 1 0 0 0 0
24 48 1 0 0 0 0
25 44 2 0 0 0 0
25 49 1 0 0 0 0
26 47 2 0 0 0 0
26 50 1 0 0 0 0
27 51 1 0 0 0 0
28 30 2 0 0 0 0
31 33 2 0 0 0 0
34 36 2 0 0 0 0
37 38 4 0 0 0 0
39 52 1 0 0 0 0
40 42 4 0 0 0 0
43 45 2 0 0 0 0
46 48 2 0 0 0 0
49 50 2 0 0 0 0
51 53 4 0 0 0 0
51 54 4 0 0 0 0
52 55 4 0 0 0 0
52 56 4 0 0 0 0
53 55 1 0 0 0 0
53 57 4 0 0 0 0
54 58 4 0 0 0 0
55 59 4 0 0 0 0
56 60 4 0 0 0 0
57 59 1 0 0 0 0
57 61 4 0 0 0 0
58 61 4 0 0 0 0
59 62 4 0 0 0 0
60 62 4 0 0 0 0
M END
$$$$

0 comments on commit 4b1ffbb

Please sign in to comment.