Monday, May 30, 2011

package in python

프로그램 짜면서 package화를 잘 안시켜봤다.. 사실.. 내가 짜는 프로그램이라고 해봤자.. 조각난 script 정도라서.. 여튼 package의 개념이 좀 없었는데.. 이번 De bruijn graph package보면서 함 봐봤다. __init__.py의 파일의 개념이 좀 이해가 안갔는데 첨에볼때.. 어떤 책에서는 마치 import * 할 때 package안의 어떤 모듈들이 import 되는지에 대한 list를 명시 하는 것처럼 설명하기도 하고.. 그런데 어떤 package를 보면 아예 __all__ 이란 내장 변수는 없고 그냥 코드만 있기도 하다. 


<__init__.py>
이런 개념을 젤 잘 설명해주는 것이 여기. package도 모듈과 같이 사용될 수 있는데 그 걸 가능하게 해주는 파일이 __init__.py 


<setuptools>
그리고 setuptools 이용하는 방법 : 여기

<eggtestinfo>
아.. 그리고.. 하나 더 이것땜에 이게 뭔가 찾느라 고생 많이 햇는데.. 
전에 de bruijn graph 포스팅 한거에서 파일 받아서 보면 setup.py 에 test_suite이라는 인자(?)가 있는데 이는 아무리 뒤져봐도 setuptools 패키지 설명에서는 찾아볼수가 없었다. 이건 여기에 설명. 




<python egg>
아 이렇게 된 이상 python의 egg를 안 찾아 볼수가 없는데(항상 미뤄왔던 일..)
여기에 잘 나온다. 
요약하자면..
python egg는 리눅스의 rpm 같은 것으로(perl의 cpan에 더 가까워 보인다) easy_install 이라는 프로그램(easy_install은 setuptool package의 한 부분으로 setuptools는 distutils를 기반으로 한다)으로 쉽게 install이 가능케 한다. easy_install 라고 하면(easy_install 도 가능)  알아서 pypi에서 그 package가 있는지 검색해서 install 해준다(구글에서 검색하면 pypi에 어떻게 package를 등록하는지도 나온다). 또 좋은건 dependency 해결해 준단다. 
아.. classifiers 라는게 egg를 만든담에 pypi에 올렸을 때 제대로 된 카테고리에 올라가게 끔 하는거구나.. 
글구 pythonpaste에 대해서도 언급하는데 이건 다음에..

Thursday, May 26, 2011

RNA-seq 에 관한 이것 저것

<expression unit> 
RPKM : reads per kilobase of transcript per million of sequenced read
FPKM : expected fragments per kilobase of transcript per million fragments sequenced


음.. 정확한 개념은 ERANGE 논문과 Cufflinks 논문을 참조하면 된다. 


간단한 intro는 Cufflinks 논문 intro에 잘 나와있는데.. RPKM이라는 개념이 gene 단위 레벨에서의 expression unit으로 생각한다면 FPKM은 transcript 단위에서의(하나의 gene에서도 여러 isoform의 transcript가 존재 가능) expression unit으로 생각하면 된다.


내가 여기서 이해가 안갔던 단어가 fragment인데.. 이건 뭐냐면 RPKM은 read 하나하나에 의미를 두는데 반해 FPKM은 paired-read의 한 쌍이 fragment를 의미한다 (별거 아닌건데..). 


자세한 내용은 cufflinks 논문의 supplementary 데이터에 나오는데.. 이해 되면 다시 정리 하도록 하련다.




참고로 KOBIC에서도 NEUMA 라고 NAR에 논문을 낸게 있는데 이것도 보면 좋을듯. 이것 역시 정리되면 다시 올린기로 한다.


<bias> 
EMBL의 자료를 보면 strand를 정보를 살리기 위한 두가지 방법과 그냥 strand를 안살리고 한거랑 tiling array로 비교한 그림이 있는데 bias가 상당하다. random hexamer bias도 있고.. 관련 자료를 좀 훑어봐야 할듯.

Wednesday, May 25, 2011

Trinity

논문 소개는 여기서 했고 실질적으로 setting 하면서 기억해야 할거 command line에서 주의 해야 할것 등을 기록하려 한다. 워낙 붕어 머리라. 


일단 trinity download 및 documentation은 여기.


<install>
그냥 tar 랑 gzip 풀고 기본 폴더에서 make 한번 눌러주면 된다. 그럼 inchworm 이랑 chrysalis 가 컴파일 된다(c++로 되어 있음). butterfly 는 java인데 precompiled software라 할 필요 없단다.


