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에서부터 답변이 오면 다시 포스팅 하도록 하겠다.

Thursday, June 2, 2011

cufflinks

음.. 꼭 해야 하고 봐야 하는건데.. 요즘 완전 좌절과 의욕 상실 모드다. 이게 다 cufflinks 논문 때문이다(논문의 대한 나의 review는 여기). FPKM 개념좀 제대로 이해할려고 cufflinks supplementary를 건들였다가 좌절의 연속으로 내 전문성은 바닥임을 느끼고.. 또한 setup 할려는게 broad institute 의 gene pattern에 이미 너무너무 잘되어 있다는 생각에.. 아.. 한 일주일 정도는 방황하는거 같네.. 아.. 아직도 어떻게 해야 할지 모르겠고 하고 싶은 의욕도 잃은 상태지만.. 가만히 있는건 해결책이 아니라서 cufflinks에 대해 설치 및 output 내용, 사용방법등 읽는 모든 것을 기록하기로 한다. 


<installation>
링크를 보면 source code와 binary code가 있는데 source code로 깔 때 compile error가 나면 화가 나니까 binary code 다운 받고 path만 잡아준다.
그담 테스트 파일 받아서 테스트 해본다. 

programming python

요즘 보고 있는책. 누구지.. 검색하다가 찾은 블로그 하나 있었는데.. 그 분은 완전 전산 일 하는거 같던데. 그 분이 단계별 추천한 책 중 중급(?)에 속하는 책이였던 걸로 기억한다. 예전에 빠르게 활용하는 python3 프로그래밍인가 하는 책을 한번 훑은적이 있었는데.. 그래서 이 책도 그정도 겠지란 생각에 안볼려가다 결국 본다. 사실 원서라 좀 꺼려지기도 했고.. 워낙 내용도 방대해서 너무 양도 많고.. 근데 결국은 봐야 겠단 생각에 하루에 한 sub-chapter만 읽어보자는 생각으로 읽기 시작했는데. 뭐 몇일 되지도 않았다. 이제 겨우 part 1봤나. sneak preview 라고 하는것 까지 봤다. sneak preview에서는 이 책의 전체적인 내용을 특정 mission을 가지고 간략하게 설명한다. 무슨 내용있는 책인지 알려준다. 음.. 꼭 다 읽어봐야 겠다는 생각이 든다.


책 좋은 거 같음.




<기억해야 할 것>


1.script 상단에 #!를 사용하여 direct하게 executable 하게 만들 때 python path를 적는 것보다 unix의 env를 이용하여 #!/usr/bin/env python이라고 하는게 좀 더 general 하다.
2.os.folk를 쓰지 않고 os.system()에서 실행문 뒤에 &를 붙이게 되면 parallel하게 작업을 수행할 수 있다.
3.spawned process는 모 process에서 환경변수를 상속 받기 때문에 os.environ의 환경변수를  process 간에 communication의 변수로 사용 가능하다. 이 변경된 환경 변수는 top-level process의 상위 레벨에서는 영향을 미치지 않는다. 곧 system shell에는영향이 없다. 
4.for line in open('something') 의 방식을 추천. 원래는 난 readline()을 많이 사용했는데. 같은 의미란다. 차이는 파일을 다읽었을때 return 하는 값. readline은 ''을 iterator는 exception을. 
5. 왜 built-in function인 open의 두번째 argument가 b이냐 아니냐가 unix 계열에서 다르지 않는지 설명한다.
6.built-in open 함수도 있지만 os.open 함수도 있다. 왜 있냐? low-level의 처리가 가능(다양한 mode; O_EXCL을 사용하면 synchronization도 가능).
7.parallel processing 방법으로 process forks 와 spawned thread가 있다. 근데 thread가 platform에 영향을 안받는다.
8.os.execlp를 써서 성공적으로 프로그램을 실행시키면 return이 없다. 거의 program replace라고 생각하면 됨.