]> AND Private Git Repository - chloroplast13.git/blobdiff - annotated.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Some further minor corrections
[chloroplast13.git] / annotated.tex
index 9d98987f93da1dcd098484538e1d31921123625b..8cc8016578e3561089b2c6ebc0ab006c4251bde7 100644 (file)
@@ -190,9 +190,9 @@ to extract core genes, as explained in Algorithm \ref{Alg3:thirdM}.
 \STATE $geneList=\text{empty list}$
 \STATE $common=set(dir(NCBI\_Genes)) \cap set(dir(Dogma\_Genes))$
 \FOR{$\text{gene in common}$}
-       \STATE $gen1 \leftarrow open(NCBI\_Genes(gene)).read()$         
-       \STATE $gen2 \leftarrow open(Dogma\_Genes(gene)).read()$
-       \STATE $score \leftarrow geneChk(gen1,gen2)$
+       \STATE $g1 \leftarrow open(NCBI\_Genes(gene)).read()$   
+       \STATE $g2 \leftarrow open(Dogma\_Genes(gene)).read()$
+       \STATE $score \leftarrow geneChk(g1,g2)$
        \IF {$score > Threshold$}
                \STATE $geneList \leftarrow gene$
        \ENDIF 
@@ -207,16 +207,16 @@ and {\it reverse complement}. Algorithm~\ref{Alg3:genechk} gives the outline of
 geneChk subroutine.
 
 \begin{algorithm}[H]
-\caption{Find the maximum similarity score between two sequences}
+\caption{Find the Maximum Similarity Score between two sequences}
 \label{Alg3:genechk}
 \begin{algorithmic} 
-\REQUIRE $gen1,gen2 \leftarrow \text{NCBI gene sequence, Dogma gene sequence}$
+\REQUIRE $g1,g2 \leftarrow \text{NCBI gene sequence, Dogma gene sequence}$
 \ENSURE $\text{Maximum similarity score}$
-\STATE $Score1 \leftarrow needle(gen1,gen2)$
-\STATE $Score2 \leftarrow needle(gen1,Reverse(gen2))$
-\STATE $Score3 \leftarrow needle(gen1,Complement(gen2))$
-\STATE $Score4 \leftarrow needle(gen1,Reverse(Complement(gen2)))$
-\RETURN $max(Score1, Score2, Score3, Score4)$
+\STATE $score1 \leftarrow needle(g1,g2)$
+\STATE $score2 \leftarrow needle(g1,Reverse(g2))$
+\STATE $score3 \leftarrow needle(g1,Complement(g2))$
+\STATE $score4 \leftarrow needle(g1,Reverse(Complement(g2)))$
+\RETURN $max(score1,score2,score3,score4)$
 \end{algorithmic}
 \end{algorithm}  
 
@@ -230,124 +230,99 @@ to   one   genome.   Hence,   an   element   of   the  matrix   stores
 the  \textit{Intersection Score}  (IS):  the cardinality  of the  core
 genes   set  obtained   by  intersecting   one  genome   with  another
 one. Maximum  cardinality results in selecting the  two genomes having
-the maximum score. Mathematically speaking, if we have an $n \times n$
-matrix where $n$ is the number  of genomes in local database, then let
-us consider:
-
+the maximum score. Mathematically speaking, if we have $n$ genomes in
+local database, the ICM is an $n \times n$ matrix whose elements
+satisfy: 
 \begin{equation}
-Score=\max_{i<j}\vert x_i \cap x_j\vert
+score_{ij}=\vert g_i \cap g_j\vert
 \label{Eq1}
 \end{equation}