<running>
기본 명령어는 sample_data 폴더 안에 runMe.sh 에 있다. run 하는 batch 파일은 기본 폴더에 있는 Trinity.pl 파일이다. 
위 링크에 걸려 있는 documentation을 요약하자면..
  • strand-specific sequencing 일때는 -SS_lib_type 옵션을 사용하란다(default 는 strand 안가린다). 
  • 또 fungal genome 처럼 gene이 compact 한 genome에서는 UTR 부위에서 transcript의 overlap이 생기기 때문에 -jaccard_clip 옵션을 사용하란다. 요 옵션은 Bowtie가 깔려 있어야 한단다(정확하게는 jaccard_clip의 옵션의 기능을 모르겠다).
  • computing grid 일 때는 --run_butterfly 옵션을 사용하지 말고, grid 가 아닐때 단순시 cpu가 많을땐 --run_butterfly 옵션이랑 --cpu 옵션 넣어서 돌려라. --run_butterfly 옵션 없을때 결과 폴더 안에 Chrysalis 폴더 안에 butterfly_commnads 가 있는데 이걸 이용해서 grid를 사용하라.
<hardware requirements>
1G of RAM per 1M pairs of Illumina reads. Chrysalis 단계가 deep recursion 땜시 stack 메모리가 많이 필요하단다. 이럴 때 세팅은 여기처럼 하란다(Q&A에 나온다). 
전체 시간은 1 hour per million pairs of reads(이 표현이 정확이 1Mbp 당인지 아니면 1M paired-end count를 이야기 하는건지 정확히 모르겠네). 


<output file>
--output 옵션에 지정한 대로 아니면 default 인 Trinity_dir 폴더안에 Trinity.fasta 파일이 생기는데 이는 full-length transcript의 fasta 파일.




좀더 자세하게 알고 싶으면 여기,  advanced guide


<Inchworm>
read를 k-mer로 쪼개서 hash table에 저장한다. 이때 base는 2-bit encoding을 사용한다(A:00,G:01 이런식). k-mer는 25 로 고정(package로 돌릴때), 단 따로 Inchworm만 돌리면 32까지는 허용.
monitor.out 이란 파일이 inchworm의 log 파일. 
inchworm.K25.L48.fa 가 inchworm의 결과 파일. K는 k-mer를 뜻하고 L은 contig의 minimum Length를 의미. 그 안에 보면 각 contig의 이름에 >a1;142 K: 25 length: 3697로 되어 있는데 a1뒤의 숫자는 k-mer의 average frequency. 이는 나중에 expression quantity에 사용된다.


<Chrysalis>
Chrysalis는 inchworm에서 생긴 contig들을 alternative spliced transcript 나 paralogous transcript들끼리 clustering 하는 역할. 각 cluster의 contig를 사용해서 de bruijn graph 생성하고 read를 mapping한다. 각 cluster의 de bruijn graph는 butterfly 단계를 위해 각각 다른 파일로 저장됨
이때 생기는 파일은 chrysalis/RawComps.0 폴더 안에 있는데 파일들은 이렇단다.



*chrysalis intermediate outputs*
chrysalis/RawComps.0/comp9.raw.graph  :de Bruijn graph based on Inchworm contigs only
chrysalis/RawComps.0/comp9.raw.fasta :raw RNA-Seq reads that map to the Inchworm contigs based on k-mer composition
*chrysalis outputs to be used by Butterfly as inputs*
chrysalis/RawComps.0/comp9.out :the de Bruijn graph with edge weights incorporating the mapped reads
chrysalis/RawComps.0/comp9.reads :the read sequences and anchor points within the above graph

이것과 함께 butterfly가 돌수 있는 명령문이 있는 butterfly_commands와 butterfly_commands.adj
가 생성되는데 butterfly_commands.adj가 heap size랑 parameter등이 있는 파일로 butterfly 실행시 이 파일을 실행해야 한다.


