有时候你可能希望改变序列或标志链的标志次序.例如你可能希望能删除或者插入或者重写DNA序列中的碱基.
Biojava标志链有一个edit(Edit e)方法,能够以Edit对象为参数编辑标志链.Edit对象需要编辑起始位置,编辑数量为参数来编辑序列.
需要注意的是:很多Biojava序列或标志链不允许编辑操作,因为这样会破坏序列的注释和特征.最好的策略是拷贝序列一个副本,然后对这个副本进行编辑操作.下面的程序体现了这点.
[code lang="java"]
import org.biojava.bio.seq.*;
import org.biojava.bio.symbol.*;
public class EditExamples {
public static void main(String[] args) throws Exception {
// 你不能真正的编辑这条序列
Sequence seq = DNATools.createDNASequence("atggct", "seq");
// 所以需要这条序列的一个拷贝,利用拷贝构造器
SimpleSymbolList syms = new SimpleSymbolList(seq);
// 将"cc"加到序列末尾,覆盖0个碱基
Edit e = new Edit(seq.length()+1, 0, DNATools.createDNA("cc"));
// 应用Edit对象
syms.edit(e);
// 现在序列是"ttatggctcc"
System.out.println(sym.seqString());
// 将"aca"插入第四个位置,覆盖0个碱基
e = new Edit(4,0,DNATools.createDNA("aca"));
syms.edit(e);
// 用"ggg"覆盖在第二个位置开始的三个碱基
e = new Edit(2,3,DNATools.createDNA("ggg"));
syms.edit(e);
// 现在应该是"tgggcatggctcc"
System.out.println(syms.seqString());
// 删除开始的五个碱基
e = new Edit(1,5, SymbolList.EMPTY_LIST);
syms.edit(e);
// 现在应该是"atggctcc"
System.out.println(syms.seqString());
// 一个更复杂的例子
// 用"aa"覆盖位置2,3的碱基然后插入"tt"
e = new Edit(2,2,DNATools.createDNA("aatt"));
syms.edit(e);
// 现在应该是"aaattgctcc"
System.out.println(syms.seqString());
}
}
[/code]