-
-% TO BE CONTINUED
-
-\noindent where $x_i, x_j$ are elements in the matrix. The generation of 
-a new core genes is depending on the cardinality value of intersection 
-scores, we call it \textit{Score}:
-$$
-\text{New Core} = 
-\begin{cases}
-\text{Ignored} & \text{if $\textit{Score}=0$;} \\
-\text{new Core id} & \text{if $\textit{Score}>0$.}
-\end{cases}
-$$
-
-if     $\textit{Score}=0$     then     we    have     \textit{disjoint
-relation} \emph{i.e.},  no common genes between two  genomes.  In this
-case  the  system  ignores  the   genome  that  annul  the  core  gene
-size. Otherwise, The system removes these two genomes from ICM and add
-new  core  genome  with a  \textit{coreID}  of  them  to ICM  for  the
-calculation in  next iteration. This  process reduces the size  of ICM
-and repeats until all genomes  are treated \emph{i.e.} ICM has no more
-genomes.  We observe  that ICM is very large because  of the amount of
-data that it stores. This results  to be time and memory consuming for
-calculating  the  intersection  scores.   To  increase  the  speed  of
-calculations, it  is sufficient to  only calculate the  upper triangle
-scores. The time complexity for this process after enhancement is thus
-$O(\frac{n.(n-1)}{2})$.   Algorithm   \ref{Alg1:ICM}  illustrates  the
-construction of  the ICM matrix and  the extraction of  the core genes
-where \textit{GenomeList},  represents the database  where all genomes
-data are stored. At each iteration, it computes the maximum core genes
-with its two genomes parents.
+\noindent where $1 \leq i \leq n$, $1 \leq j \leq n$, and $g_i, g_j$ are 
+genomes. The  generation of a new  core gene depends  obviously on the
+value  of the  intersection scores  $score_{ij}$. More  precisely, the
+idea is  to consider a  pair of genomes  such that their score  is the
+largest element in ICM. These two genomes are then removed from matrix
+and the  resulting new  core genome is  added for the  next iteration.
+The ICM is then updated to take into account the new core gene: new IS
+values are computed for it. This process is repeated until no new core
+gene can be obtained.
+
+We  can observe  that  the ICM  is very  large  due to  the amount  of
+data. As a consequence, the  computation of the intersection scores is
+both  time and  memory consuming.  However,  since ICM  is a  symetric
+matrix we can reduce the  computation overhead by considering only its
+triangular  upper part.  The  time complexity  for this  process after
+enhancement is thus $O(\frac{n.(n-1)}{2})$.  Algorithm ~\ref{Alg1:ICM}
+illustrates the construction  of the ICM matrix and  the extraction of
+the  core  genes, where  \textit{GenomeList}  represents the  database
+storing all genomes  data. At each iteration, it  computes the maximum
+core genes with its two genomes parents.
+
+% ALGORITHM HAS BEEN REWRITTEN
 
 \begin{algorithm}[H]
 \caption{Extract Maximum Intersection Score}
 \label{Alg1:ICM}
 \begin{algorithmic} 
 \REQUIRE $L \leftarrow \text{genomes vectors}$
-\ENSURE $B1 \leftarrow Max core vector$ 
+\ENSURE $B1 \leftarrow Max Core Vector$ 
 \FOR{$i \leftarrow 0:len(L)-1$}
+        \STATE $score \leftarrow 0$
        \STATE $core1 \leftarrow set(GenomeList[L[i]])$
-       \STATE $score1 \leftarrow 0$
-       \STATE $g1,g2 \leftarrow$ " "
+       \STATE $g1 \leftarrow L[i]$
        \FOR{$j \leftarrow i+1:len(L)$}
-               \STATE $core2 \leftarrow set(GenomeList[L[i]])$
-               \IF{$i < j$}
-                       \STATE $Core \leftarrow core1 \cap core2$
-                       \IF{$len(Core) > score1$}
-                               \STATE $g1 \leftarrow L[i]$
-                               \STATE $g2 \leftarrow L[j]$
-                               \STATE $Score \leftarrow len(Core)$
-                       \ELSIF{$len(Core) == 0$}
-                               \STATE $g1 \leftarrow L[i]$
-                               \STATE $g2 \leftarrow L[j]$
-                               \STATE $Score \leftarrow -1$
-                       \ENDIF
-               \ENDIF
+               \STATE $core2 \leftarrow set(GenomeList[L[j]])$
+               \STATE $Core \leftarrow core1 \cap core2$
+               \IF{$len(Core) > score$}
+                  \STATE $score \leftarrow len(Core)$
+                 \STATE $g2 \leftarrow L[j]$
+                \ENDIF
        \ENDFOR