<Butterfly>
butterfly는 이제 chrysalis에서 생긴 *.out과 *.reads 파일을 보고 가능성 있어 보이는 trascript를 fasta 파일로 report 한다.
Trinity.pl 에다가 --run_butterfly를 줬으면 이건 /util/cmd_process_forker.pl을 돌리는 거다(forker란걸 보니 프로세스 늘려서 실행 시키는 프로그램인 갑다).
결과로 comp*_allProPaths.fasta 라는 파일이 생기는데 이게 possible transcrip의 fasta 파일. accession에 대해선 그냥 메뉴얼보자(쓰기 귀찮다). 
butterfly 돌릴때 그러니까 butterfly_commands.adj에 있는 명령문에서 -V 5 라고 하면 돌아가는 상황이 투명하게 보여지는데, 뭔소리냐면 compacted graph structure를 report 하고 graph 순회하면서 들린 node를 report한다. 그 파일이 comp*_justBeforeFidingPaths.dot. 이 파일은 GraphViz 로 볼 수있단다. 이 파일의 accession도 설명하는데 것도 manual 보자

Tuesday, May 24, 2011

De Bruijn Graph

genome이건 transcriptome이건 de novo assembly에 사용되는 알고리즘인데..
wiki에 나온건 간단하게 그냥 그 graph의 특징만 나왔다.
그런데 다음 링크는 코드까지 있다. 내 오늘은 그냥 링크만 기록하지만 코드 분석 후에 다시 posting을 하도록 하겠다.


음 코드를 봤는데 생각보다 별게 없다. De bruijn graph를 그리는 것도 아니고.. 링크에 댓글처럼 나도 댓글 달아서 graph까지 그리는 코드를 달라고 해볼까나..


그래서 다른 코드도 찾아봤다.
새로 찾은 블로그는 왠지..


이 코드가 그나마 de bruijn graph를 그리긴 한다. 단.. 거기까지만.. 
visualization 하는 코드도 있는데 xml-rpc인가로 원격으로 하는것 같다.

Sunday, May 22, 2011

A Primer on Scientific Programming with Python

사실은 python으로 applet 어떻게 web에 심는건지 알고 싶어서 검색하다가 나온책. applet 심기랑 전혀 상관없다. 과학적 데이터를 어떻게 프로그래밍으로 다루나 뭐 이런 거 나온 책. 수치로 식 세우고 plot 그리고 그런 책. 생각보다 python으로 숫자, 식 관련해서 그래프 그리고 뭐 이런 프로그래밍을 거의 안해봤는데(이런건 R써야 할거 같아서).. 알아두면 괜찮을거 같아서 띄엄 띄엄 보고 있는책. 영건씨가 알려준 어둠의 경로로 받아서 보고 있는데 괜찮은거 같다. 언넝 ipad와서 넣어가지고 다니면서 봤음 하네. 


배우게 된거. 

  • 젤 중요한것 하나 : vectorization instead of scalar code. 명시적을 source에 for가 있으면 건 scalar code.
  • arrays : list 랑 비슷하긴 한데(list의 variant 라고 한다).. element가 같은 type이고 갯수가 고정일 때 사용. list에 비해 계산이 빠르고 memory도 적게 먹음. 아.. 이게 원래 python의 data type이 아닌데.. array 이란 객체가 있긴 있다. python에. 근데 이거 별로 효율적이지 않단다. 그럼 어딨는거냐? numpy 패키지에 있는 array 쓰란다. from matplotlib.pylab import * 하면 from numpy import * 까지 실행되고 이건 뭐하는 거냐면 matlab 스타일의 syntax를 사용하는 패키지. 
  • numpy.array는 b = a[1:-1]하면 copy되는것이 아니라 reference가 달리는것. 곧 b = a[1:-1]로 변수 b를 a 데이터가 가르키는 곳을 가르키므로 b를 변형하면 a도 변형된다.
  • 원인을 찾지 못했는데 scitools.std 를 import 하려면 from maplotlib.pylab import *을 먼저 해야 한다. 나만 그런건지 모르겠는데.. 왜 그러지.. 

Thursday, May 19, 2011

genome sequencing 정리

genome assembly를 회사에서 시작할려는지 박사님께서 데이터를 하나 보내왔다(구글에서 찾아진다.. 이 말인즉 누구 박사가 어쩌다 하나 찾아서 참고하라고 보냈나싶다).
사실 예전 부터 genome sequencing 부분에서 조금씩 이해가 안가는 부분이 있었는데 이를 확실하게 정리해본다. 첨 human genome sequencing 했을 때 사용됐던 방법이 shotgun sequencing 이랑 bac-to-bac 방식 거기에 대한 소개는 다음에 잘 나와있다. shotgun이야 익숙한데 bac-to-bac은 익숙하지 않다. 특히나 physical mapping 부분은 이해가 되지 않는다(genetics 수업을 제대로 안들었다). 해서 여기를 참조한다(아 요 physical mapping pdf 어렵다.. ).


