COMPUTER SCIENCE

 

JAVA

 

R

 

XML

 

LINUX

 

OTHERS

 

BIOINFORMATICS

 

BIOJAVA

 

 

BIOSQL

 

 

MICROARRAY

 

 

MOTIF FINDING

 

 

REGULATION NETWORK

 

OTHERS

 

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

 

Maintainted by Wu Xin, CBI, Peking University, China, 2003