Bioconductor의 AnnotationDbi 패키지 콘텐츠의 sqlite 데이터베이스 추출을 루비 등 다른 언어로 활용 고려

개시하다
생명과학의 컴퓨터 분석에서 R 언어는 광범위하게 사용된다.Bioconductor 프로젝트는 고품질의 포장군을 지원하고 있다.Bioconductor에서 기본적인 데이터 구조는 공통된 것을 이용하여 일치된 시스템을 구축했다.예를 들어 유전자 그룹 범위를 처리하는 소프트웨어 패키지GenomicRanges 중바이오conductor가 가장 자주 사용하는 소프트웨어 패키지 중 하나이다.그러나 다른 언어로 생물 정보를 진행하려면 이런 기초적인 소프트웨어 패키지와 프로그램 라이브러리가 존재하지 않아 힘들다.

  • Bioconductor Top75 - 가장 많이 사용하는 가방 75종.
  • Bioconductor를 구성하는 패키지에는 처리 데이터베이스의 분류가 있습니다.이것들은 AnnotationData로 분류됩니다.
    AnnotationDbi
    R 언어를 잘 몰라 자세한 조사는 없었지만, 이들 데이터베이스를 처리하는 패키지는 AnnotationDbi에 의존했다.여기서 예를 들어 우리는 다른 언어(이곳은 루비언어)에서 사용하기를 고려한다org.Hs.eg.db.
    org.Hs.eg.db에서 sqlite 형식의 파일 싸기
    먼저 Bioconductor페이지에서 패키지를 다운로드합니다.페이지의 마지막 링크가 있습니다.

    이것들을 펼치다.그리고 나서
    .
    ├── DESCRIPTION
    ├── inst
    │  └── extdata
    │     └── org.Hs.eg.sqlite
    ├── man
    │  ├── org.Hs.eg_dbconn.Rd
    --中略---
    ├── NAMESPACE
    ├── R
    │  └── zzz.R
    └── tests
       ├── runalltests.R
       └── unit
          └── test.R
    
    얇은 디렉터리에 소수의 파일만 있습니다.(man은 매뉴얼이기 때문에 잠시 무시할 수 있다.)
    여기서 주의해야 할 것은 inst/extdata/org.Hs.eg.sqlite이다.즉, sqlite 형식의 데이터베이스는 소프트웨어 패키지에 직접 포함된 것이다.qlite는 경량 데이터베이스로 프로그래밍 언어에 의존하지 않습니다.따라서 R 이외의 언어로 이 sqlite 형식의 데이터베이스를 호출함으로써 다른 언어도 R 언어의 편리성을 누릴 수 있다.
    주의해야 할 것은 허가증이다.절차의 허가증은 Artistic-2.0이다.아티틱-2.0은 펄 인근에서 자주 사용하는 라이선스로, GPL에 가까운 라이선스다.하지만 데이터베이스에서도 적응할 수 있을지 모르겠다.도의적으로 Bioconductor팀은 비용이 비싸고 유지되는 물건을 다른 언어의 포장에 신속하게 편입하여 나누어 주기를 원한다.예를 들어 파이톤에서Bioconductor의 sqlite 포맷 파일을 사용한 패키지를 찾았지만 Giithub을 검색할 적당한 키워드를 찾지 못했다.따라서 현재는 개인이 R 언어의 패키지를 해동하고 그 중의 sqlite 형식의 파일을 저장하는 것이 가장 좋다.
    Ruby에서 Sqlite 형식의 파일 호출
    데이터베이스를 대상으로 호출하는 것은 루비 언어의 뛰어난 분야라고 한다.Active Record는 유명합니다.사용법을 잘 모르지만 설정하지 않고 바로 사용하기 위해서는 Active Record가 규약을 준수하는 sqlite 형식의 파일을 사용해야 할 것 같습니다.나는 R의 sqlite 형식의 파일이 반드시 Rails의 규정을 따르지 않는다고 생각한다. 이런 데이터베이스의 이용은 주로 읽기만 하고 자신이 추가 기록을 하지 않기 때문에Active Recored가 아니라 Sequel을 이용한다.Sequel는 루비의 유명 제출원Jeremy Evans이 만든 루비 대상 데이터베이스 도구 세트다.
    Sqlite 형식의 파일을 읽고 검색할 수 있습니다:.
    require 'sequal'
    
    db = Sequel.sqlite('org.Hs.eg.sqlite')
    
    db.class  # Sequel::SQLite::Database
    db.tables # テーブル一覧が表示される
    
    db[:alias].first
     # => {:_id=>1, :alias_symbol=>"A1B"}
    
    db[:alias].take(10)
    db[:alias].where(alias_symbol: "HBA1").all
     # => [{:_id=>2473, :alias_symbol=>"HBA1"}]
    
    db[:alias].join(:gene_info, _id: :_id).where(alias_symbol: "HBA1").first
     # {:_id=>2473,
     # :alias_symbol=>"HBA1",
     # :gene_name=>"hemoglobin subunit alpha 1",
     # :symbol=>"HBA1"}
    
    db[:alias].join(:genes, _id: :_id).where(alias_symbol: "HBA1").all
     # => [{:_id=>2473, :alias_symbol=>"HBA1", :gene_id=>"3039"}]
    
    보시다시피 매우 간단한 기법으로 자신이 하고 싶은 일을 실현할 수 있습니다.
    유전자 ID 변환
    예를 들어 join 문법을 사용하면 유전자 ID의 변환 같은 일은 비교적 간단하다.
    entrez_id = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    entrez_id.map do |id|
      db[:genes].join(:ensembl, _id: :_id).where(gene_id: id).all
    end
    
    # => 
    # [[{:_id=>1, :gene_id=>"1", :ensembl_id=>"ENSG00000121410"}],
    #  [{:_id=>2, :gene_id=>"2", :ensembl_id=>"ENSG00000175899"}],
    #  [{:_id=>3, :gene_id=>"3", :ensembl_id=>"ENSG00000256069"}],
    #  [],
    #  [],
    #  [],
    #  [],
    #  [],
    #  [{:_id=>4, :gene_id=>"9", :ensembl_id=>"ENSG00000171428"}],
    #  [{:_id=>5, :gene_id=>"10", :ensembl_id=>"ENSG00000156006"}]]
    
    좀 지루한 느낌_id: :_id이지만 루비언어에 익숙한 사람에게는 허용할 수 있는 범위다.(Sequel은 생체 정보를 위한 라이브러리가 아니라 일반적인 도구이기 때문에 어쩔 수 없다.)
    하지만 위에 물건이 필요할 때마다 번거롭기 때문에 발급용이 아니라 스스로 쓰는 젬화입니다.
    (결과적으로 sqlite를 포함한 루비의 GEM 제작에는 상당한 시간이 소요됐다. 이유는 아직 밝혀지지 않았다.)
    루비 이외의 언어로도 가능할 텐데...
    위에서 설명한 바와 같이 루비 언어는 R의 바이오콘덕터의 패키지를 사용하고, Sqlite 형식의 파일은 루비 언어가 아니며 다른 언어로도 사용할 수 있다.따라서 생물정보 패키지가 발달하지 않은 작은 어종으로 생물정보를 만들고 싶은 사람이 있다면 참고할 만하다.그러나 허가증 문제에 주의해야 한다.
    이상은 이 보도입니다.

    좋은 웹페이지 즐겨찾기