Saturday, October 23, 2010

python 개발 환경 구축

요즘 보는 있는 python 책들 어디서나 IDE(intergrated development enviroment)로 eclipse와 PyDev를 추천한다. 해서 미루다 미루다 미루다 오늘 한번 새로운 IDE로 이를 써볼려고 install 중이다.


1.eclipse + PyDev install
의외로 간단하다. eclipse 홈피 가서 eclipse 다운받고(난 classic 버젼으로 다운 받음) 그뒤 eclipse 압축 풀고 그담에 실행 시키고 help 메뉴로 가서 install new software을 선택한 뒤에 work with란에 http://pydev.org/updates 라고 넣어준다음에 pydev를 클릭해서 인스톨한다.
그뒤 다시 eclipse를 재실행 시킨후 window 메뉴에서 preferences 메뉴를 선택한뒤 PyDev 트리 마이템을 펼쳐 Interpreter에 python을 선택한다. 그리고 나타나는 대화상자 상단에 python interpreter 섹션에 new 버튼을 클린한뒤에 browser에서 python실행 파일을 선택하고 open 버튼을 누르고 나면 선택한 인터프린터를 위한 라이브러리 리스트를 보여주는 대화상자가 나타나는데 ok 버튼을 누르면 설정이 끝나게 된다.
http://pydev.org/manual_101_install.html

2.동적 라이브러리란?
ctypes 이라는 python의 모듈이 있는데 C언어와 호완이 가능하게 하는 모듈로 동적 라이브러리는 가져다가 쓸수 있게 한다. 그런데 동적 라이브러리란 무엇인가. C 언어 include 설명때 본적이 있는것 같은데.. 그래서 링크를 걸어본다.
http://blog.naver.com/ddrkcodz?Redirect=Log&logNo=10069875361

3.gcc 설명 및 옵션
http://blog.naver.com/alan100?Redirect=Log&logNo=60045179899

3.동적 라이브러리 만들기
opcode (*.o)에서 프로그램에서 바로 동적 라이브러리 생성: http://adnoctum.tistory.com/231
정적 라이브러리 생성 후 이를 가지고 동적 라이브러리 생성 : http://blog.naver.com/mklife?Redirect=Log&logNo=150024128340

4.동적 라이브러리의 장점
http://blog.naver.com/no1rogue?Redirect=Log&logNo=30094944212

In conclusion
정리를 해보면.. 결국 ctypes 모듈로 C 언어로 된 라이브러리(동적 라이브러리) 를 사용하려면 
C 언어로 된 프로그램을 동적 라이브러리로 생성. 
오른쪽과 같은 libhello.c 프로그램이 있을때 
gcc -fPIC -c libhello.c   #컴파일을 하되 링크까지는 수행하지 않고 오브젝트 파일 까지만 생성한다.
gcc -shared -fPIC -o libhello.so libhello.o  #shared 옵션을 이용해서 공유(동적) 라이브러리 생성
오른쪽 그림과 같이 동적 라이브러리를 사용한 python 프로그램 생성


끝...


동적 라이브러리를 이용하는 C 언어 프로그램을 만들시에는 사용하는 동적 라이브러리가 /usr/lib64에 있어야 한다. (주의 : *.so 파일을 옮긴 뒤에 ldconfig를 해야 한다)

Thursday, October 21, 2010

knock out, knock in, knock down - genetically manupulated mice and the nobel prize

http://www.nejm.org/doi/pdf/10.1056/NEJMp0707712

The New England Journal of Medicine 에 2007년도에 나온 논문
2007년도 노벨상 생리의학 부문에 대한 설명이다.

Eukaryotic Cytosine Methyltransferases

Yong-Gun Lee and I decided to write introduction and method of paper which we are planning. I don't want to fit introduction shortly after finishing research for publishing the paper. that's not the right order of work. Though this process, we try to make up for lack of story line.

This paper is quite long, but it's really good to understand a general concept of methyltransferase. Actually it's true that I deferred a study on DNMT families. Through this time, I will organize these things.


This paper was published in Annu. Rev. Biochem. 2005.

Introduction
     Cytosine Methylation in Host Defense and Genome Stability
     Cytosine Methylation and Gene Regulation
     Conservation Between Bacterial and Eukaryotic Cytosine Methyltransferase
