Showing
23 changed files
with
120 additions
and
309 deletions
... | @@ -2,6 +2,6 @@ | ... | @@ -2,6 +2,6 @@ |
2 | CPLEXDir="/opt/ibm/ILOG/CPLEX_Studio128" | 2 | CPLEXDir="/opt/ibm/ILOG/CPLEX_Studio128" |
3 | IEIGEN="/usr/local/include/eigen3" | 3 | IEIGEN="/usr/local/include/eigen3" |
4 | INUPACK="/usr/local/include/nupack" | 4 | INUPACK="/usr/local/include/nupack" |
5 | -biorseoDir="/nhome/siniac/lbecquey/Software/biorseo" | 5 | +biorseoDir="/home/persalteas/Software/biorseo" |
6 | -jar3dexec="/nhome/siniac/lbecquey/Software/jar3dbin/jar3d_2014-12-11.jar" | 6 | +jar3dexec="/home/persalteas/Software/jar3dbin/jar3d_2014-12-11.jar" |
7 | -bypdir="/nhome/siniac/lbecquey/Software/BayesPairing/bayespairing/src" | 7 | +bypdir="/home/persalteas/Software/BayesPairing/bayespairing/src" | ... | ... |
No preview for this file type
doc/OUP_First_SBk_Bot_8401.eps
0 → 100644
No preview for this file type
doc/algorithm2e.sty
0 → 100644
This diff is collapsed. Click to expand it.
doc/background.png
deleted
100644 → 0
856 KB
doc/bioinfo.cls
0 → 100644
This diff is collapsed. Click to expand it.
doc/component.ipe
deleted
100644 → 0
This diff is collapsed. Click to expand it.
doc/component.png
deleted
100644 → 0
16.7 KB
doc/fig/Benchmark.jpg
0 → 100644
286 KB
doc/fig/Figure_1.jpg
0 → 100644
36.2 KB
doc/fig/graph_abstract.jpg
0 → 100644
111 KB
doc/fig/oxford.png
0 → 100644
818 Bytes
doc/graph_abstract.png
deleted
100644 → 0
80.5 KB
doc/levels.ipe
deleted
100644 → 0
1 | -<?xml version="1.0"?> | ||
2 | -<!DOCTYPE ipe SYSTEM "ipe.dtd"> | ||
3 | -<ipe version="70206" creator="Ipe 7.2.7"> | ||
4 | -<info created="D:20181012182334" modified="D:20181012182334"/> | ||
5 | -<ipestyle name="basic"> | ||
6 | -<symbol name="arrow/arc(spx)"> | ||
7 | -<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen"> | ||
8 | -0 0 m | ||
9 | --1 0.333 l | ||
10 | --1 -0.333 l | ||
11 | -h | ||
12 | -</path> | ||
13 | -</symbol> | ||
14 | -<symbol name="arrow/farc(spx)"> | ||
15 | -<path stroke="sym-stroke" fill="white" pen="sym-pen"> | ||
16 | -0 0 m | ||
17 | --1 0.333 l | ||
18 | --1 -0.333 l | ||
19 | -h | ||
20 | -</path> | ||
21 | -</symbol> | ||
22 | -<symbol name="arrow/ptarc(spx)"> | ||
23 | -<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen"> | ||
24 | -0 0 m | ||
25 | --1 0.333 l | ||
26 | --0.8 0 l | ||
27 | --1 -0.333 l | ||
28 | -h | ||
29 | -</path> | ||
30 | -</symbol> | ||
31 | -<symbol name="arrow/fptarc(spx)"> | ||
32 | -<path stroke="sym-stroke" fill="white" pen="sym-pen"> | ||
33 | -0 0 m | ||
34 | --1 0.333 l | ||
35 | --0.8 0 l | ||
36 | --1 -0.333 l | ||
37 | -h | ||
38 | -</path> | ||
39 | -</symbol> | ||
40 | -<symbol name="mark/circle(sx)" transformations="translations"> | ||
41 | -<path fill="sym-stroke"> | ||
42 | -0.6 0 0 0.6 0 0 e | ||
43 | -0.4 0 0 0.4 0 0 e | ||
44 | -</path> | ||
45 | -</symbol> | ||
46 | -<symbol name="mark/disk(sx)" transformations="translations"> | ||
47 | -<path fill="sym-stroke"> | ||
48 | -0.6 0 0 0.6 0 0 e | ||
49 | -</path> | ||
50 | -</symbol> | ||
51 | -<symbol name="mark/fdisk(sfx)" transformations="translations"> | ||
52 | -<group> | ||
53 | -<path fill="sym-fill"> | ||
54 | -0.5 0 0 0.5 0 0 e | ||
55 | -</path> | ||
56 | -<path fill="sym-stroke" fillrule="eofill"> | ||
57 | -0.6 0 0 0.6 0 0 e | ||
58 | -0.4 0 0 0.4 0 0 e | ||
59 | -</path> | ||
60 | -</group> | ||
61 | -</symbol> | ||
62 | -<symbol name="mark/box(sx)" transformations="translations"> | ||
63 | -<path fill="sym-stroke" fillrule="eofill"> | ||
64 | --0.6 -0.6 m | ||
65 | -0.6 -0.6 l | ||
66 | -0.6 0.6 l | ||
67 | --0.6 0.6 l | ||
68 | -h | ||
69 | --0.4 -0.4 m | ||
70 | -0.4 -0.4 l | ||
71 | -0.4 0.4 l | ||
72 | --0.4 0.4 l | ||
73 | -h | ||
74 | -</path> | ||
75 | -</symbol> | ||
76 | -<symbol name="mark/square(sx)" transformations="translations"> | ||
77 | -<path fill="sym-stroke"> | ||
78 | --0.6 -0.6 m | ||
79 | -0.6 -0.6 l | ||
80 | -0.6 0.6 l | ||
81 | --0.6 0.6 l | ||
82 | -h | ||
83 | -</path> | ||
84 | -</symbol> | ||
85 | -<symbol name="mark/fsquare(sfx)" transformations="translations"> | ||
86 | -<group> | ||
87 | -<path fill="sym-fill"> | ||
88 | --0.5 -0.5 m | ||
89 | -0.5 -0.5 l | ||
90 | -0.5 0.5 l | ||
91 | --0.5 0.5 l | ||
92 | -h | ||
93 | -</path> | ||
94 | -<path fill="sym-stroke" fillrule="eofill"> | ||
95 | --0.6 -0.6 m | ||
96 | -0.6 -0.6 l | ||
97 | -0.6 0.6 l | ||
98 | --0.6 0.6 l | ||
99 | -h | ||
100 | --0.4 -0.4 m | ||
101 | -0.4 -0.4 l | ||
102 | -0.4 0.4 l | ||
103 | --0.4 0.4 l | ||
104 | -h | ||
105 | -</path> | ||
106 | -</group> | ||
107 | -</symbol> | ||
108 | -<symbol name="mark/cross(sx)" transformations="translations"> | ||
109 | -<group> | ||
110 | -<path fill="sym-stroke"> | ||
111 | --0.43 -0.57 m | ||
112 | -0.57 0.43 l | ||
113 | -0.43 0.57 l | ||
114 | --0.57 -0.43 l | ||
115 | -h | ||
116 | -</path> | ||
117 | -<path fill="sym-stroke"> | ||
118 | --0.43 0.57 m | ||
119 | -0.57 -0.43 l | ||
120 | -0.43 -0.57 l | ||
121 | --0.57 0.43 l | ||
122 | -h | ||
123 | -</path> | ||
124 | -</group> | ||
125 | -</symbol> | ||
126 | -<symbol name="arrow/fnormal(spx)"> | ||
127 | -<path stroke="sym-stroke" fill="white" pen="sym-pen"> | ||
128 | -0 0 m | ||
129 | --1 0.333 l | ||
130 | --1 -0.333 l | ||
131 | -h | ||
132 | -</path> | ||
133 | -</symbol> | ||
134 | -<symbol name="arrow/pointed(spx)"> | ||
135 | -<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen"> | ||
136 | -0 0 m | ||
137 | --1 0.333 l | ||
138 | --0.8 0 l | ||
139 | --1 -0.333 l | ||
140 | -h | ||
141 | -</path> | ||
142 | -</symbol> | ||
143 | -<symbol name="arrow/fpointed(spx)"> | ||
144 | -<path stroke="sym-stroke" fill="white" pen="sym-pen"> | ||
145 | -0 0 m | ||
146 | --1 0.333 l | ||
147 | --0.8 0 l | ||
148 | --1 -0.333 l | ||
149 | -h | ||
150 | -</path> | ||
151 | -</symbol> | ||
152 | -<symbol name="arrow/linear(spx)"> | ||
153 | -<path stroke="sym-stroke" pen="sym-pen"> | ||
154 | --1 0.333 m | ||
155 | -0 0 l | ||
156 | --1 -0.333 l | ||
157 | -</path> | ||
158 | -</symbol> | ||
159 | -<symbol name="arrow/fdouble(spx)"> | ||
160 | -<path stroke="sym-stroke" fill="white" pen="sym-pen"> | ||
161 | -0 0 m | ||
162 | --1 0.333 l | ||
163 | --1 -0.333 l | ||
164 | -h | ||
165 | --1 0 m | ||
166 | --2 0.333 l | ||
167 | --2 -0.333 l | ||
168 | -h | ||
169 | -</path> | ||
170 | -</symbol> | ||
171 | -<symbol name="arrow/double(spx)"> | ||
172 | -<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen"> | ||
173 | -0 0 m | ||
174 | --1 0.333 l | ||
175 | --1 -0.333 l | ||
176 | -h | ||
177 | --1 0 m | ||
178 | --2 0.333 l | ||
179 | --2 -0.333 l | ||
180 | -h | ||
181 | -</path> | ||
182 | -</symbol> | ||
183 | -<pen name="heavier" value="0.8"/> | ||
184 | -<pen name="fat" value="1.2"/> | ||
185 | -<pen name="ultrafat" value="2"/> | ||
186 | -<symbolsize name="large" value="5"/> | ||
187 | -<symbolsize name="small" value="2"/> | ||
188 | -<symbolsize name="tiny" value="1.1"/> | ||
189 | -<arrowsize name="large" value="10"/> | ||
190 | -<arrowsize name="small" value="5"/> | ||
191 | -<arrowsize name="tiny" value="3"/> | ||
192 | -<color name="red" value="1 0 0"/> | ||
193 | -<color name="green" value="0 1 0"/> | ||
194 | -<color name="blue" value="0 0 1"/> | ||
195 | -<color name="yellow" value="1 1 0"/> | ||
196 | -<color name="orange" value="1 0.647 0"/> | ||
197 | -<color name="gold" value="1 0.843 0"/> | ||
198 | -<color name="purple" value="0.627 0.125 0.941"/> | ||
199 | -<color name="gray" value="0.745"/> | ||
200 | -<color name="brown" value="0.647 0.165 0.165"/> | ||
201 | -<color name="navy" value="0 0 0.502"/> | ||
202 | -<color name="pink" value="1 0.753 0.796"/> | ||
203 | -<color name="seagreen" value="0.18 0.545 0.341"/> | ||
204 | -<color name="turquoise" value="0.251 0.878 0.816"/> | ||
205 | -<color name="violet" value="0.933 0.51 0.933"/> | ||
206 | -<color name="darkblue" value="0 0 0.545"/> | ||
207 | -<color name="darkcyan" value="0 0.545 0.545"/> | ||
208 | -<color name="darkgray" value="0.663"/> | ||
209 | -<color name="darkgreen" value="0 0.392 0"/> | ||
210 | -<color name="darkmagenta" value="0.545 0 0.545"/> | ||
211 | -<color name="darkorange" value="1 0.549 0"/> | ||
212 | -<color name="darkred" value="0.545 0 0"/> | ||
213 | -<color name="lightblue" value="0.678 0.847 0.902"/> | ||
214 | -<color name="lightcyan" value="0.878 1 1"/> | ||
215 | -<color name="lightgray" value="0.827"/> | ||
216 | -<color name="lightgreen" value="0.565 0.933 0.565"/> | ||
217 | -<color name="lightyellow" value="1 1 0.878"/> | ||
218 | -<dashstyle name="dashed" value="[4] 0"/> | ||
219 | -<dashstyle name="dotted" value="[1 3] 0"/> | ||
220 | -<dashstyle name="dash dotted" value="[4 2 1 2] 0"/> | ||
221 | -<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/> | ||
222 | -<textsize name="large" value="\large"/> | ||
223 | -<textsize name="Large" value="\Large"/> | ||
224 | -<textsize name="LARGE" value="\LARGE"/> | ||
225 | -<textsize name="huge" value="\huge"/> | ||
226 | -<textsize name="Huge" value="\Huge"/> | ||
227 | -<textsize name="small" value="\small"/> | ||
228 | -<textsize name="footnote" value="\footnotesize"/> | ||
229 | -<textsize name="tiny" value="\tiny"/> | ||
230 | -<textstyle name="center" begin="\begin{center}" end="\end{center}"/> | ||
231 | -<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/> | ||
232 | -<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/> | ||
233 | -<gridsize name="4 pts" value="4"/> | ||
234 | -<gridsize name="8 pts (~3 mm)" value="8"/> | ||
235 | -<gridsize name="16 pts (~6 mm)" value="16"/> | ||
236 | -<gridsize name="32 pts (~12 mm)" value="32"/> | ||
237 | -<gridsize name="10 pts (~3.5 mm)" value="10"/> | ||
238 | -<gridsize name="20 pts (~7 mm)" value="20"/> | ||
239 | -<gridsize name="14 pts (~5 mm)" value="14"/> | ||
240 | -<gridsize name="28 pts (~10 mm)" value="28"/> | ||
241 | -<gridsize name="56 pts (~20 mm)" value="56"/> | ||
242 | -<anglesize name="90 deg" value="90"/> | ||
243 | -<anglesize name="60 deg" value="60"/> | ||
244 | -<anglesize name="45 deg" value="45"/> | ||
245 | -<anglesize name="30 deg" value="30"/> | ||
246 | -<anglesize name="22.5 deg" value="22.5"/> | ||
247 | -<opacity name="10%" value="0.1"/> | ||
248 | -<opacity name="30%" value="0.3"/> | ||
249 | -<opacity name="50%" value="0.5"/> | ||
250 | -<opacity name="75%" value="0.75"/> | ||
251 | -<tiling name="falling" angle="-60" step="4" width="1"/> | ||
252 | -<tiling name="rising" angle="30" step="4" width="1"/> | ||
253 | -</ipestyle> | ||
254 | -<page> | ||
255 | -<layer name="alpha"/> | ||
256 | -<view layers="alpha" active="alpha"/> | ||
257 | -<path layer="alpha" matrix="1 0 0 1 -32 0" stroke="black" pen="ultrafat"> | ||
258 | -64 704 m | ||
259 | -320 704 l | ||
260 | -</path> | ||
261 | -<path matrix="1 0 0 1 -32 0" stroke="black" pen="ultrafat"> | ||
262 | -96 704 m | ||
263 | -32.249 0 0 -32.249 128 708 160 704 a | ||
264 | -</path> | ||
265 | -<path matrix="1 0 0 1 -32 0" stroke="black" pen="ultrafat"> | ||
266 | -208 704 m | ||
267 | -25.2982 0 0 -25.2982 232 696 256 704 a | ||
268 | -</path> | ||
269 | -<path matrix="1 0 0 1 -32 0" stroke="black" pen="ultrafat"> | ||
270 | -128 704 m | ||
271 | -77.746 0 0 -77.746 200 674.667 272 704 a | ||
272 | -</path> | ||
273 | -<path matrix="1 0 0 1 256 64" stroke="black" pen="ultrafat"> | ||
274 | -64 704 m | ||
275 | -320 704 l | ||
276 | -</path> | ||
277 | -<path matrix="1 0 0 1 256 64" stroke="black" pen="ultrafat"> | ||
278 | -208 704 m | ||
279 | -25.2982 0 0 -25.2982 232 696 256 704 a | ||
280 | -</path> | ||
281 | -<path matrix="1 0 0 1 256 64" stroke="black" pen="ultrafat"> | ||
282 | -128 704 m | ||
283 | -77.746 0 0 -77.746 200 674.667 272 704 a | ||
284 | -</path> | ||
285 | -<path matrix="1 0 0 1 256 -96" stroke="black" pen="ultrafat"> | ||
286 | -64 704 m | ||
287 | -320 704 l | ||
288 | -</path> | ||
289 | -<path matrix="1 0 0 1 256 -96" stroke="black" pen="ultrafat"> | ||
290 | -96 704 m | ||
291 | -32.249 0 0 -32.249 128 708 160 704 a | ||
292 | -</path> | ||
293 | -<text matrix="1 0 0 1 0 -16" transformations="translations" pos="64 688" stroke="black" type="label" width="202.242" height="17.213" depth="4.82" valign="baseline" size="Huge">structure $y$ with PK</text> | ||
294 | -<path stroke="black" pen="ultrafat" arrow="normal/normal"> | ||
295 | -256 736 m | ||
296 | -304 752 l | ||
297 | -</path> | ||
298 | -<path stroke="black" pen="ultrafat" arrow="normal/normal"> | ||
299 | -288 672 m | ||
300 | -320 640 l | ||
301 | -</path> | ||
302 | -<text matrix="1 0 0 1 32 -16" transformations="translations" pos="384 752" stroke="black" type="label" width="60.952" height="16.741" depth="4.02" valign="baseline" size="huge">level $y^1$</text> | ||
303 | -<text transformations="translations" pos="416 576" stroke="black" type="label" width="60.952" height="16.741" depth="4.02" valign="baseline" size="huge">level $y^2$</text> | ||
304 | -<text transformations="translations" pos="432 672" stroke="black" type="label" width="17.843" height="13.97" depth="1.57" valign="baseline" size="Huge">+</text> | ||
305 | -</page> | ||
306 | -</ipe> |
doc/levels.png
deleted
100644 → 0
19.8 KB
doc/logoIBISC.png
deleted
100644 → 0
14.9 KB
doc/main_bioinformatics.tex
0 → 100644
This diff is collapsed. Click to expand it.
doc/minisaclay.png
deleted
100644 → 0
4.5 KB
doc/motif_forcing_constraints.pdf
deleted
100644 → 0
No preview for this file type
doc/motif_forcing_constraints.tex
deleted
100644 → 0
This diff is collapsed. Click to expand it.
doc/natbib.bst
0 → 100644
This diff is collapsed. Click to expand it.
doc/references.bib
0 → 100644
This diff is collapsed. Click to expand it.
doc/supplementary_material.tex
0 → 100644
1 | +\documentclass{article} | ||
2 | +\usepackage[utf8]{inputenc} | ||
3 | +\usepackage{amsmath} | ||
4 | +\usepackage{stmaryrd} % llbracket, rrbracket | ||
5 | +\usepackage{siunitx} % SI units | ||
6 | +\usepackage{geometry} | ||
7 | +\usepackage{charter} % betterfont | ||
8 | + | ||
9 | +\geometry{top=1.5cm,bottom=1.5cm, left=2cm, right=2cm} | ||
10 | + | ||
11 | +\begin{document} | ||
12 | + | ||
13 | +\appendix | ||
14 | +\section{Linear constraints to model RNA Structure in a linear integer program} | ||
15 | +The constraints have been rewritten by us, but are inspired by works like IPknot, Biokop, and RNA-MoIP. | ||
16 | + | ||
17 | +\paragraph{Extended notations} ~ Here we repeat the definition of the variables that we already used in the article, and we use a few more, that also are defined:\\ | ||
18 | +Let $n$ be the number of nucleotides in the query RNA sequence $s$.\\ | ||
19 | +Let $M$ be the set of modules that could be inserted in $s$.\\ | ||
20 | +Let $x$ be a module of $M$, $\|x\|$ be the number of distinct components of $x$, and $p(x)$ the associated score of insertion given by JAR3D for that motif inserted at a particular position.\\ | ||
21 | +Let $P_{x,i}$ be the position in $s$ where we can insert the $i$th component of module $x$.\\ | ||
22 | +As the same module model can be inserted several times in $s$, several different $x$ modules in $M$ may refer to the same theoretical module, but inserted at different positions.\\ | ||
23 | +Let $k_{x,i}$ be the size in nucleotides of that $i$th component of $x$.\\ | ||
24 | +Let $y^u_v$ be the \textbf{decision boolean variable} indicating that $s[u]$ and $s[v]$ form a canonical base pairing. According to the standard loop model, we always have $v > u + 3$.\\ | ||
25 | +Let $C^x_i$ be the \textbf{decision boolean variable} indicating that we do insert the $i$th component of module $x$ at position $P_{x,i}$. | ||
26 | + | ||
27 | + | ||
28 | +Note that a base pair $y^u_v$ is possible if and only if $v>u+3$, and that we do not need to use two variables $y^u_v$ and $y_{vu}$ for the same pair. | ||
29 | +Then, we have $\sum_{i=4}^n (n-i)$ decision variables ($\approx \frac{1}{2}n^2$ decision variables) of the form $y^u_v$. | ||
30 | +Regarding the $C^x_i$, if we have an average insertion of $\nu$ motives by RNA sequence, the motives having in average $\mu$ components, components that can be inserted in average at $\pi$ different positions in $s$, | ||
31 | +then we need to add, in average, $\nu \times \mu \times \pi$ decision variables $C^x_i$. | ||
32 | + | ||
33 | +Then, we expect having around $\frac{1}{2}n^2+\nu \mu \pi$ decision variables. | ||
34 | + | ||
35 | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
36 | +\paragraph{Constraint to ensure there only is 0 or 1 canonical pairing by nucleotide} ~ | ||
37 | +\begin{equation} \label{constraint:1} | ||
38 | + \sum_{v<u} y^v_u + \sum_{v>u} y^u_v \leq 1 \qquad\qquad \forall u \in \llbracket 1,n \rrbracket | ||
39 | +\end{equation} | ||
40 | + | ||
41 | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
42 | +\paragraph{Constraints to forbid lonely base pairs} ~ | ||
43 | +% \begin{equation} \label{constraint:2} | ||
44 | +% \sum_{v=u}^n y^{u-1}_v - \sum_{v=u+1}^n y^u_v + \sum_{v=u+2}^n y^{u+1}_v \geq 0 \qquad \qquad \forall u \in \llbracket 1,n\rrbracket | ||
45 | +% \end{equation} | ||
46 | +% \begin{equation} \label{constraint:3} | ||
47 | +% \sum_{u=1}^{v-2} y^u_{v-1} - \sum_{u=1}^{v-1} y^u_v + \sum_{u=1}^{v} y^u_{v+1} \geq 0 \qquad \qquad \forall v \in \llbracket 1,n\rrbracket | ||
48 | +% \end{equation} | ||
49 | +% These conditions ensure that if a base pair exists with $s[i]$, | ||
50 | +% one of the adjacent bases is paired too. | ||
51 | +% Equation \ref{constraint:2} is useful if $s[u]$ is paired with $s[v>u]$ (a nucleotide later in the sequence), | ||
52 | +% and equation \ref{constraint:3} if $s[v]$ is paired with $s[u<v]$ (a nucleotide earlier in the sequence). | ||
53 | +\begin{equation} \label{constraint:2} | ||
54 | + y^{u-1}_{v+1} - y^u_v + y^{u+1}_{v-1} \geq 0 \qquad \qquad \forall (u,v) \in \{ (u,v) \in \llbracket 1,n\rrbracket^2 \; | \; u + 3 <v \} | ||
55 | +\end{equation} | ||
56 | +A basepair should be accompanied by one of its neighbours, forming a stable structure stabilized by stacking energies. In theory, this might add up to \( \frac{1}{2}n^2\) constraints, but in practice, this number is very reasonable as | ||
57 | +the only decision variables kept are those with probability above a $\theta$ threshold. | ||
58 | +Then, this condition sets to zero "lonely decision variables" who have no neighbour basepair variable allowed. | ||
59 | + | ||
60 | + | ||
61 | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
62 | +\paragraph{Constraint to forbid pairings inside a module component} ~ | ||
63 | +\begin{equation} \label{constraint:4} | ||
64 | + (k_{x,i}-2) \; C^x_i + \sum_{u=P_{x,i}+1}^{P_{x,i}+k_{x,i}-2}\left[ \sum_{v>u} y^u_v + \sum_{v<u} y^v_u \right] \leq (k_{x,i} - 2) | ||
65 | + \qquad \qquad \forall x \in M, i \in \llbracket 1,\|x\| \rrbracket | ||
66 | +\end{equation} | ||
67 | +If $C^x_i$ is set to 1, then the sum has to be zero. Obviously, this constraint prevents the program to correctly detect pseudoknots of HHH (kissing hairpins) and LL types (kissing higher-order loops), which is a limit of the approach. | ||
68 | + | ||
69 | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
70 | +\paragraph{Constraint to forbid component to overlap} ~ | ||
71 | +\begin{equation} \label{constraint:5} | ||
72 | + \sum_{x \in M} \sum_{i=1}^{\|x\|} C^x_i \times I(P_{x,i}<u<P_{x,i}+k_{x,i}-1) \leq 1 \qquad \qquad \forall u \in \llbracket 1,n \rrbracket | ||
73 | +\end{equation} | ||
74 | +$I(P_{x,i}<u<P_{x,i}+k_{x,i}-1)$ is a boolean value depending on the condition's truth. Then, whatever the nucleotide $u$, it can be part of a module component only once. | ||
75 | + | ||
76 | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
77 | +\paragraph{Constraints to respect the structure of large motives ($\{ x\in M \; | \; \|x\| \geq 2\}$)} ~ | ||
78 | + | ||
79 | +This constraint ensures that none or all the components of a motif are inserted. | ||
80 | +\begin{equation}\label{constraint:6} | ||
81 | + \sum_{i=2}^{\|x\|} C^x_i = (\|x\| - 1) \times C^{x}_{1} \qquad \qquad \forall x \in \{ x\in M \; | \; \|x\| \geq 2\} | ||
82 | +\end{equation} | ||
83 | + | ||
84 | +And then, we force base pairs between the end of a component and the beginning of the next one: | ||
85 | +\begin{equation}\label{constraint:7} | ||
86 | + C^x_1 \leq y^{P_{x,1}}_{P_{x,\|x\|}+k_{x,\|x\|}-1} \qquad \qquad \forall x \in \{ x\in M \; | \; \|x\| \geq 2\} | ||
87 | +\end{equation} | ||
88 | +\begin{equation}\label{constraint:8} | ||
89 | + C^x_j \leq y^{P_{x,j}+k_{x,j}-1}_{P_{x,j+1}} \qquad \qquad \forall x \in \{ x\in M \; | \; \|x\| \geq 2\}, \forall j \in \llbracket 1,\|x\| \llbracket | ||
90 | +\end{equation} | ||
91 | + | ||
92 | +Constraint \ref{constraint:7} binds the first nucleotide of first component to the last one of the last component. | ||
93 | +Constraint \ref{constraint:8} binds the last nucleotide of component $j$ to the first of component $j+1$. | ||
94 | + | ||
95 | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
96 | +\paragraph{Facultative constraint to forbid pseudoknots} ~ | ||
97 | +\begin{equation}\label{constraint:9} | ||
98 | + y^u_v + y^k_l \leq 1 \qquad \qquad \forall u,v,k,l \text{ such as } 1\leq u<k<v<l\leq n | ||
99 | +\end{equation} | ||
100 | + | ||
101 | +To limit the number of constraints added, we obviously define the condition for allowed basepairs only ($u + 3 <v$, $k + 3 <l$, $p_{uv} > \theta$, $p_{kl} > \theta$). | ||
102 | + | ||
103 | + | ||
104 | + | ||
105 | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
106 | +\paragraph{Constraint to forbid a previously found solution} ~ | ||
107 | + | ||
108 | +As several solutions may result in the same values of the two objectives, we can't forbid the algorithm to search twice the same region of the objective landscape. | ||
109 | +We have to explicitly forbid to find again every found solution.\\ | ||
110 | +We do it by adding iteratively, for every structure $s^*$ found, the following condition : | ||
111 | +\begin{equation}\label{constraint:10} | ||
112 | + \sum_{y^u_v \in \{ y^u_v | y^u_v = 1 \text{ in } s^* \}} (1 - y^u_v) + \sum_{y^u_v \in \{ y^u_v | y^u_v = 0 \text{ in } s^* \}} y^u_v + | ||
113 | + \sum_{C^x_i \in \{ C^x_i | C^x_i = 1 \text{ in } s^* \}} (1 - C^x_i) + \sum_{C^x_i \in \{ C^x_i |C^x_i = 0 \text{ in } s^* \}} C^x_i \geq 1 | ||
114 | +\end{equation} | ||
115 | + | ||
116 | +It ensures that at least one of the decision variables differs from $s^*$. | ||
117 | +\end{document} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment