2022년 6월 22일 수요일

경주에서 완성한 Roary 매뉴얼

제49회 한국미생물·생명공학회 국제학술대회 및 정기학술대회에 참석하기 위해 경주화백컨벤션센터(HICO)를 찾았다. 본격적인 장마를 하루 앞두고 무척이나 덥고 습한 날씨가 기승을 부리고 있었다.

HICO 앞마당에서.

EMBL Peer Bork 박사의 발표 "Analyzing Microbiomes for Human and Plenatary Health" 이렇게 좋은 아이디어를 갖고서 대규모 연구를 하니 우리는 뭘 하지?

이번에 받은 가방은 마음에 든다. HICO에서 실시하는 설문조사에 응하고 휴대폰 거치대를 얻었다.

일정을 조금 일찍 마치고 숙소로 돌아와서 쉬면서 위키 사이트에 수일 동안 써 오던 Roary 설명서를 완성하였다. Pan genome analysis pipeline인 roary는 2015년에 논문으로 공개된 뒤 지금은 거의 업데이트가 이루어지지 않는다. 그도 그럴 것이 더 이상 개선할 여지도 없다고 생각한다. Roary는 내가 가장 즐겨 사용하는 생명정보학 프로그램 중 하나이지만, 그 기능을 완벽하게 이해하는 것도 아니었다. 별도로 Word 파일로 만들어서 계속 수정해 나가고 있는 나의 유전체 분석 매뉴얼에서 roary는 매우 큰 비중을 차지하고 있으나 늘 부족함을 느끼고 있었다. 위키 사이트에 작성한 매뉴얼은 아예 이 Word 파일을 참조하지 않고 거의 새로 쓰다시피 하였다. 정확하게 말하자면 방문자를 위한 친절한 입문서는 전혀 아니다.

Roray는 GFF3 파일을 대상으로 pan genome(core + accessory)를 계산하여 매우 다양한 형태의 결과 파일을 만든다. 부속 스크립트를 이용하여 각종 수치를 시각화해 주기도 하고, 유전체(구체적으로는 GFF3 파일) 단위의 operation을 할 수도 있다. 기본적으로 gene cluster ID를 반환하지만, 아미노산 서열을 뽑아내는 것도 가능하다. 내가 만든 매뉴얼의 후반부에서는 roary 결과물을 이용하여 GFF3 파일로부터 지정된 cluster ID에 해당하는 유전자의 염기서열을 추출하는 방법을 설명하였다. 이는 roary 자체 및 부속 스크립트의 기능으로 해결되지 않는다.

매뉴얼을 작성하면서 CSV(comma-separated values) 파일을 다루는 유틸리티 중 하나인 csvkit를 알게 되었고, 'seqkit grep' 명령어를 사용하여 ID의 정규 표현식에 의한 서열 추출 방법도 익히게 되었다. Lorance Stinson의 AWK CVS parser는 상당히 도전적인 과제가 될 것이다. AWK를 복잡한 스크립트로 쓰는 것도 모자라서 함수까지 만들어 사용하다니! xsv는 csvkit보다 더 나아 보이는데, 내가 아는 리눅스 시스템에서 설치하기가 조금 까다롭다. Nix/NixOS? Rust? Cargo? 이것이 다 무엇인가? 우분투 22.04 LTS에서 xsv를 설치해 보니 희한한 곳에 binary를 만들어 놓는다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ sudo apt install cargo
$ cargo install xsv
...
  Installing /home/hyjeong/.cargo/bin/xsv
   Installed package `xsv v0.13.0` (executable `xsv`)
warning: be sure to add `/home/hyjeong/.cargo/bin` to your PATH to be able to run the installed binaries
$ ~/.cargo/bin/xsv
xsv is a suite of CSV command line utilities.

Please choose one of the following commands:
    cat         Concatenate by row or column
    count       Count records
    fixlengths  Makes all records have same length
    flatten     Show one field per line
    fmt         Format CSV output (change field delimiter)
    frequency   Show frequency tables
    headers     Show header names
    help        Show this usage message.
    index       Create CSV index for faster access
    input       Read CSV data with special quoting rules
    join        Join CSV files
    sample      Randomly sample CSV data
    search      Search CSV data with regexes
    select      Select columns from CSV
    slice       Slice records from CSV
    sort        Sort CSV data
    split       Split CSV data into many files
    stats       Compute basic statistics
    table       Align CSV data into columns

Roary 말고도 몇 가지 주제에 대한 매뉴얼 작성 거리를 머릿속에 쌓아두고 있다. 너무 늦어지지 전에 해결해야 되는데...



댓글 없음: