BioJava official Homepage : http://www.biojava.org
1. 서열정보
* BioJava의 서열 관련 클래스는 모두 index가 1부터 시작된다.
SymbolList 클래스
: 각 서열 Alphabet을 구성하는 Symbol 객체를 가리키는 참조변수로 이루어진다.
따라서, Symbol 객체(DNA, RNA, Protein)가 정의되어 있어야 하고, 아래와 같이 접근.
FiniteAlphabet dna=DNATools.getDNA();
FiniteAlphabet rna=DNATools.getRNA();
FiniteAlphabet protein=ProteinTools.getAlphabet();
Exam)SymbolList 이용한 서열 객체 생성
import org.biojava.bio.seq.*;
import org.biojava.bio.symbol.*;
try{
SymbolList dan=DNATools.createDNA("agtagcgcgta");
}catch(IllegalSymbolException ex){}
Exam)SymbolList 객체를 구성하는 Symbol 객체의 이름 접근
SymbolList dan=DNATools.createDNA("agtagcgcgta");
for(int i=1;i<=dna.length();i++){ //index는 1부터 시작한다. 0이 아니다.
Symbol base=dna.symbolAt(i); // i번째 SymbolList 참조자가 가리키는 Symbol 객체 반환
System.out.println(base.getName()); //Symbol base의 이름 출력(예, a=adenine)
}
Sequence 클래스
:SymbolList와 달리 생물학적 서열을 표현하기 위한 여러 abstract method를 가진다.
Exam) Sequence 객체 생성
try{
Sequence dna=DNAtools.createDNASequence("agtagcgat","DNA_sequence");
}
Exam) FASTA file 읽기
try{
BufferedReader read=new BufferedReader(new FileReader(filename));
SequenceIterator seq=SeqIOTools.readFastaDNA(read); // Genbank 파일일 경우 readGenbank() 이용.
while(seq.hasNext()){
Sequence dna=seq.nextSequence();
//출력 or other 작업
}
}
2. Annotation을 위한 class
Annotation 클래스
:SeqIOTools로 읽은 서열 정보는 각 Feature에 따라 객체에 저장되며,
다양한 Method들을 통해 이들에 접근할 수 있다.
Exam) Genbank 파일의 각 Feature에 따른 정보 출력
SequenceIterator seq=SeqIOTools.readGenbankDNA(read);
while(seq.hasNext()){
Sequence dna=seq.nextSequence();
Annotation anno=dna.getAnnotation();
Iterator key=anno.keys().iterator();
while(key.hasNext()){
Object ob=key.next();
System.out.println(ob.toString()+"="+anno.getProperty(ob));
}
}
Feature 클래스
:하나의 feature에도 위치 정보등 여러 unit의 정보가 저장된다. BioJava에서는 feature 항목과
이에 해당하는 정보 자체를 모두 저장하고, Feature 클래스를 통해 각각 접근할 수 있다.
Exam)위의 exam과 같은 context에서 feature 정보 출력
while(seq.hasNext()){
Sequence dna=seq.nextSequence();
Iterator feature_iter=dna.features();
while(feature_iter.hasNext()){
Feature f=(Feature)(feature_iter.next());
Annotation anno=f.getAnnotation();
System.out.println(f.getType()+"="+anno); //feature type(예, species, sequence, LOCUS)과 이에 해당하는 annotaion 출력
}
}
3. PDB file parsing
import org.biojava.bio.structure.*;
import org.biojava.bio.structure.io.*;
try{
PDBFileReader read=new PDBFileReader();
Structure pdb=read.getStructure(seqfile);
System.out.println("PDB code :"+pdb.getPDBCode());
for(int i=0;i< pdb.nrModels();i++){
ArrayList chains=pdb.getChains(i);
for(Iterator iter=chains.iterator();iter.hasNext();){
Chain c=(Chain)(iter.next());
System.out.println("Chain :"+c.getName()+"\n"+c.getSequence());
Atom a=c.getGroup(0).getAtom(0);
System.out.println("a.getPDBserial()+a.getX()+a.getY()+a.getZ());
}
}
}catch(IOException){}
catch(StructureException){}
No comments:
Post a Comment