처음 데이터에 있는 내용은 음.. 각종 시퀀싱 platform을 섞어서 한거 같은데 Bac-by-Bac도 진행해서 굉장히 사용가능한 정보가 많은거 같은데.. ppt 형식만 봐서는 정확히 이해는 가지 않는다. 논문 method를 보지 않는 이상. 

Saturday, May 14, 2011

DNAnexus

Galaxy에 이어 DNAnexus도 알아본다. DNAnexus는 사실 회사라 이용할려면 돈을 내야 한다. 듣기로 데이터 10기가에 얼마.. 뭐 이런식으로 돈을 받는다고 하는거 같은데 정확한 정보는 아니다. 


DNAnexusAmazoncloud computing 을 이용하여 기가 혹은 테라 단위의 large-scale whole-genome sequencing 데이터를 저장 및 분석할 수 있는 web-based platform을 제공하고 있다. 그러니까 사용자는 NGS 데이터와 돈만 있으면 데이터의 저장 및 각종 분석이 web browser에서 클릭으로 수행되어 진다. 편하다. 그럼 어떤 분석들을 제공하냐.. 아래와 같다(아래 내용은 DNAnexus에서 제공하는 whitepaper를 해석한 정도다, white paper는 계정 만들고 나면 conduct new analysis에서 experiment type 저하면 옆에 생긴 link에 있다).


-분석 모듈-

1. RNA-Seq / Transcriptome-based quantification
Annotated transcript의 발현양을 profiling 하기 위한 분석 타입. Annotated trascript의 발현 양을 분석하는 것이기 때문에 novel splice site novel 3 end를 찾지는 않는다(이를 위해서는 3번 과 9번 타입의 분석을 이용할 것). Splice junction을 포함한 transcript로 부터의 데이터가 있을 수 있기 때문에 genomic mapping을 사용하지 않고 Refseq이나Ensembl과 같은 데이터베이스에서 얻은 reference transcriptome re-align 한다. Reference transcript에다가 readmapping 한 뒤에 RPKM 값을 구함으로서 normalization을 한다하나 이상의 trascript를 갖는 유전자의 경우 가장 높은 RPKM 값을 같는 transcript report 된다.

2. 3SEQ / Transciptome-based quantification
3SEQ protocol 에 의해 만들어진 library를 분석 할 때 이용하는 분석 타입. 1번 분석 타입과의 차이라면 3SEQ library의 데이터를 이용한다는 것일반적인 RNA-seq  trascript의 전반에 걸쳐 read가 나오는 반면 3SEQ librarytranscript 3 end(대부분 3 UTR) 부분에서 read가 나온다. read 하나가 transcript 하나를 의미그렇기에 RPKM을 이용하지 않고 posterior probability를 이용한 weight를 준 read count 값을 이용해서 transcript 양을 측정한다샘플 간의 비교를 할 때는 read수로 normalize 하거나 아니면 Z score를 계산해서 비교한다

3. 3SEQ / Expressed regions in genome
3SEQ protocol에 의해 만들어진 library를 이용하여 reference annotation에는 없는 novel한 유전자나 alternative 3UTR을 찾을 때 사용하는 분석 타입. Kernel density estimator방법으로 read start site smoothed profile을 계산한다. Strand 별로 read enrichement peak를 찾고 minimum region enrichment, minimum region length, minimum reads 3가지 filtering 조건으로 peak filtering 한다(4번 타입의 분석 방법과 유사하다).  

