3/11
프레임워크라는 것은 package 와 같은 개념. 그러니까 클래스 묶음.
iOS 는 4개의 계층으로 구성되어 있는데 맨 위의 계층만 거의 object-c로 구성. 그렇기에 개발 자체는 꼭 object-c일 필요는 없으나 프레임워크를 사용하려면 object-c 필요
NSLog 나 NSString 클래스는 UTF-8 을 사용한다. 그렇기에 ""앞에 @를 붙여서 @"somthing" 방식으로 사용한다.
3/12
alloc 하면 클래스를 메모리에 올림, 단 super, self 는 초기화된다. self에는 자기 자신의 메모리 주소를 가르킨다.
init 을 호출해야 그 클래스의 속성들 (refCount, )이 초기화 된다.
nil = Nil = NULL = 0
nil : alloc 했는데 오류, 포인터가 더이상 객체를 가르키지 않는다.
Nil : 포인터가 클래스 메소드를 더이상 가르키지 않는다.
NULL : 객체를 가르키는 포인터가 아닌 변수, 구조체를 가르키는 포인터가 더이상 변수 구조체를 가르키지 않는다.
사실 구분하지 않고 사용해도 효과는 동일
objective-c 2.0 버젼에서는
클래스 안의 속성값은 다른 클래스에서 접근할 수 없기 때문에 속성을 리턴하거나 수정하는 메소드를 정의해야 했다. 그런데 3.0버젼부터는 property를 사용하면 컴파일러가 자동으로 속성과 관련된 메소드를 만들어 준다. 그리고 3.0 에서는 자동 구현된 메소드는 . 연산자에 의해 접근이 가능하다(원래는 [object setAttr] 식으로 해야 하는데 object.setAttr가 가능하다, 단 자동 구현 메소드만).
property
선언부, interface 에서는 @property 구현부, implementation 에서는 @synthesize를 명시해야한다. retain은 객체 타입, assign은
아. set, get 메소드가 생긴다라고 보기보다는 C++처럼 그냥 . 연산자로 속성에 접근이 가능하게 하는 효과가 생긴다. 그렇기에 set메소드처럼 사용하려면 class.attr = something, get메소드처럼 사용하려면 NSLog(@"%@",class.attr) 과 같이 사용한다. 이는 사실 컴파일러가 set, get 메소드를 정의하면서 동시에 연산자(=) 오버로딩에 의해 가능해진 것이다.
@property (<#attribute#>) <#type#> <#name#>
<#attribute#> 에는 3종류가 있는데 setter(assign, retain), nonatomic(atomic, nonatomic), getter(readwrite, readonly) 가 있다.
<#attribute#> 안써주면 default로 atomic 으로 설정된다. atomic 은 한번에 하나의 쓰레드에서만 접근 가능한 객체. nonatomic 으로 설정해주면 여러쓰레드가 동시 접근이 가능한 객체. 대부분의 속성은 nonatomatic 이다.
아이폰 앱의 Architecture 와 life cycle
앱의 아이콘 터치 => main 실행 => UIApplicationMain 함수 실행(이는 cocoa내부에 구현되어 있는 것으로 그 메소드의 인자에 의해 저절로 project 이름이 넘어가면서 3번 스텝에서 UIApplicationDelegate 클래스를 상속받은 클래스가 무엇인지 판단하게 된다) : 1. 프로젝트명-info.plist(앱전체 설정파일) 을 읽고 2. plist 파일에서 main nib file base base name 키를 보고 화면설정이 있는 파일 이름을 찾음(MainWindow.nib; xml 파일) 3. UIApplicationDelegate를 상속받은 클래스의 객체를 생성([[someClass alloc] init])(UIApplicationDelegate 클래스를 상속받은 객체는 반드시 하나), 이때 2번에서 읽은 파일에 읽은 xml 파일에 있는 화면 객체들을 생성해서 someClass 안에 있는 UI window 객체 타입의 window 변수에 넣는다. UI window는 기본적으로 안보이게 되어 있다. 4. UIApplication 객체 생성 5.그리고 UIApplication 객체가 무한 루프를 돌면서 event가 발생하는지 monitoring 하고 event에 따라서 거기에 맞는 someClass, 즉 3에서 생성한 클래스의 메소드 호출. 무한 루프는 iphone3 에서 home 버튼 누르면 끝났으나 4버젼부터는 home 버튼을 눌러도 background 로 돌고 메모리가 OS 에서 메모리가 부족하면 그 때 끝낸다.
무작정 따라하기
1. Main
Saturday, March 12, 2011
Tuesday, March 8, 2011
metagenomics
요즘 구제역이다 뭐다 해서 가축들을 죄다 땅에 파 묻는 바람에 지하수에 구제역에 의한 오염이 있지 않나 뭐다나 해서 농진청에서 연구비를 지원하나보다. 덕분에 회사의 가장 힘없는 말단 사원인 난 metagenomics 세계로 뛰어 들게 된다(근데 들어보니 구제역은 바이러스 때문이라는데..). 평소에 metagenomics에 대해 생각이 없었는데.. 예전에 천교수님 발표 할때 들어보고.. 아 꽤 시장이 크구나라고 느낀게 전부인데.. 나는야 까라면 쪼금 반항해보고 결국 까고 마는 말단 사원이다(아.. 연구원이다.. 사원보다 월급 적게 받는).
뭐 덕분에 공부한다고 생각하고 하나하나 정리해보자.
metagenomics 란 무엇인가?
rRNA
metagenome 시퀀싱을 하면 일반적으로 rRNA를 시퀀싱한다 (물론 그냥 gDNA를 culture해서 orf도 prediction하고 protein 시퀀스를 이용해서 functional annotation도 하지만). 아직 까지 내가 아는 지식으론 아마도 그 orgamism들의 구성도를 보기 위해서? 여튼.. 아래 위키 for rRNA explanation
http://en.wikipedia.org/wiki/Ribosomal_RNA ribosomal RNAs는 LSU(large subunit), SSU(small subunit) 으로 구성되어 있는데 prokaryote의 경우 LSU로 50S가 SSU로 30S 가 있고 그 30S를 구성하는 rRNA가 바로 16S rRNA. 보통 rRNA sequencing 중 16S rRNA 시퀀싱을 많이 하는데 그 이유를 생각해 보자면 http://en.wikipedia.org/wiki/16S_ribosomal_RNA 에 마지막에 보면 16S rRNA에 universal primer를 쓸수 있을 정도로 conserved 한 region도 있고 반면에 굉장히 변화가 심한 hypervariable region도 있기 때문에 아마도 species를 구분하기에 적당해서가 아닐까.
참고로 다음 논문도 읽어볼만 할듯하다.
Ribosomal RNA : a key to phylogeny
http://www.fasebj.org/content/7/1/113.full.pdf#page=1&view=FitH
metagenomics 분석 어떻게 해야 하나?
http://mmbr.asm.org/cgi/content/short/72/4/557
metagenomics를 위한 bioinfomatic 가이드라는 제목의 review인데.. 꼭 읽어봐야 할듯. intro 바로 처음에 나오듯이 이 리뷰는 functional metagenomics (특정 activity가 있는 것만 골라내서 cloning 해서 시퀀싱 한거)랑 구분하여 50Mbp 이상의 randomly sampled sequnces를 분석하는 가이드.
관련 데이터 베이스
들어보니 Silva, greengenes, EZ_taxon 이렇게 3개가 가장 많이 사용되는거 같다. 몇개 찾아보니 Silva가 가장 잘 되어 있는 느낌(?)이 드는데 우선 관련 논문
<Silva>
http://nar.oxfordjournals.org/content/35/21/7188.full?keytype=ref&ijkey=pwbw9T96ADMbJBk
일단 이러한 데이터 베이스의 목적은 넘쳐나는 rRNA데이터를 careful inpection, 그러니까 curration을 통해 rRNA가 biodiversity 연구에 도움이 되도록 하는데 있다(unified quality control & alignment of rRNA datasets).
논문을 보니까 rRNA 를 이용한 phylogeny의 연구에 ARB 라는 software와 이를 위한 db를 많이 썼었던걸로 보인다. ARB 말고도 rRNA curation을 위한 3개의 main project를 소개한다(greengenes, RDP,그리고 하나가 european rRNA 데이터 베이스인데 이것이 Silva로 들어 간것으로 보인다.). 아 그리고 하나 greengene에서는 ARB compatible dataset을 가지고 있긴 한데 full length인것만 대해서만. 그리고 요즘은 LSU rRNA도 많이 사용한다네(특히 eukaryote의 경우). intro을 본 결론은 4개의 DB 그중 ARB랑 european rRNA은 Silva로 편입된거 같다.
-Sequence data
Silva의 버젼은 EMBL과 버젼이 똑같다. 곧 RNA와 관련된 키워드 모두 검색해서 EMBL에서 RNA 시퀀스를 가져온다는 말. 그리고 seed alignment를 제공한다는데.. silva의 예전 버젼 격인 ARB에서 release 한것을 그대로 유지한다는데.. 이 seed alignment라는게 뭔지 잘 모르겠다..
-Quality checks
1.unaligned uncleotides 중 300bp보다 짧거나, 2. 2%이상 ambiguities가 있거나, 3. 아니면 2%이상의 homopolymer (homotetramer(homo-4bp)이상)가 있거나, 4. vector랑 5%이상 매치되면 제거. 그리고 이 세가지(2,3,4 항목)의 평균을 구해서 100에서 빼면 이것이 sequence quality가 된다. 이후 필터링 통과한 시퀀스들은 seed alingment에 대해 SINA(silva incremental aligner)에 의해 alignment가 되어 진다. 근데 이 sequence quality로 뭐하는 것인지.. 이미 4가지 항목으로 필터링 했는데 그 뒤에 이 sequence quality를 왜 구하는건지..이 역시 아직 잘 모르겠음
-Aligner
ARB의 suffix tree[1] 방식을 이용해서 seed alignment에서 최대 40개까지 유사한 시퀀스를 찾는다. 이렇게해서 찾아진 시퀀스 들은 partial order graph[2]로 옮기고 이 graph 위에다가 query를 needleman 방식으로 align 한다. 이 과정에서 alignment quality와 basepair score를 구하고 이는 0~100 사이 값으로 normalized 한다. alignment를 마친뒤에 aligned된 bp가 300bp보다 작으면 버린다.
-Anomaly check
이건 seed sequence의 anomaly를 체크 하기 위한 것이거 같은데. pintail이란 프로그램을 사용한단다. seed sequence들 전보를 20 개의 sequence로 된 한 그룹에 대해 pairwise check를 하는데 만약 대부분의 alignment가 anomalous 하게 나오면 seed에서 제거한다는거 같은데.. 저 20개의 sequence가 정확히 뭔지 모르겠다.. 모르는거 투성이네. 에이
-Taxonomy
-Nomenclature
-SSU and LSU rRNA databases for ARB
Ref databases: Parc database의 subset, 1.length cutoff :거의 full length의 시퀀스(최소 1200bp). archaea의 경우 800bp. LSU의 경우 1900bp. 2.alignment curoff : alignment score가 SSU의 경우 50, LSU의 경우 30 이상. 이 뒤에 positional variability filtering이 있는데 잘 이해 안됨.
Parc databases: 위의 quality가 확인된 모든 sequences
[1]suffix tree: 이진트리나 레드블랙트리는 봤어도 suffix tree는 사실 제대로 본적이 없다. 금선생이 추천해준 책에 몇챕터에 걸쳐서 나오는데.. 아.. 역시 모든 지식은 연결된듯하다. 여튼 급한데로 훓어보는데.. http://graphy21.blogspot.com/2011/03/suffix-tree.html
[2]http://bioinformatics.oxfordjournals.org/content/18/3/452.full.pdf#page=1&view=FitH
뭐 덕분에 공부한다고 생각하고 하나하나 정리해보자.
metagenomics 란 무엇인가?
rRNA
metagenome 시퀀싱을 하면 일반적으로 rRNA를 시퀀싱한다 (물론 그냥 gDNA를 culture해서 orf도 prediction하고 protein 시퀀스를 이용해서 functional annotation도 하지만). 아직 까지 내가 아는 지식으론 아마도 그 orgamism들의 구성도를 보기 위해서? 여튼.. 아래 위키 for rRNA explanation
http://en.wikipedia.org/wiki/Ribosomal_RNA ribosomal RNAs는 LSU(large subunit), SSU(small subunit) 으로 구성되어 있는데 prokaryote의 경우 LSU로 50S가 SSU로 30S 가 있고 그 30S를 구성하는 rRNA가 바로 16S rRNA. 보통 rRNA sequencing 중 16S rRNA 시퀀싱을 많이 하는데 그 이유를 생각해 보자면 http://en.wikipedia.org/wiki/16S_ribosomal_RNA 에 마지막에 보면 16S rRNA에 universal primer를 쓸수 있을 정도로 conserved 한 region도 있고 반면에 굉장히 변화가 심한 hypervariable region도 있기 때문에 아마도 species를 구분하기에 적당해서가 아닐까.
참고로 다음 논문도 읽어볼만 할듯하다.
Ribosomal RNA : a key to phylogeny
http://www.fasebj.org/content/7/1/113.full.pdf#page=1&view=FitH
metagenomics 분석 어떻게 해야 하나?
http://mmbr.asm.org/cgi/content/short/72/4/557
metagenomics를 위한 bioinfomatic 가이드라는 제목의 review인데.. 꼭 읽어봐야 할듯. intro 바로 처음에 나오듯이 이 리뷰는 functional metagenomics (특정 activity가 있는 것만 골라내서 cloning 해서 시퀀싱 한거)랑 구분하여 50Mbp 이상의 randomly sampled sequnces를 분석하는 가이드.
관련 데이터 베이스
들어보니 Silva, greengenes, EZ_taxon 이렇게 3개가 가장 많이 사용되는거 같다. 몇개 찾아보니 Silva가 가장 잘 되어 있는 느낌(?)이 드는데 우선 관련 논문
<Silva>
http://nar.oxfordjournals.org/content/35/21/7188.full?keytype=ref&ijkey=pwbw9T96ADMbJBk
일단 이러한 데이터 베이스의 목적은 넘쳐나는 rRNA데이터를 careful inpection, 그러니까 curration을 통해 rRNA가 biodiversity 연구에 도움이 되도록 하는데 있다(unified quality control & alignment of rRNA datasets).
논문을 보니까 rRNA 를 이용한 phylogeny의 연구에 ARB 라는 software와 이를 위한 db를 많이 썼었던걸로 보인다. ARB 말고도 rRNA curation을 위한 3개의 main project를 소개한다(greengenes, RDP,그리고 하나가 european rRNA 데이터 베이스인데 이것이 Silva로 들어 간것으로 보인다.). 아 그리고 하나 greengene에서는 ARB compatible dataset을 가지고 있긴 한데 full length인것만 대해서만. 그리고 요즘은 LSU rRNA도 많이 사용한다네(특히 eukaryote의 경우). intro을 본 결론은 4개의 DB 그중 ARB랑 european rRNA은 Silva로 편입된거 같다.
-Sequence data
Silva의 버젼은 EMBL과 버젼이 똑같다. 곧 RNA와 관련된 키워드 모두 검색해서 EMBL에서 RNA 시퀀스를 가져온다는 말. 그리고 seed alignment를 제공한다는데.. silva의 예전 버젼 격인 ARB에서 release 한것을 그대로 유지한다는데.. 이 seed alignment라는게 뭔지 잘 모르겠다..
-Quality checks
1.unaligned uncleotides 중 300bp보다 짧거나, 2. 2%이상 ambiguities가 있거나, 3. 아니면 2%이상의 homopolymer (homotetramer(homo-4bp)이상)가 있거나, 4. vector랑 5%이상 매치되면 제거. 그리고 이 세가지(2,3,4 항목)의 평균을 구해서 100에서 빼면 이것이 sequence quality가 된다. 이후 필터링 통과한 시퀀스들은 seed alingment에 대해 SINA(silva incremental aligner)에 의해 alignment가 되어 진다. 근데 이 sequence quality로 뭐하는 것인지.. 이미 4가지 항목으로 필터링 했는데 그 뒤에 이 sequence quality를 왜 구하는건지..이 역시 아직 잘 모르겠음
-Aligner
ARB의 suffix tree[1] 방식을 이용해서 seed alignment에서 최대 40개까지 유사한 시퀀스를 찾는다. 이렇게해서 찾아진 시퀀스 들은 partial order graph[2]로 옮기고 이 graph 위에다가 query를 needleman 방식으로 align 한다. 이 과정에서 alignment quality와 basepair score를 구하고 이는 0~100 사이 값으로 normalized 한다. alignment를 마친뒤에 aligned된 bp가 300bp보다 작으면 버린다.
-Anomaly check
이건 seed sequence의 anomaly를 체크 하기 위한 것이거 같은데. pintail이란 프로그램을 사용한단다. seed sequence들 전보를 20 개의 sequence로 된 한 그룹에 대해 pairwise check를 하는데 만약 대부분의 alignment가 anomalous 하게 나오면 seed에서 제거한다는거 같은데.. 저 20개의 sequence가 정확히 뭔지 모르겠다.. 모르는거 투성이네. 에이
-Taxonomy
-Nomenclature
-SSU and LSU rRNA databases for ARB
Ref databases: Parc database의 subset, 1.length cutoff :거의 full length의 시퀀스(최소 1200bp). archaea의 경우 800bp. LSU의 경우 1900bp. 2.alignment curoff : alignment score가 SSU의 경우 50, LSU의 경우 30 이상. 이 뒤에 positional variability filtering이 있는데 잘 이해 안됨.
Parc databases: 위의 quality가 확인된 모든 sequences
[1]suffix tree: 이진트리나 레드블랙트리는 봤어도 suffix tree는 사실 제대로 본적이 없다. 금선생이 추천해준 책에 몇챕터에 걸쳐서 나오는데.. 아.. 역시 모든 지식은 연결된듯하다. 여튼 급한데로 훓어보는데.. http://graphy21.blogspot.com/2011/03/suffix-tree.html
[2]http://bioinformatics.oxfordjournals.org/content/18/3/452.full.pdf#page=1&view=FitH
Thursday, March 3, 2011
TSS, TxStart, CDSstart,
맨날 까먹고 헷갈리고.. 에이..
TSS : transcription start site. 그러니까 5'UTR 부분부터.
http://en.wikipedia.org/wiki/Transcription_start_site
txStart : TSS 랑 같은말
cdsStart : coding region start site로 start codon 부터 시작. 곧 protein 시작 부분.
그런데 헷갈렸던 것이 위 그림. 어떤 exon은 wholly or partially 5' UTR 이기때문에 exon start site가 cds start 랑 같지 않다.
TSS : transcription start site. 그러니까 5'UTR 부분부터.
http://en.wikipedia.org/wiki/Transcription_start_site
txStart : TSS 랑 같은말
cdsStart : coding region start site로 start codon 부터 시작. 곧 protein 시작 부분.
그런데 헷갈렸던 것이 위 그림. 어떤 exon은 wholly or partially 5' UTR 이기때문에 exon start site가 cds start 랑 같지 않다.
Wednesday, March 2, 2011
RNA-seq 분석을 위한 논문 탐험
예전에 RNA-seq 한번 리뷰하고 거기서 ERNAGE라는 프로그램에 관한 논문을 정리 한적이 있었다. 이번에 정말로 RNA-seq 데이터를 다뤄야 하고 예전에는 거의 초점이 eukaryote에 맞춰졌기 때문에 bacteria의 transcriptome에 관련하여 좀더 논문들을 정리해 보고자 한다.
start point
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3025319/
내가 분석해야 하는 대상이 미생물 균주, bacteria 이기 때문에 우선 위 논문을 시작으로 한다. 위 리뷰논문을 보면 관련 논문을 잘 정리해 놨다. 마지막 limitations에 관한 내용을 보면 RNA secondary structure, random hexamer priming, second strand synthesis, PCR amplication stage에 의해 문제가 유발되는데 이는 ion-catalyzed hydrolysis와 direct RNA sequencing으로 어느정도 해결 가능하다고 마무리.. 아 그리고 figure1 이 실험종류와 단계에 대한 정리를 잘해놨다(결론적으로 directional 이나 아니냐 둘로 나뉘는데.. 확실히 directional로 실험을 해야 맞는거 같은데.. 안타깝게도 우리 데이터는 아닌듯). 오른쪽 그림 참조
second paper
http://www.biomedcentral.com/1471-2180/8/72
음.. 우리가 non-directional 로다가 실험을 했기에 또 기기가 FLX인 관계로 위 first point 의 reference 중 상황이 가장 유사한 논문이 바로 위 url. 일단 genome size 가 대략 3Mb, megaplasmid 가 있는거 빼곤 우리 상황이랑 비슷하다.
아.. 이 논문은 아닌거 같다. BMC microbiology에 나온건데.. 초창기 논문이라 그런지 아마도 FLX로 다가 transcriptome을 거의 처음 했다는 이유로.. rRNA depletion을 했는데도 read의 90 % 가 rRNA에 mapping되니. 그래서 아마도 논문의 방향을 novel gene finding으로 전환한듯. 여튼 패스..
third paper
http://www.sciencemag.org/content/326/5957/1268.short
좀 뭔가 의미 있는 내용을 보기 위해 그냥 선택한 논문. science니까. 첫번째 논문에서 인용도 많이 한거 같고. 음.. 읽어보니 확실히 사이언스다. 두번째 논문 봤을 때는 이거 일주일이면 하겠다고 생각했는데..
spotted array, tiling array, rna-seq (rna-seq 도 directional 한 방법을 이용) 모두 이용해서 operon의 boundary를 정한다 (expression이 급격히 떨어지는 region). 그리고 operon이 poly- | mono- cistronic 인지 확인한다 (rna-seq만 이용했을때 false positive가 얼마인지도 조사). operon을 정하고 나면 promoter region을 찾고 대략적인 TSS와 CDS와의 거리도 조사한다. 또한 trascriotion end site의 2차구조를 봐서 hairpin 구조가 transcription termination에 영향이 있는지 확인한다. polycistronic operon에 있는 gene들의 decay behavior도 관측한다. 여까지는 대략적인 transcriptome landscape라고 할까.
그 뒤 여러 다양한 조건에서의 expression 변화를 가지고 context-dependent modulation of operon structure involving repression or activation of operon internal or end-located genes (아.. 그러니까.. 음.. 하나의 operon 안에 여러 유전자가 위치에 따라 module화가 되어 (suboperon 마냥) 상황에 따라 오듈 단위로 다르게 expression 한다 뭐 이런.. 맞나..) 을 봤다. 또 이와 같은 이유는 eukaryote 에서 처럼 다양한 factor의 작용에 의한 것이 아닐까 추측 그리고 factor가 될만한 후보자들을 가지고 expression clustering. 해서 아.. factor가 많음 갑다라고 추측.
중요한건 the proteome organiztion is not explainable by the genome organizaion. 그리고 the expression heterogeneity within operon 이 아마도 생각했던것보다 bacteria의 transcriptional regulation이 eukaryote과 많이 유사하기 때문이지 않나 싶다는 것.
fourth paper
http://bioinformatics.oxfordjournals.org/content/early/2009/10/24/bioinformatics.btp612.full.pdf
다음은 분석 툴에 대한 논문이다. 정확히 이야기 하면 R package.
checklist
1. Segmentation algorithm : for identification of uncovered region in tiling array
2. Local convolution method : finding operon boundary
3. How do they decide polycistronic & monocystronic operon (maybe by DSSS)
4. In polycistronic how they divide genes in operon
5. Sigma 70 promoter region (TSS located within 60bp from CDS start site)
start point
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3025319/

second paper
http://www.biomedcentral.com/1471-2180/8/72
음.. 우리가 non-directional 로다가 실험을 했기에 또 기기가 FLX인 관계로 위 first point 의 reference 중 상황이 가장 유사한 논문이 바로 위 url. 일단 genome size 가 대략 3Mb, megaplasmid 가 있는거 빼곤 우리 상황이랑 비슷하다.
아.. 이 논문은 아닌거 같다. BMC microbiology에 나온건데.. 초창기 논문이라 그런지 아마도 FLX로 다가 transcriptome을 거의 처음 했다는 이유로.. rRNA depletion을 했는데도 read의 90 % 가 rRNA에 mapping되니. 그래서 아마도 논문의 방향을 novel gene finding으로 전환한듯. 여튼 패스..
third paper
http://www.sciencemag.org/content/326/5957/1268.short
좀 뭔가 의미 있는 내용을 보기 위해 그냥 선택한 논문. science니까. 첫번째 논문에서 인용도 많이 한거 같고. 음.. 읽어보니 확실히 사이언스다. 두번째 논문 봤을 때는 이거 일주일이면 하겠다고 생각했는데..
spotted array, tiling array, rna-seq (rna-seq 도 directional 한 방법을 이용) 모두 이용해서 operon의 boundary를 정한다 (expression이 급격히 떨어지는 region). 그리고 operon이 poly- | mono- cistronic 인지 확인한다 (rna-seq만 이용했을때 false positive가 얼마인지도 조사). operon을 정하고 나면 promoter region을 찾고 대략적인 TSS와 CDS와의 거리도 조사한다. 또한 trascriotion end site의 2차구조를 봐서 hairpin 구조가 transcription termination에 영향이 있는지 확인한다. polycistronic operon에 있는 gene들의 decay behavior도 관측한다. 여까지는 대략적인 transcriptome landscape라고 할까.
그 뒤 여러 다양한 조건에서의 expression 변화를 가지고 context-dependent modulation of operon structure involving repression or activation of operon internal or end-located genes (아.. 그러니까.. 음.. 하나의 operon 안에 여러 유전자가 위치에 따라 module화가 되어 (suboperon 마냥) 상황에 따라 오듈 단위로 다르게 expression 한다 뭐 이런.. 맞나..) 을 봤다. 또 이와 같은 이유는 eukaryote 에서 처럼 다양한 factor의 작용에 의한 것이 아닐까 추측 그리고 factor가 될만한 후보자들을 가지고 expression clustering. 해서 아.. factor가 많음 갑다라고 추측.
중요한건 the proteome organiztion is not explainable by the genome organizaion. 그리고 the expression heterogeneity within operon 이 아마도 생각했던것보다 bacteria의 transcriptional regulation이 eukaryote과 많이 유사하기 때문이지 않나 싶다는 것.
fourth paper
http://bioinformatics.oxfordjournals.org/content/early/2009/10/24/bioinformatics.btp612.full.pdf
다음은 분석 툴에 대한 논문이다. 정확히 이야기 하면 R package.
checklist
1. Segmentation algorithm : for identification of uncovered region in tiling array
2. Local convolution method : finding operon boundary
3. How do they decide polycistronic & monocystronic operon (maybe by DSSS)
4. In polycistronic how they divide genes in operon
5. Sigma 70 promoter region (TSS located within 60bp from CDS start site)
Tuesday, March 1, 2011
object-c on linux
다음주 주말부터 아이폰 앱 강좌를 듣는다. 그냥.. 너무 내 평소 코딩이 편파적이지 않은가 해서 듣는건데, 여튼 그런데 과정이 아무래도 중급이다. 기본적으로 object-c를 알아야 하는 정도 해서 급하게 object-c를 익혀 보려 하는데.. 책에서는 그냥 c compiler로도 object-c 의 컴파일이 가능한 것처럼 이야기 하지만(물론 리눅스에서 사용하면 Cocoa와 같은 클래스를 사용 할 수 없다나 뭐래나...) 실상 일반적으로 리눅스에는 그렇지 않다. gnustep을 깔아야 하는데 ubuntu인 경우는 apt-get으로 깔수 있는거 같은데 fedora의 경우 yum으로 검색하면 나오질 않는다. 그래서 이를 소스 파일로 깔아야 하는데 여튼 뭐 그런 내용들이 다음 url에 나온다.
http://www.techotopia.com/index.php/Building_and_Installing_GNUstep_on_Linux
대략 내용은 gnustep에 필요한 패키지를 yum을 통해서 깔고 gnustep 소스 받아서 깔고 그담에 bashrc에 . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh를 명시해야 한다는거다. 그리고 compile 할때 gcc `gnustep-config --objc-flags` -L/usr/GNUstep/Local/Library/Libraries -lgnustep-base 를 붙여줘야한다(이것의 의미는 잘 ..). 그냥 따라하기만 하면 된다. 문젠... 왜 회사에서 돌아가는데 hanil 서버에서는 에러가 난다는 거지.. 아.. 이럴때 너무 싫어
http://www.techotopia.com/index.php/Building_and_Installing_GNUstep_on_Linux
대략 내용은 gnustep에 필요한 패키지를 yum을 통해서 깔고 gnustep 소스 받아서 깔고 그담에 bashrc에 . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh를 명시해야 한다는거다. 그리고 compile 할때 gcc `gnustep-config --objc-flags` -L/usr/GNUstep/Local/Library/Libraries -lgnustep-base 를 붙여줘야한다(이것의 의미는 잘 ..). 그냥 따라하기만 하면 된다. 문젠... 왜 회사에서 돌아가는데 hanil 서버에서는 에러가 난다는 거지.. 아.. 이럴때 너무 싫어
Sunday, February 27, 2011
뇌를 자극하는 알고리즘
뇌를 자극하는 알고리즘. 산지 한 1년 정도 된 책인데. 요즘 알고리즘을 다시 제대로 차례차례 공부해보고자 다시 보고 있는 책. 처음 샀을 때는 필요한 부분만 눈으로 살펴봤는데.. 역시 남는게 없었다. 해서 지금은 코딩을 따라해본다. 역시나 눈으로 익혔던 C를 이용해서. 나름 여러모로 도움이 된다.. 직접 C도 써보고 코딩도 하기에 알고리즘이 확실히 이해가 되기도 하고..
4장까지는 자료구조로 리스트, 스택, 큐, 트리를 설명하고 5장 이후로는 탐색등등의 알고리즘을 설명한다. 완전 잘 쓴 책이지는 내가 판단을 못하겠다. 뭐 다른 알고리즘 책을 제대로 본적이 없기 때문에.
이책을 다 마치면 금선생의 권유로 algorithms on strings trees and sequences 라는 책 볼 예정이다. 그 예정이 꼭 이루어지길 간절히 소망한다.
2011/3/6
책의 절반정도를 보고 있는데. 왠만하면 아직까지는 코딩을 따라하고 있다. 왜 처음에 이 책을 샀을 때 대충봐도 될거라고 생각했는지 지금 생각하면 참 아쉽기만 하다. 코딩을 따라 하고 있는데도 쉽지 않다. 물론 그냥 저자가 인도하는데로 이해한다면 그냥 그냥 그렇게 가지만 왜 그렇게 해야만 했는가하고 조금이라도 의문을 갖는다면 다른 경우의 수가 틀렸음을 증명해야 하기 때문에 만만치 않다. 코딩을 따라해도 몇일이 지나면 까먹는다. 만만찮다. 최소한 수십번은 코딩을 따라하고 외워야 감이 올거 같다. 마치 예전에 정석 공부하듯이(저자의 머릿말이 와닿는다. 천재 화가 피카소도 다른 유명한 작품들을 수없이 모사 했다는것).
2011/3/12
많이 어렵다. 아니. 익숙하지 않다. 확실히 많이 짜야 한다. 읽을땐 이해하고 따라가는거 같아도 막상 책 덮고 C로 짜려면 아무것도 기억이 나지 않는다. 그리고 단순히 이해하는 것 조차 어려운 부분도 있다. 레드블랙이진트리나 문자열 탐색인 보이어-무어 알고리즘은 이해조자 어렵다. 아.. 나의 무지함에 막막할 뿐이다.
4장까지는 자료구조로 리스트, 스택, 큐, 트리를 설명하고 5장 이후로는 탐색등등의 알고리즘을 설명한다. 완전 잘 쓴 책이지는 내가 판단을 못하겠다. 뭐 다른 알고리즘 책을 제대로 본적이 없기 때문에.
이책을 다 마치면 금선생의 권유로 algorithms on strings trees and sequences 라는 책 볼 예정이다. 그 예정이 꼭 이루어지길 간절히 소망한다.
2011/3/6
책의 절반정도를 보고 있는데. 왠만하면 아직까지는 코딩을 따라하고 있다. 왜 처음에 이 책을 샀을 때 대충봐도 될거라고 생각했는지 지금 생각하면 참 아쉽기만 하다. 코딩을 따라 하고 있는데도 쉽지 않다. 물론 그냥 저자가 인도하는데로 이해한다면 그냥 그냥 그렇게 가지만 왜 그렇게 해야만 했는가하고 조금이라도 의문을 갖는다면 다른 경우의 수가 틀렸음을 증명해야 하기 때문에 만만치 않다. 코딩을 따라해도 몇일이 지나면 까먹는다. 만만찮다. 최소한 수십번은 코딩을 따라하고 외워야 감이 올거 같다. 마치 예전에 정석 공부하듯이(저자의 머릿말이 와닿는다. 천재 화가 피카소도 다른 유명한 작품들을 수없이 모사 했다는것).
2011/3/12
많이 어렵다. 아니. 익숙하지 않다. 확실히 많이 짜야 한다. 읽을땐 이해하고 따라가는거 같아도 막상 책 덮고 C로 짜려면 아무것도 기억이 나지 않는다. 그리고 단순히 이해하는 것 조차 어려운 부분도 있다. 레드블랙이진트리나 문자열 탐색인 보이어-무어 알고리즘은 이해조자 어렵다. 아.. 나의 무지함에 막막할 뿐이다.
Friday, February 25, 2011
ensembl api
시작 url
http://www.ensembl.org/info/docs/api/index.html
Core databases and APIs
1. DB connection
내가 이해한걸로는 우선은 registry 라는 모듈의(클래스 인듯..) load_registry_from_db라는 메소드로 DB에 연결을 한다. 아니면 ensembl_registry.conf 파일을 미리 만들어서 load_all()이란 메소드로 conf 파일에 명시된 DB로 연결한다. http://www.ensembl.org/info/docs/api/registry.html
2. Object Adaptors
Registry 모듈로 DB에 연결되었으면 DB의 데이터를 object(데이터를 캡슐화 한것같은..)로 가져와야 한다. 이때 object adaptor를 사용한다. 그러니까 DB의 데이터 덩어리를 object라고 하고 이것들을 생성하기 위해 DB의 구조 정보등을 담고 있어서 우리가 검색하고자 하는 query 정보만 주면 object를 가져오게 하는 adaptor를 생성해야 한다. 이때 사용하는 것이 Registry의 get_adaptor 메소드.
http://www.ensembl.org/info/docs/api/core/core_tutorial.html
3. Object
object는 slice, gene, exon등 데이터인데 이는 2번 스텝에서 생성한 adaptor를 이용해서 adaptor에 쿼리를 인자로 줘서 생성한다. object는 reference로 return하기 때문에 while과 shift를 사용하길 권장한다. 주의 할점은 data object에서 시퀀스를 뽑아내면 그것의 strand와 상관없이 항상 + strand로 나온다. position도 strand와 상관없이 +strand 기준으로 작은 bp가 start 이 된다.
slice : object represents a single continuous region of a genome ,
features : objects in the database which have a defined location on the genom
그러니까 slice는 그냥 dna 가닥이고 feature는 게놈상의 정의된 위치, 그러니까
2번 스텝의 url 뒷내용은 각 object에 대한 이야기 므로 위의 내용이 API 사용의 큰 개념인 듯하다.
살짝 본 후 느낀바는...
DB에서 sql 데이터 받아와서 DB를 만든후 혹은 파일들을 다운 받아서 파싱해서 처리해야 하는 일을 ensembl api를 이용해서 DB의 구조는 신경쓰지 않은채 할 수 있다. 잘만 이용하면 사전에 필요한 귀찮은 작업을 하지 않고 api만을 이용해서 할수 있다. 또한 던진 쿼리에 return인 object가 여러데이터 들이 캡슐화로 이루어 졌기 때문에 그 object에 왠만한 데이터는 다 들어 있다. eutil 같은 경우에는 특정 파일에 대한 내용만 가져오는 식인데 ensembl api는 내 쿼리에 해당하는 자료들이 어떠한 구조를 이루어 넘어 오기 때문에... 말이 복잡한데 그냥 쉽게 말하면 eutil은 file이 넘어 오는데 반에 ensembl api는 C의 구조체 같은 (혹은 class)가 return되기에 자료의 접근만 잘하면 parsing없이 데이터를 뽑아 낼수 있는거 같다. 다만 문제라고 한다면 네트워크를 이용해서 데이터를 얻어 오는 거라서 좀 느리다는거(참기 힘든 정도는 아니다. 꽤 빠르다. eutil 보다도 어떻게 보면 나은듯??). 알아둘 만 하다.
http://www.ensembl.org/info/docs/api/index.html
Core databases and APIs
1. DB connection
내가 이해한걸로는 우선은 registry 라는 모듈의(클래스 인듯..) load_registry_from_db라는 메소드로 DB에 연결을 한다. 아니면 ensembl_registry.conf 파일을 미리 만들어서 load_all()이란 메소드로 conf 파일에 명시된 DB로 연결한다. http://www.ensembl.org/info/docs/api/registry.html
2. Object Adaptors
Registry 모듈로 DB에 연결되었으면 DB의 데이터를 object(데이터를 캡슐화 한것같은..)로 가져와야 한다. 이때 object adaptor를 사용한다. 그러니까 DB의 데이터 덩어리를 object라고 하고 이것들을 생성하기 위해 DB의 구조 정보등을 담고 있어서 우리가 검색하고자 하는 query 정보만 주면 object를 가져오게 하는 adaptor를 생성해야 한다. 이때 사용하는 것이 Registry의 get_adaptor 메소드.
http://www.ensembl.org/info/docs/api/core/core_tutorial.html
3. Object
object는 slice, gene, exon등 데이터인데 이는 2번 스텝에서 생성한 adaptor를 이용해서 adaptor에 쿼리를 인자로 줘서 생성한다. object는 reference로 return하기 때문에 while과 shift를 사용하길 권장한다. 주의 할점은 data object에서 시퀀스를 뽑아내면 그것의 strand와 상관없이 항상 + strand로 나온다. position도 strand와 상관없이 +strand 기준으로 작은 bp가 start 이 된다.
slice : object represents a single continuous region of a genome ,
features : objects in the database which have a defined location on the genom
- gene : grouping of transcripts
- transcript : grouping of exons
- exon
- translation : trascript 객체의 translation 메소드를 호출하면 나오는 것으로 CDS와 UTR을 위한것.
- transcript객체에는 translate가는 메소드도 있는데 이는 protein sequence를 위한것
- proteinFeature : amino acid sequence object. translation 객체의 get_all_proteinFeature()의 return object
- Alignment Feature : slice 객체의 DnaAlignFeatures과 ProteinAlignFeatures 메소드로 각각 dna와 protein을 genome 에 alignment 한 feature
- repeat : RepeatMasker 와 TRF로 찾아진 repeat region, slice 객체에서 get_repeatmasked_seq 메소드를 이용해서 인자에 따라 hard 또는 soft masked sequence를 얻어낼수 있다.
- Maker : imported into the Ensembl database from UniSTS and several other sources (primer sequences, product size...).
그러니까 slice는 그냥 dna 가닥이고 feature는 게놈상의 정의된 위치, 그러니까
2번 스텝의 url 뒷내용은 각 object에 대한 이야기 므로 위의 내용이 API 사용의 큰 개념인 듯하다.
살짝 본 후 느낀바는...
DB에서 sql 데이터 받아와서 DB를 만든후 혹은 파일들을 다운 받아서 파싱해서 처리해야 하는 일을 ensembl api를 이용해서 DB의 구조는 신경쓰지 않은채 할 수 있다. 잘만 이용하면 사전에 필요한 귀찮은 작업을 하지 않고 api만을 이용해서 할수 있다. 또한 던진 쿼리에 return인 object가 여러데이터 들이 캡슐화로 이루어 졌기 때문에 그 object에 왠만한 데이터는 다 들어 있다. eutil 같은 경우에는 특정 파일에 대한 내용만 가져오는 식인데 ensembl api는 내 쿼리에 해당하는 자료들이 어떠한 구조를 이루어 넘어 오기 때문에... 말이 복잡한데 그냥 쉽게 말하면 eutil은 file이 넘어 오는데 반에 ensembl api는 C의 구조체 같은 (혹은 class)가 return되기에 자료의 접근만 잘하면 parsing없이 데이터를 뽑아 낼수 있는거 같다. 다만 문제라고 한다면 네트워크를 이용해서 데이터를 얻어 오는 거라서 좀 느리다는거(참기 힘든 정도는 아니다. 꽤 빠르다. eutil 보다도 어떻게 보면 나은듯??). 알아둘 만 하다.
Subscribe to:
Posts (Atom)