|
COMPUTER SCIENCE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BIOINFORMATICS
|
|
|
|
|
|
|
|
|
|
REGULATION NETWORK
|
|
|
|
LIFE SCIENCE
|
|
|
|
|
我如何使用一个权重矩阵来寻找一个模体?
一个权重矩阵能很好的展示一个比对结果或者是一个模体。他也能被用来作为一个打分矩阵在一条序列中搜索相似的模体。Biojava的org.biojava.bio.dp包中包含了一个叫做权重矩阵的类。还有一个使用权重矩阵的权重矩阵注释器。
当搜索结果的分值超过一定的阈值时,能够往序列的任何部分添加特征。下面的程序从一个比对中获得一个权重矩阵,在用这个矩阵将超过0.1分值的结果作为特征注释这条序列。
import java.util.*;
import org.biojava.bio.dist.*;
import org.biojava.bio.dp.*;
import org.biojava.bio.seq.*;
import org.biojava.bio.symbol.*;
public class WeightMatrixDemo {
public static void main(String[] args) throws Exception {
// 进行一个模体的比对
Map map = new HashMap();
map.put("seq0", DNATools.createDNA("aggag"));
map.put("seq1", DNATools.createDNA("aggaa"));
map.put("seq2", DNATools.createDNA("aggag"));
map.put("seq3", DNATools.createDNA("aagag"));
Alignment align = new SimpleAlignment(map);
// 创建一个模体分布数组
Distribution[] dists = DistributionTools.distOverAlignment(align,false,0.01);
// 创建一个权重矩阵
WeightMatrix matrix = new SimpleWeightMatrix(dists);
// 需要打分的序列
Sequence seq = DNATools.createDNASequence("aaagcctaggaagaggagctgat","seq");
// 用这个权重矩阵设定阈值0.1来注释这条序列
WeightMatrixAnnotator wma = new WeightMatrixAnnotator(matrix,0.1);
seq = wma.annotate(seq);
// 输出匹配信息
for(Iterator it = seq.features(); it.hasNext(); ) {
Feature f = (Feature)it.next();
Location loc = f.getLocation();
System.out.println("Match at " + loc.getMin()+"-"+loc.getMax());
System.out.println("\tscore : "+f.getAnnotation().getProperty("score"));
}
}
}
--BACK TO TOP
|