Sunday, July 3, 2011

리눅스 커널 내부구조

이것 역시 부서 예산으로 샀다. 워낙에 평들이 좋아서 특히나 쉽게 써져 있다길래 샀는데.. 난 이정도도 이해 못하는 수준인 갑다. 메모리부분이랑 파일시스템은 그럭저럭 어떻게든 보겠는데 태스크 관리는 전혀 뭔소린지 모르겠다.. (아 그래도 인터럽트이니 트랩이니 시그널이니 뭐 이런 구분이 좀 모호 했는데 책을 보고 나면 개념이 선다.) 저자가 엄청 쉽게 쓸려고 노력했음에도 내 수준이 아직 많이 부족한지라.. 이 정도도 이해 못하고.. 좌절한다.. 아.. 뭔책을 봐도 이해 못할거 같은 겁이 나면서.. 뭐 리눅스는 내 평생 안고 가야 하는건데.. 이거 원 언제 한번 속시원함을 느껴 볼려나.. 여튼 내가 본 리눅스 책 중 가장 쉬운 책. 하지만 여전히 이해 안가는 책.



Friday, July 1, 2011

RNA-Seq mapping-first 방식 procedure

cufflinks의 사용법(단순 command 및 약간의 tip) 을 정리한다.
다음은 단지 cufflinks의 manual을 정리한 것이다.
설명 format은 
숫자.명령어 (예: 1.tophat -r 50 ref read1.fastq read2.fastq) 다음 output 및 그 밖의 사항 설명 




1.bowtie-build  ref_seq.fa  ref_seq 
이는 tophat이 mapping을 할때 bowtie를 사용하는데 bowtie의 reference에 대한 index 파일을 생성한다. bowtie manual에 따르면 4개의 파일이 생성되야 하는데 실제론 6개의 파일이 생성된다(정확한 이유는 모르겠음).


2.tophat  -r  50  -o  tophat_result  ref_seq  read1.fq  read2.fq
이를 실행하면 tophat_result 폴더에 tophat의 결과파일이 생성된다.  accepted_hits.bam 파일이 read를 mapping 한 결과 파일이며 이것들을 정리한 것이 deletions.bed, insertion.bed, junction.bed. junction.bed 파일을 보자면 마지막 두 column이 junction의 size와 시작점을 나타낸다. junction의 시작점은 island의 시작점(그러니까 read가 overlap된 bundle)이 아니라 junction을 포함한 read의 시작점이다.


2.1.samtools  index  accepted_hits.bam
read가 align된 것을 samtools의 tview로 보기 위해서는 bam 파일을 indexing 해야 한다.


2.2.samtools  tview  accepted_hit.bam  ref_seq
tview 통해 read의 alignment를 확인할 수 있다.


3.cufflinks  -o  cufflink_result  tophat_result/accepted_hits.bam
결과는 cufflink_result 폴더 안에 transcripts.gtf 라는 파일이 생성. gtf1 파일 포멧은 다음 링크에 설명되어 있다.


3.1.cuffmerge  -s  ref_seq.fa  assemblies.txt
위 명령어를 실행하면 merged_asm/merged.gtf 생성. 원래 cufflinks manual에 보면 human의 여러 tissue의 샘플로 위의 3번까지 진행하는데 각 tissue 별로 3번까지 진행해서 나온결과를 merge 한다.


3.2.cuffcompare  -s  ref_seq.fa  -r  known_annotation.gtf  merged_asm/merged.gtf  
이는 이미 알려진 annotation 데이터(여기서는 known_annotation.gtf) 파일과 비교해서 novel한 gene이나 isoform을 찾는다.


위에까지는 그냥 그냥 하는거고 differentially expressed and regulated gene을 찾는 방법 2가지를 workflow를 설명한다. 하나는 novel 한 gene을 안찾고 그냥 기존의 annotation file로다가 찾겠다는 거고, 다른 하나는 novel한 gene까지 찾아가겠다는걸로 후자 역시 기존의 annotation file 이용가능하다. 이건 그냥 cufflinks manual 보자




