From b830fded272bef0e48cfc9c75114c94dba5a5179 Mon Sep 17 00:00:00 2001 From: Samuel Ortion Date: Fri, 15 Mar 2024 09:16:50 +0100 Subject: [PATCH] Add motif search automata --- figures/part1/motif_search_automaton.pdf | 3 + figures/part1/motif_search_automaton.tex | 42 ++++++++++++++ figures/part1/motif_search_automaton_bis.pdf | 3 + figures/part1/motif_search_automaton_bis.tex | 61 ++++++++++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 figures/part1/motif_search_automaton.pdf create mode 100644 figures/part1/motif_search_automaton.tex create mode 100644 figures/part1/motif_search_automaton_bis.pdf create mode 100644 figures/part1/motif_search_automaton_bis.tex diff --git a/figures/part1/motif_search_automaton.pdf b/figures/part1/motif_search_automaton.pdf new file mode 100644 index 0000000..d4553e5 --- /dev/null +++ b/figures/part1/motif_search_automaton.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53b263eacece1fa3402f78ba9157b23888fd6c91a9128bde5f71f4bceb636165 +size 20747 diff --git a/figures/part1/motif_search_automaton.tex b/figures/part1/motif_search_automaton.tex new file mode 100644 index 0000000..399d832 --- /dev/null +++ b/figures/part1/motif_search_automaton.tex @@ -0,0 +1,42 @@ +\documentclass[tikz]{standalone} + +\usepackage{tikz} + +\begin{document} +\usetikzlibrary{automata,positioning} + +\iffalse + Let $M = $ ACACT be a motif. + $\Sigma = \{ACT\}$ + \fi +\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid, auto] +% TODO + \node[state, initial] (q_0) {$q_{0}$}; + \node[state,right=of q_0] (q_1) {$q_{1}$}; + \node[state,right=of q_1] (q_2) {$q_{2}$}; + \node[state,right=of q_2] (q_3) {$q_{3}$}; + \node[state,right=of q_3] (q_4) {$q_{4}$}; + \node[state,right=of q_4,accepting] (q_5) {$q_{5}$}; + + % M itself + \path[->] (q_0) edge node {A} (q_1) + (q_1) edge node {C} (q_2) + (q_2) edge node {A} (q_3) + (q_3) edge node {C} (q_4) + (q_4) edge node {T} (q_5); + + + % Make it complete so that it recognize all motif in the sequence + \path[->] (q_0) edge[loop above] node {C, T} (q_1); + \path[->] (q_1) edge[loop above] node {A} (q_1); + \path[->] (q_1) edge[bend left=30] node {T} (q_0); + \path[->] (q_2) edge[bend left=30] node {C, T} (q_0); + \path[->] (q_3) edge[bend right=30] node[above] {A} (q_1); + \path[->] (q_3) edge[bend left=40] node {T} (q_0); + \path[->] (q_4) edge[bend right=50] node[above] {A} (q_3); + \path[->] (q_4) edge[bend left=40] node {C} (q_0); + \path[->] (q_5) edge[bend right=40] node[above] {A} (q_1); + \path[->] (q_5) edge[bend left=50] node {C,T} (q_0); +\end{tikzpicture} + +\end{document} diff --git a/figures/part1/motif_search_automaton_bis.pdf b/figures/part1/motif_search_automaton_bis.pdf new file mode 100644 index 0000000..599abdc --- /dev/null +++ b/figures/part1/motif_search_automaton_bis.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05eb655ddded590285eb6415ddff7aa500fc6407ff93e9b2c0321349d1c2350b +size 21431 diff --git a/figures/part1/motif_search_automaton_bis.tex b/figures/part1/motif_search_automaton_bis.tex new file mode 100644 index 0000000..e17a508 --- /dev/null +++ b/figures/part1/motif_search_automaton_bis.tex @@ -0,0 +1,61 @@ +\documentclass[tikz]{standalone} + +\usepackage{tikz} + +\begin{document} +\usetikzlibrary{automata,positioning} + +\iffalse + Let $M = $ CCATCAT be a motif. + $\Sigma = \{A,C,T\}$ + \fi +\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid, auto] + \node[state, initial] (q_0) {$q_{0}$}; + \node[state,right=of q_0] (q_1) {$q_{1}$}; + \node[state,right=of q_1] (q_2) {$q_{2}$}; + \node[state,right=of q_2] (q_3) {$q_{3}$}; + \node[state,right=of q_3] (q_4) {$q_{4}$}; + \node[state,right=of q_4] (q_5) {$q_{5}$}; + \node[state,right=of q_5] (q_6) {$q_{6}$}; + \node[state,right=of q_6,accepting] (q_7) {$q_{7}$}; + + % M itself + \path[->] (q_0) edge node {C} (q_1) + (q_1) edge node {C} (q_2) + (q_2) edge node {A} (q_3) + (q_3) edge node {T} (q_4) + (q_4) edge node {C} (q_5) + (q_5) edge node {A} (q_6) + (q_6) edge node {T} (q_7) + ; + + + % % Make it complete so that it recognize all motif in the sequence + % \path[->] (q_0) edge[loop above] node {C, T} (q_1); + % \path[->] (q_1) edge[loop above] node {A} (q_1); + % \path[->] (q_1) edge[bend left=30] node {T} (q_0); + % \path[->] (q_2) edge[bend left=30] node {C, T} (q_0); + % \path[->] (q_3) edge[bend right=40] node[above] {A} (q_1); + % \path[->] (q_3) edge[bend left=40] node {T} (q_0); + % \path[->] (q_4) edge[bend right=50] node[above] {A} (q_3); + % \path[->] (q_4) edge[bend left=40] node {C} (q_0); + % \path[->] (q_5) edge[bend right=40] node[above] {A} (q_1); + % \path[->] (q_5) edge[bend left=50] node {C,T} (q_0); + + + \path[->] (q_0) edge [loop above] node {A,T} (q_0); + \path[->] (q_1) edge [bend right=40] node {A, T} (q_0); + \path[->] (q_2) edge [bend right=40] node {C} (q_1); + \path[->] (q_2) edge [bend right=40] node {T} (q_0); + \path[->] (q_3) edge [bend right=40] node {A} (q_0); + \path[->] (q_3) edge [bend right=40] node {C} (q_1); + \path[->] (q_4) edge [bend right=40] node {A, T} (q_0); + \path[->] (q_5) edge [bend left=40] node[above] {C} (q_1); + \path[->] (q_5) edge [bend left=40] node[above] {T} (q_0); + \path[->] (q_6) edge [bend left=40] node[above] {A} (q_0); + \path[->] (q_6) edge [bend right=40] node {C} (q_1); + \path[->] (q_7) edge [bend right=40] node {A, C, T} (q_0); + +\end{tikzpicture} + +\end{document}