Skip to content

BioJava CoreModule #

Find similar titles

7회 업데이트 됨.

Edit
  • 최초 작성자
    ShabangBoy
  • 최근 업데이트
    green

Structured data

Category
Programming

BioJava의 Core Module #

BioJava의 Core Module은 BioJava가 제공하는 여러 모듈 중 가장 기본적이면서 필수적인 기능의 집합체라고 할 수 있다.

주요 기능 #

* biological sequence를 다루는 기본적인 작업
* 많이 사용되는 sequence 파일 형식에 대한 읽기와 쓰기
* DNA sequence를 protein sequence로 전환

설치 절차 #

BioJava는 빌드와 배포를 위해 Maven을 사용하며, BioJava 버전 4부터는 maven central에서 이용할 수 있다.

<dependencies>
    ...
    <dependency>
        <groupId>org.biojava</groupId>
        <artifactId>biojava-core</artifactId>
        <version>4.0.0<artifactId>
    </depenencies>

    <!-- 필요한 다른 biojava jars -->

 </dependencies>

기본 Sequence 유형 #

BioJava는 DNA, RNA, protein sequence 등 여러 종류의 biological sequence 유형을 지원한다

기본적인 sequence object 생성 #

DNA sequence 생성 #

DNASequence seq = new DNASequencee("GTAC");

DNA sequence는 Chromosome sequence, Gene sequence, Intron sequence, Exon sequence, Transcript sequence등으로 확장할 수 있다.

RNA sequence 생성 #

RNASequence seq = new RNASequencee("GTAC");

Protein sequence 생성 #

ProteinSequence seq = new RNASequencee("MSTNPKPQRKTKRNTNRRPQDVKFPGG");

Ambiguity codes #

Nucleotide sequence를 다루는 경우, 때로는 정확한 nucleotides가 알려지지 않은 경우도 있는데, BioJava에서는 이러한 모호한 경우를 위해서 standard convention을 지원한다. 예를 들어 A,T로 주로 구성된 nucleotide에 종종 W가 사용된다면, sequence의 compound 예상 set은 한 줄의 코드로 지원되는 ambiguity code로 전환할 수 있다.

// 이렇게 할 경우에는 에러 발생
DNASequence dna2 = new DNASequence("WWW");

// 그러나 이렇게는 동작함
AmbiguityDNACompoundSet ambiguityDNACompoundSet = 
    AmbiguityDNACompoundSet.getDNACompoundSet();
DNASequence dna2 = new DNASequence("WWW", ambiguityDNACompoundSet);

기본 sequence 유형의 읽기와 쓰기 #

FASTA #

빠른 방법은 FastaReaderHelper 클래스를 사용하여 FASTA 파일을 파싱하는 것이다. 아래의 예제는 UniProt FASTA 파일을 protein sequence로 파싱하는 예제 코드이다.

public static ProteinSequence getSequenceForId(String uniProtId) 
    throws Exception {

    URL uniprotFasta = new URL(String.format(
        "http://www.uniprot.org/uniprot/%s.fasta", uniProtId));
    ProteinSequence seq =
        FastaReaderHelper.readFastaProteinSequence
        (uniprotFasta.openStream()).get(uniProtId);

    System.out.printf("id : %s %s%s%s", uniProtId, seq,     
    System.getProperty("line.separator"), seq.getOriginalHeader());
    System.out.println();

    return seq;
}

BioJava에서는 대용량의 FASTA파일을 파싱하는 것도 가능하다. 아래 예제는 일반적인 메모리 설정 환경에서 1GB가 넘는 압축된 TREMBL파일을 파싱하는 예제이다.

/** Download a large file, e.g. ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_trembl.fasta.gz
 * and pass in path to local location of file
 *
 * @param args
 */
    public static void main(String[] args) {

        if ( args.length < 1) {
            System.err.println("First argument needs to be path
                to fasta file");
            return;
        }

        File f = new File(args[0]);

        if ( ! f.exists()) {
            System.err.println("File does not exist " + args[0]);
            return;
        }

        try {

            // automatically uncompresses files 
            // using InputStreamProvider
            InputStreamProvider isp = new InputStreamProvider();

            InputStream inStream = isp.getInputStream(f);

            FastaReader<ProteinSequence, AminoAcidCompound> fastaReader
                = new FastaReader<ProteinSequence, AminoAcidCompound>(
                  inStream, new 
                  GenericFastaHeaderParser<ProteinSequence, 
                  AminoAcidCompound>(), new
                            ProteinSequenceCreator(
                                AminoAcidCompoundSet.
                                getAminoAcidCompoundSet()));

            LinkedHashMap<String, ProteinSequence> b;

            int nrSeq = 0;

            while ((b = fastaReader.process(10)) != null) {
                for (String key : b.keySet()) {
                    nrSeq++;
                    System.out.println(nrSeq + " : " + key + 
                    " " + b.get(key));
                }

            }
        } catch (Exception ex) {
            Logger.getLogger(ParseFastaFileDemo.class.getName()).
            log(Level.SEVERE, null, ex);
        }
    }

참고(원문) 사이트 : BioJava 공식 튜토리얼 #

https://github.com/biojava/biojava-tutorial/tree/master/core

(본 글은 BioJava 공식 튜토리얼의 일부 내용을 한글로 번역하여 작성한 것입니다.)

Suggested Pages #

0.0.1_20230725_7_v68