---------------------------reference-----------------------------
1.gff 파일 : gff 파일은 general feature format의 약자로 여러가지 버젼이 있는데 그중 cufflnks에서는 gtf2(general trascfer format)랑 gff3 만 인식한단다. 


-gtf2 : column은 tab으로 분리 되어야 함

Sunday, June 26, 2011

클라우드 충격

얼마전에 행운씨랑 싸바싸바 해서 부서 예산으로 산 책 중의 하나. 출퇴근에 오가며 보고 있는데.. 어.. 재밌다. 
예전부터 클라우드 컴퓨터라는게 그리드 컴퓨터랑 비슷한거 아닌가란 생각이 있었는데.. 그런 애매모호한 클라우드 컴퓨터의 정의에서 부터 그 클라우드 컴퓨터 내부 구축의 핵심이 무엇인지(물론 기술적으로 자세하게 나오진 않는다) 그리고 이 클라우드 사업을 리드하는 구글, 아마존, 세일즈포스닷컴에서는 어떤 식으로 클라우드 사업을 활용하는지, 그렇다면 이러한 인터넷 서비스 회사가 아닌 기존의 하드웨어 내지는 소프트웨어 회사들이 어떤식으로 대처를 하지는 그리고 우리(?)는 그러한 시대를 어떻게 이용해야 하는지를 간략하지만 명료하게 설명하고 있다.


특히나 재미있었던 것은 구글. 아마존이야 어짜피 HaaS이니까 좀 느낌이 일차원적이였는데.. 구글의 전략이 참으로 영특하다. 구글이 하는 서비스는 SaaS와 PaaS 로 구글 앱은 SaaS, 구글 앱 앤진은 PaaS. 그들이 크롬 브라우져를 만들고 안드로이드 os를 만들고 또 웹 호스팅 업체처럼 웹 서버 관리까지 해주는 이유가 명백하게 드러나게 된다. 생각해보면 안드로이드 os는 현재 pc의 윈도우 격이 되는거고 크롬 브라우져야 말로 자기네 사이트를 많이 이용하는 창을 만든거고 구글 앱 앤진은 계약금 없이 훌륭한 컨탠츠 제작자들을 끌어 모으는 효과니 결론 적으로 자기네 사이트로의 집중, 곧 이는 자신의 주 수입원인 구글 애드의 매출 증대로의 역할을 할것이라는 기대. 
여기서 나오는 에코시스템이라는 용어가 맘에 든다(물론 아직 정확한 용어 이해는 아닌거 같지만). 이런 서비스는 누구하나 밑질게 없다. 오히려 서로 윈윈. 물론 나의 얕의 지식과 생각의 잘못된 판단일 지 모르지만 다른 한편으로는 내가 그렇게 생각한다는건 나 정도 아는 사람 내지는 나보다 덜 아는 사람은 나와 같이 생각할 수 있다는 것. 결코 이들의 회사 이윤 추구 방식은 그들을 좋은 사람으로 보이게 끔한다. 영특해. 이게 사업이다. 진짜 사업.

Thursday, June 23, 2011

MBD-Seq, MeDIP-Seq 분석 파이프 라인 구축시 고려 사항 및 참고 논문 등등

이제 ChIP-Seq도 한다. metagenome 하다가 RNA-Seq 하고 다시 De Novo assembly 좀 손대다가 과제가 있어서 ChIP-Seq도 하게 되었다. 좋긴 하다. 많이 보고 이것 저것 해보니. 지루해질 틈도 없다. 다만.. 하나를 깊게 해놓고 끝내지 못하는게 많이 아쉽다. 겉핧기로 논문 보는거 같기도 하고.. 여튼 일에 대한 건 내 결정권 밖이니.. 하는데까지 해보는 수밖에.


일단은 MBD-Seq, MeDIP-Seq 파이프 라인 갖춰야 하고 BS-Seq 도 해야 하는데. 생각이 많다. 뭐를 role model로 해야 하는지. 


