BioJava:CookbookFrench:Sequence:Edit
Comment éditer une Sequence?
Il est parfois nécessaire de modifier l’ordre des Symbols dans une SymbolList ou une Sequence comme par exemple, d’enlever, ajouter ou modifier des bases dans une séquence d’ADN. Les SymbolLists de Biojava ont une méthode appelée edit(Edit e) qui prend un objet Edit et exécute cette modification sur la SymbolList. L’objet Edit prends des arguments qui spécifient où la modification devrait commencer, combien d’éléments seront changés et une SymbolList qui va remplacer ces éléments.
Il vaut la peine de mentionner que plusieurs des implémentations Biojava de Sequence et de SymbolList ne permettent pas de faire des modifications, parce que celles-ci pourraient invalider des caractéristiques (Features) et des notes (Annotations) qui en dépendent. La meilleure stratégie dans ce cas est de faire une copie des Symbols dans la Sequence ou SymbolList et modifier la copie. Ceci est démontré dans l’example de code ci-dessous.
```java import org.biojava.bio.seq.*; import org.biojava.bio.symbol.*;
public class EditExamples {
public static void main(String[] args) throws Exception{
// il est impossible de modifier la séquence
Sequence seq = DNATools.createDNASequence("atggct", "seq");
// donc il est nécessaire de faire une copie de ses Symbols
// en utilisant un "constructeur de copie"
SimpleSymbolList syms = new SimpleSymbolList(seq);
// ajouter à la fin, en effaçant 0 symbols, "cc"
Edit e = new Edit(seq.length()+1, 0, DNATools.createDNA("cc"));
// appliquer la modification
syms.edit(e);
// devrait afficher la chaîne atggctcc
System.out.println(syms.seqString());
// ajouter au début, en effaçant 0 symbols, "tt"
e = new Edit(1, 0, DNATools.createDNA("tt"));
syms.edit(e);
//devrait être ttatggctcc
System.out.println(syms.seqString());
//insérer à la position 4, en effacant 0 symbols, "aca"
e = new Edit(4, 0, DNATools.createDNA("aca"));
syms.edit(e);
// devrait être ttaacatggctcc
System.out.println(syms.seqString());
// insérer à la position 2 en remplaçant 3 bases avec "ggg"
e = new Edit(2, 3, DNATools.createDNA("ggg"));
syms.edit(e);
// devrait afficher la chaîne tgggcatggctcc
System.out.println(syms.seqString());
// enlever les 5 premières bases (remplacer 5 bases avec rien)
e = new Edit(1, 5, SymbolList.EMPTY_LIST);
syms.edit(e);
// devrait afficher la chaîne atggctcc
System.out.println(syms.seqString());
// maintenant un example plus compliqué
// remplacer les positions 2 and 3 avec aa et après y insérer tt
e = new Edit(2, 2, DNATools.createDNA("aatt"));
syms.edit(e);
// devrait afficher la chaîne aaattgctcc
System.out.println(syms.seqString());
}
} ```