4. ChIP-Seq / Peaks or regions
ChIP 데이터를 분석하기 위한 분석 타입이 분석에 있어서 Peak region의 개념 차이가 중요한데, peak single genomic site에 의한 것이고 region single site에 의한 것이 아닌 좀 더 broad 한 영역에 걸쳐진 것그래서 promoter binding protein ChIP-seq 데이터의 경우 peak-based analysis를 해야 하고 histone binding protein의 경우 regional analysis를 선택해야 한다.
Kernel Density Smoothing : 일단은 read groupping해서 read density mapping을 만든다이때 이용하는 방식이KDEs(kernel density estimators). Posterior probability 90% 가 넘는 mapped read들의 mapping position의 중점을 그read의 위치로 생각해서 genome 상의 position마다의 read 개수를 합한다그리고 이 density map smoothing 하게 하기 위해 KDE를 사용하는데 K,  kernel은 정규분포를 이용하고 h, breadth는 분석 샘플에 따라 다르게 한다(transcription factor의 경우 30, RNA polymerase의 경우 60, histon biding protein의 경우 100, 숫자가 클수록density가 좀 더 부드러워 진다). Regional analysis의 경우 expected extent of the region을 위한 parameter를 제공해야 하는데 이는 나중에 q-value를 구할 때 이용된다.
Combinding forward and reverse strands : ChIP-seq 자체가 read의 끝을 읽는 것이므로 각 strand의 한쪽 끝에서read가 나오기 때문에 원래 하나의 peak가 생겨야 할 곳에 library의 길이의 반 만큼 shift 되서 양쪽에 두개의 peak가 생긴다그래서 이 두 개의 peak library 길이 반 만큼 shift 해서 합쳐서 원래의 peak를 추론하게 된다.
Experiment versus Background/Input Samples : peak KDE값을 normalize 하기 위해 uniformCoverage를 구한다이는peak가 없을 때곧 총 mappable read가 고루 genome 상에 분포 하였을때의 depth를 구하고 이를 peak KDE 값에 나누어 주어 KDE 값을 normalize한다만약 input 데이터(immunoprecipitation을 하지 않은 데이터)가 이용 가능 하다면 sample normalized KDE/ input normalized KDE 값을 이용한다.
False Discovery Rate :

5. Enriched regions in genome
DNase1 hypersensitivity experiment open chromatin region을 찾는 실험과 같은 특정 실험에서 생성된 readenrichment region을 찾는데 이용되는 분석 타입분석 방법은 strand에 상관없이 하나의 density profile을 만든다는 것을 제외하곤 4번 타입의 ChIP-seq 분석방법과 동일하다또한 중요 parameter 3가지는 3번째 타입인 3SEQ / region 과 동일하다.

6. Nucleotide-level variation
Sample genome reference 간에 차이를 확인하기 위한 분석 타입차이라고 하는 것은 SNP, MNP, insertion, deletion을 뜻한다.

7. Cancer nucleotide variation
Cancer 관련 variation을 찾기 위한 분석 방법. 6번 분석 방법과 동일한데 두 개의 sample 그러니까 cancer samplenormal sample reference에 대한 variation 분석이 동시에 진행된다.

8.Restriction enzyme quantification
Methyl-seq (methylation-sensitive restriction enzymes을 이용하여 methylated 된 DNA를 잘라서 시퀀싱 한 것)과 같이 reference genome에 대한 restriction site를 찾기 위한 분석 타입

9. Alternative splicing, Exome
알려진 exon novel splice junction을 찾기 위한 분석 타입. Novel  splicing junction을 찾음과 동시에 expression quantification이 가능하다.

10.Population allele frequency
Multiple population에 걸쳐서 일어나는 variation을 찾기 위한 분석 방법. 6번 타입의 분석 방법을 기초로population의 그룹 간의 비교를 가능하게 해준다

Tuesday, May 10, 2011

Galaxy

삼성의 핸드폰 galaxy말고 large-scale genome analysis의 분석을 위한 platform인 galaxy. 논문은 여기. 사이트는 요기. genome 관련 데이터 분석을 총망라한 사이트. 몇달전에 함 보고 vod 몇개 보다가 그냥 넘겼는데.. 회사 박사님께서 기분이 상하시는 바람에 요약 보고서를 만들어야 한다. 뭐.. 맘에 안드는 점도 있지만.. 회사기 때문에 시키는거 제대로 하는게 내 일이기에.. 글고 뭐 알아봐서 남주는 것도 아니고 이미 많은 논문에서 citation 하기에 알아야 하는 사항인지라.. 즐거운 맘으로 정리 해보자. 대략적으로다가..


사실 홍창범씨(?.. 성함이 맞나 모르겠네.. 이 분 블로그 보면 참 깊다는 생각이 든다. 같이 일하면서 배워보고 싶은 분) 블로그에 잘 나와있는데.. 이것만 봐도 대략 보고서 나온다. 아마도 홍창범씨 블로그 내용이 galaxy screencast의 내용이 아닌가 싶다. 이 VOD에 이미 설명이 충분히 잘 되어 있기에.. 원래는  구구절절하게 내용을 쓸려 했는데 그냥 여기서 접을련다. 나중에 metagenome 분석 부분만 좀 깊게 review를 해볼련다. 끝.


