Yup, RNAsubopt is in there too!

```
#Stochastically sample structures
from arnie.sample_structures import sample_structures
seq='GUGGGGUGGUACCGCGAUAAUCAAUCGUCCCCUUGUGUUCACGAGGGGGCGUUUUU'
sample_structures(seq)
```

output:

```
['((((.......)))).......((.(((((((((((....))))))))))).))..',
'((((.......))))...........((((((((((....))))))))))......',
'((((.......)))).......((.(((((((((((....))))))))))).))..',
'((((.......)))).......((.(((((((((((....))))))))))).))..',
'((((.......))))..........(((((((((((....))))))))))).....',
'((((.......))))..........(((((((((((....))))))))))).....',
'((((.......))))...((..((.(((((((((((....))))))))))))).))',
'((((.......)))).......((.(((((((((((....))))))))))).))..',
'((((.......))))..........(((((((((((....))))))))))).....',
'((((.......)))).......((.(((((((((((....)))))))))))..)).']
```

Unfortunately RNAsubopt itself doesn’t accept the Vienna `motif`

input. But with both Vienna (and EternaFold!), you can do the same stochastic sampling while enforcing a constraint for the motif in a specific position:

```
seq='GUGGGGUGGUACCGCGAUAAUCAAUCGUCCCCUUGUGUUCACGAGGGGGCGUUUUU'
constraint='..((((xxxxxxx(((((xxxxx)))))))))........................'
sample_structures(seq, constraint=constraint)
```

Out:

```
['..((((.......(((((.....)))))))))...(((((......))))).....',
'..((((.......(((((.....))))))))).(((.(((....))).))).....',
'..((((.......(((((.....)))))))))...(((((......))))).....',
'..((((.......(((((.....)))))))))...(((((......))))).....',
'..((((.......(((((.....)))))))))..((.(((....))).))......',
'..((((.......(((((.....))))))))).(((.(((....))).))).....',
'..((((.......(((((.....)))))))))..((.(((....))).))......',
'..((((.......(((((.....))))))))).(((.(((....))).))).....',
'..((((.......(((((.....)))))))))..((((((......))))))....',
'..((((.......(((((.....)))))))))..((.(((....))).))......']
```

For eternafold:

```
sample_structures(seq, constraint=constraint, package='eternafold')
```

Out:

```
['(.((((.......(((((.....))))))))).)......(((......)))....',
'(.((((.......(((((.....))))))))).)......(((......)))....',
'(.((((.......(((((.....))))))))).).....(.....)..........',
'(.((((.......(((((.....))))))))).........)..............',
'((((((.......(((((.....)))))))))........))..............',
'(.((((.......(((((.....))))))))).)........(..........)..',
'..((((.......(((((.....))))))))).......(.(...)).........',
'..((((.......(((((.....)))))))))............(....)......',
'..((((.......(((((.....)))))))))........(((......)))....',
'..((((.......(((((.....)))))))))..(((((.......).))))....',
'..((((.......(((((.....)))))))))..((((.(......).))))....',
'..((((.......(((((.....)))))))))........................',
...
```

[I haven’t updated the eternafold hook to not return 100 structures every time, ha.]

I updated the above colab notebook with this too.