일단 MBD-,MeDIP-Seq에서는 Bayesian deconvolution 개념은 확실히 들어가야 할거 같고


MeDIP-Seq 잘 표현한 사이트(여기서도 methylation 분석 파이프 라인 만드는거 같네. 서너명에서 하는거 같은데. 음 좋겠다)

Tuesday, June 21, 2011

ubuntu 설치기

fedora 만쓰다가 이번에 ubuntu를 설치 해보게 됐는데.. 
중간 중간 막혔던거 나중에 필요할 때 찾기 편하도록 정리 해 보련다.


일단 ubuntu 받아다가 구워서 깔면 되는데(생각보다 작다. 용량이 고작 600M)..


1.root 계정 비번 정하는게 첨에 안나온다. 따로 설정해야 하는데 여기를 참조.
2.그담에 네트워크를 설정해야 하는데 여기를 참조.
3.아.. 그 전에 vi 편집기가 이상한데 여기를 참조해서 vi 설정을 한다.
4.마지막으로 ssh를 이용하려는데 openssh-server를 설치해야 한다. 이때 apt-get을 사용하는데 첨에 apt-get openssh-server 하면 에러남.. apt-get update 후 앞의 명령어를 실행해야 한다.


일단은 여기까지 담에 disc mount 하는거랑 infiniband  설정하는거 추가 하겠음.

Tuesday, June 14, 2011

installation of assemblers & some tips(?)

< AllPaths-LG>
-installation-
denovo assembler 중에 한가지인 AllPaths-LG의 셋팅과 사용법에 대해 정리해보겠다. velvet이랑 newbler를 사용해 본적은 있는데 이건 어떨런지.. broad institute에서 나왔다니.. 왠지 메이져의 느낌이. 여튼 RNA-Seq도 다 못봤지만 박사님의 지시라. 보자. 
논문에 대한 소개은 다음 포스팅에 있다. 여기선 설치와 사용 방법 결과 설명한 하도록 한다.


일단 AllPaths-LG의 사이트는 여기.
이거 설치는 위 사이트 download 탭에 pdf로 된 manual에 보면 나와있다. 
기본적으로 셋팅 되어 있어야 하는게 있다. boost, graphviz, addr2line, picard. 


boost : 그냥 다운 받아서 풀어 놓기만 한다. 그런데 ./bootstrap.sh, ./bjam install 이것도 해야 하는것 같네.
graphviz : ./configure --disable-swig, make, make install (dot 만 쓴다니까)
addr2line : 이건 깔려 있고 (man addr2line 쳐본다).
picard : 다운받아서 풀어서 path 잡아준다.


그담에 AllPaths-LG의 build는 
./configure --with-boost=/path/to/boost
make
make install


test 파일을 다운받아서 실행해본다. test 폴더 안의 README를 읽고 prepare.sh 파일을 변경한 한다. 그리고 돌리기 전에 ulimit -s 100000을 해서 stack memory를 100MB까지 잡게 한다. 그리고 prepare.sh랑 assembly.sh 실행.


-output format-
test 파일을 돌리게 되면 reference/data/run/ASSEMBLIES/subdir  식의 폴더 구조가 생성된다. 상위폴더에 있는 데이터는 하위폴더에 중복되지 않는다.
reference는 organism 이다. 뭔소린가 하면 예를 들어 두개의 E.coli 를 reference로 assemble을 한다면(reference가 꼭 필요한건 아니지만 reference로 삼을 만한게 있으면 이용이 된단다) 일단은 E.coli라는 reference 폴더 안에 두개의 게놈과 데이터들이 존재하게 되는것.
data 폴더는 말그대로 데이터. assembly를 시도했던 read data를 담게 된다. data 폴더안에 여러개의 run 폴더가 존재 할수 있는데 이들 run 폴더간의 차이는 parameter setting이 다른 경우.
run 폴더는 final assembly stage를 위한 intermediate file이 들어 있는 폴더
ASSEMBLIES 폴더는 실제 assembly 가 있는 폴더인데 유일하게 폴더명이 ASSEMBLIES로 정해져 있다.
subdir 폴더는 음.. localized assembly가 생성된 폴더라는데.. 