-       \STATE $B1[score1] \leftarrow (g1,g2)$
+       \STATE $B1[score] \leftarrow (g1,g2)$
 \ENDFOR
 \RETURN $max(B1)$
 \end{algorithmic}
 \end{algorithm}
 
-\subsection{Features Visualization}
+\subsection{Features visualization}
 
 The goal is to visualize results  by building a tree of evolution. All
 core  genes generated  represent  important information  in the  tree,
 because they  provide information about  the ancestors of two  or more
 genomes. Each  node in the  tree represents one chloroplast  genome or
 one predicted core called \textit{(Genes count:Family name\_Scientific
-names\_Accession number)},  while an edge  is labeled with  the number
-genes lost from a leaf genome or an intermediate core gene.
-
-
-The number of lost genes here can represent an important factor
-for evolution:  it represents how much  is the lost of  genes from the
-species belongs  to same  or different families.  By the  principle of
-classification, a  small number of  gene lost among  species indicates
+names\_Accession number)}, while an edge is labeled with the number of
+lost  genes from  a leaf  genome or  an intermediate  core  gene. Such
+numbers are  very interesting because  they give an  information about
+the evolution:  how many genes  were lost between two  species whether
+they  belong  to  the  same  familie  or not.   By  the  principle  of
+classification, a  small number of genes lost  among species indicates
 that those species are close to  each other and belong to same family,
-while big genes  lost means that we have  an evolutionary relationship
-between species  from different families. To see  the picture clearly,
-Phylogenetic  tree  is an  evolutionary  tree  generated  also by  the
-system. Generating  this tree  is based on  the distances  among genes
-sequences. There are  many resources to build such  tree (for example:
+while a  large lost  means that we  have an  evolutionary relationship
+between species  from different families. To depict  the links between
+species   clearly,  we   built   a  phylogenetic   tree  showing   the
+relationships based on the distances among genes sequences. Many tools
+are    available   to    obtain    a   such    tree,   for    example:
 PHYML\cite{guindon2005phyml},
-RAxML{\cite{stamatakis2008raxml,stamatakis2005raxml},   BioNJ,  and
-TNT\cite{goloboff2008tnt}}.       
-
-We use
-RAxML\cite{stamatakis2008raxml,stamatakis2005raxml} because it is fast
-and  accurate  for  build  large  trees for  large  count  of  genomes
-sequences. 
-
-The  procedure of constructing phylogenetic  tree stated in
-the following steps:
+RAxML{\cite{stamatakis2008raxml,stamatakis2005raxml},    BioNJ,    and
+TNT\cite{goloboff2008tnt}}.    In   this  work,   we   chose  to   use
+RAxML\cite{stamatakis2008raxml,stamatakis2005raxml}   because   it  is
+fast, accurate,  and can build large  trees when dealing  with a large
+number of genomic sequences.
 
+The procedure used to built a phylogenetic tree is as follows:
 \begin{enumerate}
-\item Extract gene sequence for all gene in all core genes, store it in database.
-\item Use multiple alignment tool such as (****to be write after see christophe****) to align these sequences with each others.
-\item aligned genomes sequences then submitted to RAxML program to compute the distances and draw phylogenetic tree.
+\item For each gene in a core gene, extract its sequence and store it in the database.
+\item Use multiple alignment tools such as (****to be write after see christophe****) 
+to align these sequences with each others.
+\item Submit the resulting aligned sequences to RAxML program to compute the distances and finally draw the phylogenetic tree.
 \end{enumerate} 
 
 \begin{figure}[H]
-  \centering
-    \includegraphics[width=0.7\textwidth]{Whole_system}
-    \caption{Total overview of the system pipeline}\label{wholesystem}
+  \centering \includegraphics[width=0.75\textwidth]{Whole_system}
+  \caption{Overview of the pipeline}\label{wholesystem}
 \end{figure}
 
-% STOP HERE
-
 \section{Implementation}
 We implemented four algorithms to extract maximum core genes from large amount of chloroplast genomes. Two algorithms used to extract core genes based on NCBI annotation, and the others based on dogma annotation tool. Evolutionary tree generated as a result from each method implementation. In this section, we will present the four methods, and how they can extract maximum core genes?, and how the developed code will generate the evolutionary tree.