아 하나 더 Galaxy 모듈 중에 큰 항목이 RGenetics가 있는데 이게 뭔지 아직 정확히 모르겠으나 그 tutorial은 여기.

SMASHCommunity

저번 포스팅에 리뷰 했던 논문(enterotypes of human gut microbiome) 쓴 사람들이 만든 metagenome pipeline인 SMASHCommunity. 네이쳐에 나온 논문을 보면.. 아.. 정말 잘했구나라는 생각밖에 안든다(사실 아직 다 읽진 않았다.. 이런 게으름.. 항상 이런식이다.. 상흠 선배 말투가 떠오르는군). 우린 갈길이 멀었구나..




일단 bioinformatics에 나온 논문부터 요약하자면
SMASH는 sanger나 454 read를 분석하기 위한 standalone 프로그램. metagenome pipeline이 없는것은 아니지만(CAMERA, IMG/M, MG-RAST 등) web-server이거나 아니면 단순 read count를 세는 정도라 한다(참고로 네이쳐 논문의 메소드를 보게되면 read count를 그냥 쓰는 것이 아니라 gDNA의 경우 genome size로 나누고 rRNA의 경우 genome 상의 16s rRNA의 copy수로 나눠서 계산한다). 그 밖에 취약점들을 있는데 생략한다.

Friday, May 6, 2011

stylin with CSS (스타일링 CSS)

멋도 모르고 jquery 부터 손대다가.. css를 혼자서 추측하고 있는 상황이 된지라.. 차근 차근 css부터 봐야 겠단 생각에 보기 시작한 책. 내용은 상당히 맘에 든다. 내게 딱 맞는 수준이랄까. 표준화라는 개념도 잘 나와있고 전체적으로 맘에 든다. 단 번역이 좀.. 그 사람 블로그 들어가니까 참으로 열정적이고 그렇긴 한데.. 솔직히 이렇게 말하고 싶진 않지만 번역은 별루인거 같다. 때때로 영어를 읽는건지 한글을 읽는건지.. 여튼.. 이 책 괜찮다. 나같이 아주 아주 대충 css를 알고 어떻게 해야 할지 우왕좌왕하는 사람에겐. 특히나 괜찮은 책.


아 글고 xhtml 태그 리스트 있는 사이트


아.. 이 책 번역 엉망이다. 너무 심한거 같네.. 읽으면 읽을 수록 구글 번역기 돌렸다는 생각이 드는데.. 


이 책을 보고 얻은 것중에 가장 중요한 것은 table 태그를 사용하지 말라는 것. 예전에 웹프로그램밍 했을때는 웹페이지의 구조를 table 태그를 이용해서 잡았는데 이 책에서는 절대 그렇게 하지 않기를 권장한다. html은 content를 나타내고, 즉 content에 적합한 태그를 골라서 html을 만들고 이를 구조화하는 것은 css로 한다. jquery를 봤을때 jquery로 블록의 위치를  컨트롤 하는걸 보고 놀랐는데 이게 css의 힘이였군.. 이거 보고 jquery 보면 깨닭는게 다르겠다 싶다.


기억해야 할것 몇가지만 적어본다.


