![]() |
| 출처: @sana_twice.09 |
수요일, 1월 06, 2021
너도 AB1파일가지고 pdf 만들수 있어 (1)
토요일, 1월 02, 2021
High Heterozygosity genome 어셈블리 할 때 해결사로 자처하고 나온 어셈블러
2021년 첫 포스팅 시작합니다. :)
오늘은 de novo assembly관련된 tools 소개 글입니다.
모델 생물 혹은 그외의 생명체에 대해서 genome을 알고 싶다면...
그냥 절래절래 하거나 아니면 필요하거나 알고 싶은 부분만 클로닝해서 슬쩍 슬쩍 알아내던 시절...
돈없는 연구자들은 손가락이나 빨고 눈물이나 흘리던지 어딘가에 끼어서 연구를 진행했었어야 했으나...
이제는 바야흐로 2021년!! (사실 글의 초안을 작성하고 있었던 때는 2020년 11월;;;)
454 따위 역사속으로 사라지고 킹왕짱 long read인 PacBio와 나노포어가 활발히 사용되는 시대에 살고 있습니다.
(물론 de novo는 454와 일루미나로 이어 붙여야 제맛이지 하는 라떼들도 있지만...)
저는 박테리아에서 PacBio 써본 후 박테리아 연구에서 PacBio 사용하지 않고 일루미나 플랫폼을 사용한다고하면 일루미나 주식을 가지고 있나 생각하게 되었고, 그외에 genome을 de novo작업은 nanopore를 추천하고 있는데 굳이 나노포어를 사용하지 않겠다라고 한다면... 굳이? 라는 궁금증으로 가지게 되었다능.. ㅋㅋ
(당연히 무조건 저걸 써야하는건 아니쥬 ㅎㅎ 연구 목적에 따라 봐야 하는 결과물에 따라 플랫폼을 잘 선택하시면되겠습니다.)
※ 여기서 나노포어 base의 quality는 굳이 논할 이유는 없고 제대로된 데이터 만져보면 나노포어 쓰지 않을 이유가 없으실 겁니다.
이제는 PacBio나 나노포어를 굳이 사용하지 않을 이유가 없는 것이 예전이라면 PacBio나 나노포어를 지원해주는 프로그램이 많지 않아서 좀 꺼려질수 있었지만.. 지금은 반대로 너무 많아셔져서 어떤 tools을 사용해야 하나 할 정도니...
그중에서 어셈블리를 하면서 문제가 되는 부분이 High heterozygous region들이 있는데 (그 와 함께 저세상 텐션을 보여주는 polyploidy;; ) 이런 문제들을 해결에 주겠다는 해결사로 자처하고 나온 tools이 있어서 한번 끄적여 보았습니다.
Purge Haplotigs: allelic contig reassignment for third-gen diploid genome assemblies
물론 이전에도 heterozygous 문제를 해결하는 tools이 없지는 않았습니다.
이전 글에서도 잠시 소개했었던 HaploMerger2 도 있고 저는 잘 몰랐지만 Redundans라는 도구도 있었다고 합니다. 다만 이전에 나온 tools의 단점은 사용자가 수동으로 contig를 재 할당해야한다는 문제가 있다고 합니다.
(음.. 저도 이전에 한두번 HaploMerge2를 사용해었는데;;; 여기서 얘기하는 contig 재할당에 대한 얘기가 정확히 어떤 의미인지는 정확하게 모르겠네요;; 여튼... 좀 단계 단계를 수동으로 작업을 하기는 했었습니다만 여기서 얘기하는 "수동"이 이 얘기가 아닌거 같은데...)
여튼... purge의 분석 pipeline은 다음과 같은 단계들로 진행됩니다.
purge의 분석 Flow chart >Figure1<
음... 확실히 장점으로는 draft로 조립된 genome에서 중복되는 contig들을 제거해서 draft assembly 서열의 크기를 줄여서 실제 genome size에 가깝게 된다는 것 이긴 합니다.
그리고 이 tool을 사용할 시 참고할 점으로는 일루미나 데이터를 가지고 purge를 진행할때는 지양했으면 합니다.
제가 해봤을때에 nanopore-raw 서열가지고는 분석이 가능했는데 일루미나 데이터로 작업하였을 때 purge_haplotigs의 hist 명령어를 사용하여 cov의 input 값이 -l, -m, -h 값을 구하는 작업을 할때 -l, -m, -h 값을 특정 할 수 있는 문제가 좀 있었습니다. 너무 값들이 낮아서 어떤 값을 low, mid, high을 사용할지가 모호하더라구요..
여튼..
de novo 작업을 하시다가 생각보다 genome 크기가 큰 경우 내 genome 중간에 heterozygous한 지역이 있구나 생각하시고 이 tools한번 돌려보시면 좋을것 같습니다. :)
토요일, 12월 26, 2020
Long read는 Long read alignment로....
간만에 글 투척합니다.
오늘은 Long read align관련된 내용 투척 하도록 하겠습니다.
시퀀싱 기술이 좋아져서 PacBio와 함께 nanopore가 (최근 covid도 있었고) 함께 많이 이용되고 있는데 질좋은 long read를 생산하셨다면 bwa/bowtie와 같은 short read alignment보다는 long read에 최적화된 long read alignment인 minimap2같은 tool를 사용하시는게 정신건강에 좋을 것 같습니다.
최근 제가 별생각없이 long read서열을 human genome에 aling할때 bwa mem의 -x ont2d옵션을 사용하여 진행했었는데...
통수를 후려 갈기는... (원래 통수는 후려 갈기는 맛이 좋다능)
bwa mem -x ont2d를 사용하는 경우 원래 생산된 read(raw read 개수)보다 더 많은 read 들이 aligned되는 것 처럼 보인다는... (?? 생산된게 100개 read인데 align된 read는 200개라고?)
근데 minimap2를 사용하였을 때에는 reference에 align된 read의 개수와 생산된 read 개수(raw 리드 개수)가 유사한(aka 생산된 read 개수보다 적은) read 개수를 확인 할 수 있었습니다.
개발자도 같고(Heng Li), 같은 align하는 tool인데 왜 이렇게 차이가 나느냐
음... bwa와 minimap2를 자세히 까보지는 않았지만(못하지만) bwa의 경우 mem -x ont2d를 사용한다고 하더라도 태생부터가 short read를 위해서 만들어진 alginment이고 nanopore의 경우 마음먹고 시퀀싱이 된다면 수십 kb의 길이가 나오는 관계로 bwa mem에서 seed를 기준으로 align할때 mismatch나 error에 대해서 관대하게 조건을 잡으면서 확장을 한다로 하더라도 수십 kb까지 확장하지 못하는 경우가 발생 하고 그 경우 split이 되어 다른 reference에 align되는 경우가 발생하는것으로 보였습니다.
대신 minimap2의 경우 long read를 고려해서 만들다 보니 확장이 비상식적으로 read가 길더라도 확장을 하지 split하지 않아서 bwa의 경우와 같이 생산된 read보다 많은 read가 align된 것 처럼 보이는 이상한 문제는 발생하지 않는 것 처럼 보였습니다.
결론은 내 데이터에 맞는 mapper를 사용해서 분석하자 되겠습니다. ㅠ.ㅜ
추신: 2018년도 이런 글(Minimap2 and the future of BWA)도 있었군요;;
금요일, 12월 18, 2020
ClinVar XML파일을 Tab 구분자 파일로 변환해서 사용하기
Clinvar안에 있는 정보를 활용하기 위해서는 대부분 다음과 같이 ncbi ftp에 들어가서 clinvar의 xml파일을 사용하게 됩니다.
https://ftp.ncbi.nlm.nih.gov/pub/clinvar/xml/clinvar_variation/ClinVarVariationRelease_00-latest.xml.gz
근데 이 xml 파일이...
솔찬히 번거롭고 귀찮쥬?
xml과 함께 json도 만만치 않쥬...
그래서 clinvar xml을 parsing해서 조금 더 핸들링하기 쉽게 tab으로 구분된 파일을 만들어 보겠습니다.
이 xml을 받을 때 처럼 ncbi의 ftp인
https://ftp.ncbi.nlm.nih.gov/pub/clinvar/tab_delimited/에 접근합니다.
그리고 variant_summary.txt.gz을 찾으시면되겠습니다.
parsing script가 아닌 그냥 파일을 새로 받으면 되는것이었습니다. :)
토요일, 12월 05, 2020
WGS는 과연 의료비용을 낮출수 있을까
Rapid whole-genome sequencing decreases infant morbidity and cost of hospitalization
토요일, 11월 21, 2020
Uterine Microbiota의 이해
화요일, 9월 22, 2020
8개의 variant caller 통합 도구
2018년 WGS이나 WES 혹은 Target Seq을 한 후 변이를 확인 할 때 으레 GATK를 사용하는 우리들에게 감사하게도 여러개(정확히는 8개)의 변이 caller 결과를 통합해서 확인 할 수 있는 논문이 발표되었습니다.
진짜 감사할지 이름만 appreci할지...
(구글 검색결과 글쎄요... 이유가 무엇인지는 모르겠지만 오늘이 2020년 9월 12일인데 인용 횟수가 4개네요..)
목적은 NGS를 임상에 사용하려면 유효한 variant를 call해야 하는데 분석 tool마다 어떤 variant는 call하고 어떤 variant는 call하지 못하는 경우가 발생해서 그럼 여기서 나온 결과와 저기서 나온 결과 합치자!!
근데 이 작업을 할 하는데?? 이게 그렇게 쉽다고?
그렇죠 이런저런 허들이 있고 동일한 위치에 A변이와 B변이가 있다고 나왔을 때 어떤 변이를 call했다고 인정할것인가?
모 변이를 call하고 변이들을 merge하고 필터링하는 파이프라인을 개발했다는 것이 이 논문의 결론이고 민감도는 0.93-1.0, PPV는 0.65-1.0사이, 8개의 도구를 combine하였는데 caller를 줄이면 appreci8의 성능은 떨어지니깐 그러지 마세요 라고 얘기하고 있습니다.
여기서 사용하는 8개 caller들은 다들 많이들 사용하고 있는 GATK, Platypus, VarScan, LoFreq, FreeBayes, SNVer, samtools, VarDict되겠습니다.
appreci8은 여기서 docker로 제공되고 있고 분석을 한 일루미나 데이터는 여기에 위치하고 있습니다.
![]() |
| 출처: @ye._.vely618 |
토요일, 5월 30, 2020
Entrez를 이용한 fasta 파일 다운받기
![]() |
| 출처: @sana_twice.09 |
일요일, 5월 10, 2020
bed파일을 편하게 다뤄주는 bedtools
swiss-army knife 같이 다목적으로 적재적소에 쓰이는 좋은 물건 되겠습니다.
최신판은 2.29.2 되겠습니다. 당연한 얘기지만 상위버전으로 업데이트된 sub 명령어들의 옵션들이 추가되기 때문에 하위 버전 사용시 최근 메뉴얼 보시면 작동 안합니다. ㅋ
(웬만치 하위버전을 써야지.... 근데 이러는게 종종 있습니다. 그렇더라구요)
bed 포맷을 핸들링할때 굳이 스크립트 짜지 마세요
어설프게 짜고나서 나중에 후회마시고
그냥 bedtools 사용법을 남겨두고 써먹으시는게 서로 편합니다.
genome관련해서 사용할 만한 sub 명령어는
일요일, 5월 03, 2020
Long Read Assembler 설치 작업 로그
Long Read(aka Nanopore)를 위한 assembler의 설치에 대한 로그로... 모 그렇게 자주 사용 될일이 없을것 같지만.. 그래도..
root권한 또는 sudo권한이 없는 상황을 가정하고 설치하는게...
나중에 편합니다. root권한 있으면 편하지만 나같은 쩌리한테 호기롭게 root권한이나 sudo를 부여할 이유가 있겠습니까? 그냥 없으면 없는대로 사는법도 알고 있어야... :)
canu (https://github.com/marbl/canu/releases)
$ wget https://github.com/marbl/canu/releases/download/v2.0/canu-2.0.Linux-amd64.tar.xz
$ tar -xvf canu-2.0.Linux-amd64.tar.xz
또는
$ git clone https://github.com/marbl/canu.git
$ cd canu/src
$ make -j <number of threads>
wtdbg2 (https://github.com/ruanjue/wtdbg2)
$ git clone https://github.com/ruanjue/wtdbg2
$ cd wtdbg2 && make
Raven (https://github.com/lbcb-sci/raven)
$ git clone --recursive https://github.com/lbcb-sci/raven.git raven
$ cd raven && mkdir build && cd build
$cmake -DCMAKE_BUILD_TYPE=Release .. && make
$ ./bin/raven
단, raven은 cmakr 3.9이상이 필요합니다. cmake 설치는 아래에 따로..
Racon (https://github.com/lbcb-sci/racon)
$ git clone --recursive https://github.com/lbcb-sci/racon.git racon
$ cd racon
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make
racon의 경우 raven이 아닌 miniasm_and_minipolish.sh 작업시 racon을 찾아 해매서 racon 설치도 진행하였습니다.
flye (https://github.com/fenderglass/Flye)
$ git clone https://github.com/fenderglass/Flye
$ cd Flye
$ python setup.py install --prefix=/path/to/install/
또는
$ python setup.py install --user
※ --user 라는 옵션이 갱장히 편합니다. 대신 나만 됩니다.
cmake (https://cmake.org/)
$ wget https://cmake.org/files/v3.10/cmake-3.10.3.tar.gz
$ /bootstrap --prefix=/path/to/install/
$ make
$ make install
※ prefix를 설정하지 않으면 /usr/bin 모 이런데에 설치 되므로 설치가 제대로 되지 않기 떄문에 prefix를 설정하는것이 정신건강에 이롭습니다. :)
![]() |
| 출처: @sana_twice.09 |