The cytosine methyltransferase families of eukaryotes
1.Dnmt1 : 처음으로 purified & cloned 된 DNA methyltransferase. Cedar가 hemimethylaed DNA가 unmethyl보다 빨리 methylation된다는 것을 발견. Dnmt1은 hemimethylated DNA 의 methylation에 preference 하나 de novo methylation 기능도 있는것처럼 이야기를 한다(어떤 factor에 의해 inhibit 되어 있을지도 모르지만 여튼 methylation pattern이 유지 된다는 의미에서 de novo methylation 이 block을 당해야 해서). 처음 murine erythroleukemia cells의 Dnmt1의 cDNA를 찾았고, 이것은 1620개의 AA(1100 N-termi + GKGK.. + 500 C-termi)로 되어 있고 그중 C-terminal 쪽의 ~500AA가 bacterial restriction methyltransferase M.Ddel과 유사함을 알아냄.
N-termi를 보면 진화 과정에서 functional 한 domain이 늘어나는것을 볼 수있다.N-termi에 핵안으로 Dnmt1을 import 시키는 시퀀스(NLS domain)와 replication foci와 결합하는 시퀀스가 있다. 원래는 G0기에는 Dnmt1은 degradation되나 두번째 start codon에서 부터 생긴 짧은 Dnmt1은 그렇지 않으며 이 짧은 것만 가지고 있는 mouse는 생존가능.
mouse의 oocyte에는 Dnmt1의 짧은 폼만 있으며 이를 Dnmt1o 라고 한다(이와 같이 truncation되어있는것은 oocyte에서의 Dnmt1의 많은축적과 연관되어 보임).
Dnmt1의 functional domain 중 BAH(bromo-adjacent homology) domain은 protein-protein interaction module로 chromatin regulation에 속하는 protein에서도 발견된다. cysteine-rich region은 zinc ions과 결합하는데 기능은 안알려져 있지만 모든 mammalian의 methyltransferase와 MBD(methyl-binding domain) protein와 CpG binding protein에서 발견. GK(glycine, lysine) rich region은 N-termi와 C-termi를 연결해주는데 histone H4의 N-termi 와 유사하고 posttranslational modification의 역할을 하는게 아닐까 추측된다.
biological role of Dnmt1 :
loss of function allleles of Dnmt1의 결과 1. genome이 demethlation되어있고 2. homozygous embryos에서는 대부분의 imprinted gene의 biallelic expression이 나타나고 3.Xist 유전자의 demethylation결과 activation되서 모든 X chromosome 이 inactivation되고 4.exogenous marker gene의 mutation rate 올라가며 5.ES cells이 undifferentiated 상태에서는 정상적으로 크다가 differentiative 상태로 유도되면 apoptosis로 인해 죽게 되고 6.마지막으로 LTR transposons의 발현이 많아진다.
Heterozygosity for mutations in Dnmt1 결과 : 이것이 실제 측정가능한 demethylation에  영향을 미치는 지는 정확히 밝혀지지 않았지만 1.Dnmt1을 wild type의 10%정도 발현하게 했더니 생존 가능하나 성장의 제한이 생기며 lymphoma에 걸리 확률이 크게 높아지며 2. Dnmt1의 overexpression의 경우 imprinted loci에 unmethylated allele이 de novo methylation되는 현상이 나타났다(이는 Dnmt1이 methylation maintenance 역할을 한다는 것에 반하는 것).
DNMT1은 human colon cancer에서 200배 가까이 많이 발현된다는 것이 보도되어 있다(어떤 랩에서는 human colon cancer에서 다른 양상을 보이기도 한다). 일반적으로 tumor에서 m5C가 적어지는 것을 발견하는데 이는 Dnmt1의 발현이 많아지는 것과 모순되는 결과다.또한 아직까지 Dnmt1 유전자의 amplication이나 mutation으로 인한 cancer의 보고가 없기때문에 이것이 꼭 oncogene이라는 증거는 없다.
2. MET1 of A.thaliana : 처음 plant의 DNA methyltransferase는 A.thaliana에서 발견되었으며 이는 Dnmt1과 유사하였고 이름을 MET1이라 하였다. 시퀀스는 Dnmt1와 거의 유사(GK rich region이 살짝다르지만 C-termi 는 50% identity, N-termi 는 24%), BAH domain이 존재, cysteine-rich region은 없다. invitro 상에서는 MET1의 methylation 기능이 보고되지 않았지만 in vivo 상에서 homozygous mutation이 demethylation되고 phenotypic abnormalities가 나타난다. MET1의 mutant는 CpG 에 국한되어 demethylation이 나타나고 오히려 CpNpG의 methylation은 증가함을 보인다. 또한 MET1이 de novo methylation에 관여한다는 논문이 있다. homozygous mutation에 의한 demethylation은 식물에서는 후손의 heterozygous mutant나 wild-type segregants에 유전된다. 이는 각 세대마다 methylation pattern이 reset되는 mammalian과 차이를 나타낸다. 이는 genome을 알더라도 그 genome의 history를 알지 못하면 phenotype을 알 수 없다는 이야기가 될수 있다.
3. The Dnmt3 Family : 야기mammalian genome은 Dnmt3 family에 속하는 Dnmt3A와 Dnmt3B를 encoding한다. 또한 세번째 homologue인 Dnmt3L도 있는데 이는 methyltransferase activity는 없고 germ line에서의 regulatory factor로의 역할을 한다. 식물(A.thaliana)에서는 Dnmt3 family인 DRM(domains rearranged methyltransferase) family 는 methyltransferase의 motif가 circular permutation 되어 있다. 또한 Apis mellifera(꿀벌)에서도 Dnmt3가 발견됨.
-DNMT3A AND DNMT3B IN MAMMALS : Dnmt3A와 Dnmt4B의 시퀀스는 거의 유사하고 PWWP domain, cysteine-rich zyinc-binding region, MBDs를 포함하고 있다. hemimethylated 와 unmethylated 를 같은 rate로 methylation 하며 거의 CpG를 methylation시킨다. 그러나Dnmt3A는 CpA도 methylation 시킨다고 알려져 있다. adult cell에서 tissue마다 양이 다르게 발현되나 기본적으로 Dnmt1보다 발현양이 적다.