-preparing data-
AllPaths의 input 파일이 완전 자기네들 스타일인데.. 
read data를 그들 형식으로 바꾸고 이 read data를 설명하는 metadata를 더해서 input 파일을 만든다. 그리고 reference 있으면 이것도 추가해야 한다.
일단 AllPaths는 paired end만 취급한다. 그리고 fragment library(180bp) 랑 jumping library(3-10kbp)가 반드시 있어야 한다. long jumping library는 option. 각 library마다 paired-end의 방향이 다르다. fragment, long jumping은 inward 
jumping library는 outward, (mate-pair 방식)
data fold 안에는 반드시 library 마다 *.fastb(fasta binary), *.qualb(quality binary), *.pairs(read pair information) 파일과 ploidy 파일이 있어야 한다.
ploidy 파일은 1은 haploid, 2는 diploid genome을 의미. 나머지는 지원 안됨.
*.fastb, *.qualb, *.pairs 는 PrepareAllPathsInput.pl 으로 생성(.bam, .fastaq, .fasta, .fastab 파일 지원). 
PrepareAllPathsInputs.pl의 input 파일로 in_groups.csv랑 in_libs.csv 가 필요. 
*.fastq 을 변환하려면 paired read가 한 파일안에 존재 해야 한다. 그러니까 1pair의 1read record가 나오고 그 담에 바로 1pair의 2read record가 나오는 식으로. 
quality score가 어떤식으로 encode됐는지 확인해서 PHRED_64 옵션으로 조정해야 한다.
in_group.csv 이랑 in_libs.csv 파일은 메뉴얼 보자
  Example in_libs.cvs
나머진 manual 보자. 잘나왔다.



정리하자면 
1. fastq 파일 합치고(read1, read2 를 하나의 파일로 합친다.) 
2. in_libs.csv랑 in_group.csv 파일 만들고
3. PrepareAllPathsInputs.pl 돌려서 input 파일 만들고(IN_GROUPS_CSV, IN_LIBS_CSV, PHRED_64, PLOIDY,PICARD_TOOLS_DIR, DATA_DIR 파라미터 확인)
4. RunAllPathsLG 파이프 라인을 돌린다.




< SOAPdenovo>
-installation- 
make




< Velvet>
-installation-
make (velvet manual 특히 for impatient people에 잘 되어 있음)




< Abyss>
-installation-
google sparsehash, pthread, openmp 설치
Google sparsehash 설치. 구글 코드 사이트에서 다운 받아서 설치
pthread 랑 openmp 서버에 있는거 같다. 찾아보니(c 코드로 #include 랑 #include 넣고 짯을 때 에러 안나면 그 헤더 파일이 시스템에 잡혀 있는것).. 



Tuesday, June 7, 2011

sequence data feature table

아.. 이거 찾느라.. 몇십분 고생했다. 왜 이걸 찾았냐? location example 때문에.. 예전에 언뜻 genbank 파일 보다가 gene내지는 CDS의 location coordinates 의 표기가 이해가 안가서 인터넷 뒤지다가 나왔는데... 이번 bacteriophage annotation하는데 이런 표기법을 사용할 수 있나 해서 다시 인터넷를 뒤지게 됐네.. 여튼..


그럼 여기서 드는 의문점 한가지.. location example에서 보면 1..>888 같은 표기법도 가능한데.. 이는 유전자가 1번 base부터 시작해서 888 번 base이상으로 계속 되어 진다는 거다.. 그런다면 stop codon의 정확한 위치는 나타내지 않는다는건데.. 어떻게 이런 표현이 가능한건지.. 이는 NCBI에서부터 답변이 오면 다시 포스팅 하도록 하겠다.