-css 파일 최상단부에 * {margin:0; padding:0;}을 넣을 것.
-영문 폰트일때는 font size의 단위를 ems로 한다(한글일때는 px로 한다, 깨지기 때문에).
-font 속성 나열할때 fot-weight, font-style, font-variant는 순서 상관없이 처음에 그 담엔 font-size, font-family 순으로 나열한다.
-vertical margin collapsing, 세로 마진(vertical margin)이 겹치면 그 사이 간격이 두 세로 마진의 합이 되는 것이 아니라 둘중 큰 값이 된다.
-p {width:400px; padding:0 20px;} 이라고 했으면 이 p 블록은 폭이 440px(400 + 20*2)를 갖게 된다.
-padding 값이 변하게 되면 블록 요소들의 너비가 달라지는데 이를 방지 하기 위해서 블록 안에 블록을 설정한다. 그러니까 div 안에 또 다른 div를 설정한다.
-inline 태그는 block 태그를 감쌀수 없다. 허나 display 속성을 이용하면 가능.
-한 블록태그 안에 다른 블록태그가 있을때 바깥의 블록태그의 position 속성이 static으로 되어 있으면 안쪽의 블록 태그의 position속성이 absolute로 되어 있을때 안쪽 블록 태그의 기준점은 body이나, 바깥쪽 블록태그의 position 속성이 relative로 되어 있다면 기준점은 바깥쪽 블록 태그가 된다.
-가상 클래스인 hover는 IE6에서는 a 태그에서 밖에 안먹힌다. 웹에서 csshover.htc를 다운 받아서 body 태그에다가 body {behavior:url(csshover.htc);} 라고 넣는다. 그러면 IE6 에서 모든 태그에 hover가 먹힌다.
-별표 핵과 백슬러쉬 핵 : div * ul {... css 선언... } 은 ul이 div의 자식이 아니고 손자라면 선택되지 않는다. 이 * 와 IE6에서만 먹히는 html 요소를 이용해서 IE6에서만 읽히는 규칙을 만들 수 있다. * html div.id {..somthing css..} 이런식으로 하면 IE6에서만 이 태그 즉 id를 클래스로 갖는 div 태그에 css 적용을 시킬수 있다.
-html의 리스트 속성 (ul,ol,dl)로 menu를 만들 수 있는데 브라우져마다 list의 margin, padding이 다르기 때문에(특히 IE6) list를 div로 둘러싸고 그 div 안에 속성들 그러니까 div_something * {padding:0; margin:0;} 을 해준다.
-인라인 아이템과 블록 아이템은 서로 상호 작용하지 않는다. 뭔말인고 하니

라고 테그가 되어 있을때 css는 div{float:left;} a{padding:16px 6px;}라고 되어 있으면  a 태그에 padding을 했기 때문에 위 아래로 16px 앞뒤로 6px 만큼의 여유공간이 생기고 div의 float이 되어 있으므로 a 태그 크기만큼 맞춰질거라고 생각되는데 실은 그렇지 않다. 왜냐면 a 태그는 인라인 아이템이고 div는 블록아이템이라 서로 상호 작용을 하지 않아서, 그럼 어찌해야 하냐 css의 a 태그에다가 display:block; 을 넣어줘서 a 태그를 block 속성으로 변환

Wednesday, May 4, 2011

submission of genome - 5

이번에는 annotation을 내가 만든거 말고 NCBI의 staff이 추천한 PGAAP를 써볼려한다. in-house annotation pipeline의 문제는 naming.. 아.. product랑 gene 이름 참.. 난감하다. 또한 사실 내가 만든 annotation보다 이게 좀 강점이 있다. 거의 비슷하긴 하지만.. 여튼 해서 PGAAP를 어떻게 이용하는지 알아본다.

PGAAP를 쓰려면 (링크는 다음)
1. 일단 그렇듯 먼저 genome project를 등록한다. 결정적으로 locus_tag prefix를 써야하기 때문에 ..
2. 그 담엔 PGAAP submission을 위한 3개의 필수 파일와 추가적인 하나의 파일(옵션), 그러니까 총 4개 파일이 필요하다. 
3. 파일을 만들기 전이나 후에 ncbi로 컨택해야 한다. 그러면 ftp 계정을 만들어 준다. 그 곳으로 파일을 올리고 다시 메일을 보내서 파일을 업로드 했음을 통지해야 한다.


스텝 2에서의 파일의 내용은 아래와 같다.

 *.email, *.fasta, *.template 파일이 필수. 파일 이름은 _. 인데 locus_tag는 1번 단계에서 등록했거 쓰고 under bar 한다음에 날짜.

*.email 에는 NCBI와 contact 할 메일 주소.
*.fasta 에는 sequence가 들어가는데 head에 >gnl|LrgU|Contig01 [organism=Bacterium bacterius 253] [strain=253] [gcode=11] 과 같은 내용이 꼭 들어가야 한다. 그리고 시퀀스는 IUPAC base만 들어갈것.
*.template 파일은 submitter와 그 organization에 대한 정보가 ASN.1 파일 형식으로다가.. 이거 Sequin 프로그램 쓰면 만들수 있단다.


% 주의 사항 %
2번 스텝에서 sequin으로 template 파일을 만드는데 topology 정보를 넣는 옵션을 찾을 수가 없는데 메일을 보내봤더니 답장에 링크와 같이 fasta 파일의 header에다가 넣으란다.
3번 스텝에서 ftp 접속시 linux로 바로 접속해서 파일을 업로드 한다(뻘짓하지 말고 ftp <주소>, mput * 하면 됨).