-DNMT3L :

-DNMT3 FAMILY MEMBERS IN INVERTEBRATES :
-THE DRM FAMILY : RNA-GUIDED METHYLTRASFERASES IN PLANTS :


4.DIM-2 and RID in N.crassa
5.Chromomethylases
6.Dnmt2
Methylated DNA binding proteins
regulatory inputs that control sequence-specific DNA methylation
     interatcion of Repeated seqeunces
     regulation of cytosine methylation by histone H3 Methylation
     swi2/snf2 helicase homologues and cytosine methylation
     RNA directed DNA methylation
conclusion

Wednesday, October 20, 2010

Reference-Free validation of Short Read Data

plos one에 얼마전에 나온 논문
NGS 데이터 파이프 라인을 구축하는데 가장 처음의 step으로 들어가게 될 프로그램이라 생각해서 리뷰를 해봤는데...
genome bias 에 대한 이야긴 줄 알았는데 그건 아니다. 하긴 read 만 가지고 전체 genome이 아닌 bias된 게놈만이 시퀀싱 된 줄 알수는 없다만..

이 논문은 리드 자체에 bias가 있는지를 체크 해볼 수 있는 프로그램이라고 보면 될거 같다.
read 별 각 position 별로 AGTC가 잘 분포 되어 있는지 또 k-mer로 정했을때 그 k-mer또한 분포가 position별로 동일한지를 체크 할수 있다 (체크 할수 있다기 보다는 그림으로 그릴수 있다 (우리같이 수주를 하는 사람들한테는 가능한 그림이 많이 들어가는게 좋아보이기 때문에).

java로 된 프로그램인데 사실 내용은 너무나 단순하다. 그런데 그 단순한 프로그램에다가 왜 두번째 analysis는 넣지 않은건지.. java 전혀 모르는 나에게 고생하면서 k-mer 일 때의 frequency가 나오게 만들게 하다니.. 아 그리고 quality 파일 만들어주는 변수가 int형으로 선언되는 바람에 read가 무자게 많으면 overflow나서 음수값이 출력된다는거..(스크립트 언어에 익숙한 나로는 이거 찾느라 피곤하게 됐다.)


알게된 내용:
1. mac에서 개발할 프로그램을 archive로 packing하면 __MACOSX가 딸려 생성된다는 것(첨에 프로그램 풀고 나서 이 폴더가 뭔가 했다.http://floatingsun.net/2007/02/07/whats-with-__macosx-in-zip-files/ : 이것에 대해 한소리 하는 블로거).
2. solexa 의 read가 첫 10 base의 퀄리티는 좋을지 몰라도 상당히 시퀀스가 안정적이지 못하다(뒷부분의 퀄리티가 안좋아 져서 항상 그것만 고려해서 trimming을 햇는데 앞부분의 시퀀스도 썩 훌륭한 경향을 보이지 않다니... 얼마나 짤라내야 하는거야...).


PPT

Tuesday, October 19, 2010

linux distribution. choice of linux

http://www.linux.com/learn/docs/ldp/282996-choosing-the-best-linux-distributions-for-you

어떤 linux를 쓸까 고민하는데 위 링크가 이에 대한 나름의 조언이랄까.. 정리랄까..

use-case 별로 가장 괜찮은 linux를 추천한다.

hanil 서버의용도 best enterprise server라고 해야 하나.. 어떤 카타고리인지도 모르겠지만..
확실한건 fedora 가 많이 언급이 안된다. desktop으로는 ubuntu를 laptop으론 openSUSE를 추천하는데..

괜히 fedora 깔았나.. 난 푸른 계열의 기본 바탕화면이 좋은데..

gnuplot

http://hgh73.blog.me/90093480100

Sunday, October 17, 2010

linux server

--apache server--

일단 hanil 서버를 관찰 결과를 보자면 fedora 13을 깔았는데 기본적으로 모든 서버가 다 작동 되는걸로 보인다.

apache server의 위치는 /etc/httpd/ 그 안에 conf 폴더가 설정 폴더.
-httpd.conf 파일을 내용: 대부분 주석에 내용으로 파악이 가능. 
httpd.conf 를 수정뒤 syntax error가 없는 지 확인하기 위해서 httpd -t 명령어를 이용하면 된다.


"keepAlive"에 대한 설명 : http://cafe.rootcenter.com/130079030932
"MPM"(multi_processing modules) : perfork, worker, perchild 방식이 있고, 현제 시스템의 방식은 httpd -l 명령어로 확인가능
1. perfork : 응답 프로세스를 미리 띄어 놓고, 클라이언트의 요청이 있을 때 자식 프로세스가 반응할 수 있도록 하는 설정
2. worker : 프로세스 기반의 서버인 prefork와 스레드로 클라이언트 요청에 응답하는 혼합된 스레드 서버.
3. perchild : 고정 프로세스 개수를 설정한 후 각 프로세스는 특정 스레드를 개수만큼 작동시킴.
"Listen" : 웹서버의 서비스 포트로 80 이 기본이며 다른 포트 번호를 사용할 경우  ServerName 지시자에 명시해야 한다.


"ServerAdmin" : 시스템 관리자 Email 주소
"Directory tag:아파치 서버가 접근하는 각 디렉토리에 아떠한 서비스와 기능들을 허용하고 또는 삭제 할 것인가 설정하는 부분
1.options: "indexes" : 웹사이트에 접속했을 때 index.html이 없을 경우 웹서버 스스로 그 디렉토리의 파일들을 보여 줄것이라는 의미, ExecCGI: CGI 스크립트 실행 허용,
SSI 란? http://blog.naver.com/v_kazel_v?Redirect=Log&logNo=110028893616
2.AllowOverride : 웹문서 디렉토리에서 접근 제한 설정 파일인 .htaccess 파일을 작동시킬 것인지 여부를 결정(접근 제한을 위해선 AllowOverride를 All로 설정하고 .htaccess 만들어 놓는다),
3.order : http://blog.naver.com/hkh119?Redirect=Log&logNo=120021176586
"UserDir" : 루트 이외의 다른 계정으로 홈페이지를 운영하고자 할때 사용자의 웹문서 기본 기렉토리를 UserDir 지시자로 지정 해준다. 먼저 default 로 되어 있는 UserDir disabled를 제거 하고 일반적으로 UserDir public_html 이라고 지정하고 나서 를 지정한다.
"DirectoryIndex" : 클라이언트가 웹서버에 대한 요청이 있을 때 클라이언트에 전달하는 html문서의 순서를 지정해 주는 지시자
"AccessFilleName" : 각 디렉토리에서 접근 제어 정보를 가지고 있는 파일명을 지정하는 지시자.


--보안--
기본적으로 파일이 생성되면 umask에 값을 뺀 값으로 퍼미션이 잡힌다. umask 명령어로 기본 umask 값을 볼수 있다(일반적으로 umak는 0022).
SUID,SGID 프로그램은 보안상 위험하다.
<참고>파일 권한 {'x'1:,'w':2,'r':4}, user,group,other 순, 4자 permission 구조 sticky bit(1000) : 모든 사용자가 쓰고 삭제 할수 있는 디렉토리를 의미, 파일구조 맨마지막에 t가 붙는다, SetGID(2000) : , SetUID(4000)
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=110&docId=64531886&qb=Y2htb2QgU2V0dWlk&enc=utf8&section=kin&rank=2&search_sort=0&spq=0&pid=g7VyQB331xwssZijnSKssv--138254&sid=TLsxtXIPu0wAAC2@F3g
find / -type f \( -perm -04000 -o -perm -02000 \) : SUID/SGID 프로그램 존재 확인 명령어
find / -perm -2 -print : 누구나 쓰기 가능한 world-writable 파일을 모두 찾는 명령어
find / -nouser - nogroup -print : 유저 권한이 없는 파일 검색
find / -name .rhosts -print : 원격 호스트 파일 (.rhost) 파일 검색. 이는 제거 하는것이 좋다.

charttr : 파일 속성을 변경해주는 유틸리티로 루트 자신도 파일을 변경하지 못하도록하는 것.
lastlog : /etc/passwd에 등록되어 있는 사용자의 최근 로그인 상황을 볼수 있다(자주 사용하지 않을 사용자가 로긴 되어있을 경우 크래킹을 의심).

Nmap : 포트 스캔 도구
yum list  : 설치된 패키지와 업데이트 가능한 패키지 보기
yum list installed <패키지 명> : 특정 패키지 설치 확인
yum list available 'somthing*' : yum 가능한 패키지 보기(somthing이란 이름이 들어간 패키지)
yum check-update : 업데이트 가능한 패키지 보기
yum install <패키지 명> : 패키지 설치
yum info <패키지 명> : 패키지 정보 알아보기

yum install nmap 으로 nmap 설치 이후 hanil 서버의 열린 포트를 알아본다
nmap -sS  
그뒤 특정 포트에 대한 설정을 iptable이용하여 하면 STATE 필드가 filtered로 변한다.

Snort : 네트워크를 통한 침입에 대한 탐지 및 경고를 시스템 관리자에게 알려주는 네트워크 침입 탐지 시스템으로 libpcap 라이브러리를 이용하여 네트워크상의 패킷과 설정 파일에서 정의된 룰에 의해서 침입 및 공격을 알려주는 도구.
yum install snort
/etc/snort/snort.conf 파일에 설정 내용이 들어 있다(var HOME_NET 로 설정).
외부에서 포트 스캔을 하거나 접근 시도가 있으면 /var/log/snort 에 기록이 남는다.

lastlog : 텔넷 접속으로 로그인한 사용자를 추적할때 사용하는 명령어로 /var/log/lastlog의 내용 출력
last : /var/log/wtmp 파일에 저장된 정보를 읽어 들여 로그인한 사용자의 정보를 출력 (last graphy21 : 특정 사용자 로그인 정보)
xferlog : FTP로 파일 전송 기록을 저장하는 파일 (more xferlog)
커널과 시스템에 관련된 로그 메시지들은 syslogd와 klogd 두개의 데몬에 의해서 /var/log/messages에 기록된다.

--SElinux (Security Enhanced Linux)--
a
--TCP/IP 네트워크 (iptable 설정)--