5
5
'''
6
6
7
7
import copy
8
+ import sys
9
+ import re
8
10
import RNA
9
11
#from eterna_score import eternabot_score
10
12
from difflib import SequenceMatcher
11
13
#from eterna_score import eternabot_score
12
14
from random import choice
13
15
from eterna_score import get_pairmap_from_secstruct
16
+ from subprocess import Popen , PIPE , STDOUT
17
+
18
+ vienna_path = '../../../EteRNABot/eternabot/./RNAfold'
19
+
20
+ def fold (seq , vienna_version = 1 , vienna_path = '../../../EteRNABot/eternabot/./RNAfold' ):
21
+ if vienna_version == 1 :
22
+ if sys .version_info [:3 ] > (3 ,0 ):
23
+ p = Popen ([vienna_path , '-T' ,'37.0' ], stdout = PIPE , stdin = PIPE , stderr = STDOUT , encoding = 'utf8' )
24
+ else :
25
+ p = Popen ([vienna_path , '-T' ,'37.0' ], stdout = PIPE , stdin = PIPE , stderr = STDOUT )
26
+ pair = p .communicate (input = '' .join (seq ))[0 ]
27
+ formatted = re .split ('\s+| \(?\s?' ,pair )
28
+ s = formatted [1 ]
29
+ else :
30
+ s , _ = RNA .fold (seq )
31
+ return s
32
+
14
33
15
34
def hot_one_state (seq ,index ,base ):
16
35
#array = np.zeros(NUM_STATES)
@@ -19,7 +38,7 @@ def hot_one_state(seq,index,base):
19
38
return copied_seq
20
39
21
40
22
- def convert_to_struc (base_seq ):
41
+ def convert_to_struc (base_seq , vienna_version = 1 ):
23
42
str_struc = []
24
43
for i in base_seq :
25
44
if i == 1 :
@@ -31,7 +50,7 @@ def convert_to_struc(base_seq):
31
50
elif i == 4 :
32
51
str_struc .append ('C' )
33
52
struc = '' .join (str_struc )
34
- s , _ = RNA . fold (struc )
53
+ s = fold (struc , vienna_version , vienna_path )
35
54
return_struc = []
36
55
for i in s :
37
56
if i == '.' :
@@ -134,7 +153,7 @@ def all_same(items):
134
153
seq = 'AAAAAGUUUUGAGAAAGAAGUCUGGGGAAAAAAACUUGGGUUUCAAAGGGUGAAAUGGAAAAAAACAUUUCACCCAAAGUUCCUAUCCGAAAAAAAGGAUAGGAGCAAACUUAAAACAAAAA'
135
154
136
155
137
- def sbc (dot_bracket ,seq ): # Monte Carlo Tree Search with Depth 1
156
+ def sbc (dot_bracket ,seq , vienna_version = 1 , vienna_path = '../../../EteRNABot/eternabot/./RNAfold' ): # Monte Carlo Tree Search with Depth 1
138
157
'''
139
158
Mutates individual bases with MCTS
140
159
@@ -156,7 +175,7 @@ def sbc(dot_bracket,seq): # Monte Carlo Tree Search with Depth 1
156
175
# GAACGCACCUGCCUGUCUGGGUAGCAUGAA GAACUCACCUGCCUGUCUUGGUAGCAUCAA
157
176
# global current_seq
158
177
current_seq = convert_to_list (seq )
159
- cdb , _ = RNA . fold (seq )
178
+ cdb = fold (seq , vienna_version , vienna_path )
160
179
current_pm = get_pairmap_from_secstruct (cdb )
161
180
for i in range (4 ):
162
181
for location in range (len_puzzle ):
0 commit comments