BioJava:CookBookItaliano:Sequence:Edit

From BioJava

Jump to: navigation, search

Come posso modificare una Sequence o una SymbolList?

Molte volte si ha la necessità di modificare l'ordine dei simboli in una SymbolList o in una Sequence. Ad esempio si può voler eliminare, inserire o riscrivere alcune basi di una Sequenza di DNA. Le SymbolList BioJava hano un metodo chiamato edit(Edit e) che accetta come argomento un oggetto edit che effettuerà la modifica sulla SymbolList. L'oggetto Edit ammette un argomento che specifica da dove la modifica deve avvenire, quanti residui devono cambiare e la SymbolList con i residui aggiornati.

Vale la pena notare che molte implementazioni Biojava delle Sequence o delle SymbolList non permettono operazioni di modifica perchè potrebbero invalidare le Features o le Annotations sottostanti. La migliore strategia da utilizzare è quella di effettuare una copia dei Symbols della Sequence o della SymbolList e lavorare su quella.


import org.biojava.bio.seq.*;
import org.biojava.bio.symbol.*;
 
public class EditExamples {
  public static void main(String[] args) throws Exception{
 
    //creo una sequenza che ora non è modificabile
    Sequence seq = DNATools.createDNASequence("atggct", "seq");
 
    //effettuo una copia dei simboli utilizzando il "copy constructor"
    SimpleSymbolList syms = new SimpleSymbolList(seq);
 
    //voglio aggiungere alla fine della sequenza i simboli "cc", senza sovrascrivere alcun simbolo
    Edit e = new Edit(seq.length()+1, 0, DNATools.createDNA("cc"));
    //applico la modifica
    syms.edit(e);
    //verifico che la sequenza sia atggctcc
    System.out.println(syms.seqString());
 
    //voglio aggiungere all'inizio della sequenza i simboli "tt", senza sovrascrivere alcun simbolo
    e = new Edit(1, 0, DNATools.createDNA("tt"));
    syms.edit(e);
    //verifico che la sequenza sia ttatggctcc
    System.out.println(syms.seqString());
 
    //voglio aggiungere in posizione 4 della sequenza i simboli "aca", senza sovrascrivere alcun simbolo
    e = new Edit(4, 0, DNATools.createDNA("aca"));
    syms.edit(e);
    //should now be ttaacatggctcc
    System.out.println(syms.seqString());
 
    //voglio sovrascrivere in posizione 2 3 basi con "ggg"
    e = new Edit(2, 3, DNATools.createDNA("ggg"));
    syms.edit(e);
    //verifico che la sequenza sia tgggcatggctcc
    System.out.println(syms.seqString());
 
    //voglio eliminare dall'inizio della sequenza 5 basi (sovrascrivo 5 basi con nulla)
    e = new Edit(1, 5, SymbolList.EMPTY_LIST);
    syms.edit(e);
    //verifico che la sequenza sia atggctcc
    System.out.println(syms.seqString());
 
    //un ultimo esempio più complesso
 
    //sovrascriov la 2 e la 3 posizione con 'aa' e dopo inserisco 'tt'
    e = new Edit(2, 2, DNATools.createDNA("aatt"));
    syms.edit(e);
    //verifico che la sequenza sia aaattgctcc
    System.out.println(syms.seqString());
  }
}
Personal tools