분류 전체보기 (321)

반응형


Python Scaling 방법 정리


/* 2017.8.27 by. 3months */


머신러닝에서 데이터를 모델에 트레이닝할 때, 일반적으로 데이터를 Scaling 해서 사용한다. Scaling을 통해 데이터의 Scale을 맞추면 Weight의 scale도 일관성 있도록 맞출 수 있을 것이다.


MinMax Scaling은 최댓값 = 1, 최솟값 = 0으로 하여, 그 사에 값들이 있도록 하는 방법이다.

즉 데이터 X의 scaling된 값 Xscale은 아래와 같다.


Xscale = (X-Xmin) / (Xmax-Xmin)


from sklearn.preprocessing import MinMaxScaler
a = [[10], [9], [8], [6], [2]]
scaler = MinMaxScaler(feature_range=(0,1))
a = scaler.fit_transform(a)
print(a)

결과

[[ 1.   ]
 [ 0.875]
 [ 0.75 ]
 [ 0.5  ]
 [ 0.   ]]



StandardScaling은 평균=0과 표준편차=1이 되도록 Scaling 하는 방법이다. 이는 표준화라고도 부른다.


Xscale = (X-X_mean) / Xstd


from sklearn.preprocessing import StandardScaler
a = [[10], [9], [8], [6], [2]]
scaler = StandardScaler()
a = scaler.fit_transform(a)
print(a)
print(a.mean())
print(a.std())

결과

[[ 1.06066017]
 [ 0.70710678]
 [ 0.35355339]
 [-0.35355339]
 [-1.76776695]]
0.0
1.0




반응형
반응형


필자가 설치한 환경은 운영체제 우분투 14.04 LTS Server 버전이고 GPU는 1080TI를 사용한다.


1. CUDA 설치


https://developer.nvidia.com/cuda-downloads


linux -> x86_64 -> Ubuntu -> 16.04 -> deb(network)

출처: http://goodtogreate.tistory.com/entry/TensorFlow-GPU-버전-우분투-1604에-설치-하기 [GOOD to GREAT]
linux -> x86_64 -> Ubuntu -> 16.04 -> deb(network)

출처: http://goodtogreate.tistory.com/entry/TensorFlow-GPU-버전-우분투-1604에-설치-하기 [GOOD to GREAT]
linux -> x86_64 -> Ubuntu -> 16.04 -> deb(network)

출처: http://goodtogreate.tistory.com/entry/TensorFlow-GPU-버전-우분투-1604에-설치-하기 [GOOD to GREAT]

이렇게 선택후 아래 나오는 대로 한다. (deb파일 다운로드후 입력하라는 커맨드 입력하면 설치됨)


  1. `sudo dpkg -i cuda-repo-ubuntu1404_8.0.61-1_amd64.deb`
  2. `sudo apt-get update`
  3. `sudo apt-get install cuda`


2. cuDNN설치


https://developer.nvidia.com/rdp/cudnn-download


해당 링크에서 로그인이 필요하다. 로그인 후에,,


Download cuDNN v7.0 (August 3, 2017), for CUDA 8.0 <= 이거 설치


이 때, CUDA 버전에 맞는 cuDNN을 설치하여야 한다. 저는 CUDA 8.0 이므로 위 링크 cuDNN을 설치.

* wget 으로 해당링크 다운받으려하니 404 forbidden 오류가 뜬다.

* FTP로 그냥 압축파일을 서버로 옮겼다.



tar xvzf cudnn-8.0-linux-x64-v7.tgz

sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include

sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64

sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


sudo apt-get install libcupti-dev



또한 ~/.bashrc에 cuda, cudnn 라이브러리 경로를 적어두어야한다.


vi ~/.bashrc


로 파일을 열어서 맨 밑에 아래 텍스트 추가.



export PATH="/home/jyahn/anaconda2/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda

tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


출처: http://goodtogreate.tistory.com/entry/TensorFlow-GPU-버전-우분투-1604에-설치-하기 [GOOD to GREAT]
tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


출처: http://goodtogreate.tistory.com/entry/TensorFlow-GPU-버전-우분투-1604에-설치-하기 [GOOD to GREAT]
tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


출처: http://goodtogreate.tistory.com/entry/TensorFlow-GPU-버전-우분투-1604에-설치-하기 [GOOD to GREAT]



tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

추가적인 dependencies도 설치한다.

$ sudo apt-get install libcupti-dev


출처: http://goodtogreate.tistory.com/entry/TensorFlow-GPU-버전-우분투-1604에-설치-하기 [GOOD to GREAT]

3. tensorflow GPU 설치


아래 링크에 따라 virtual env를 구성한다.

https://github.com/Dataweekends/zero_to_deep_learning_udemy



이후,



source activate ztdl

conda install tensorflow-gpu



4. 설치되었나 확인


bash에서


python


>> import tensorflow as tf

>> sess = tf.Session()



아래와 같이 GPU 이름이 나오면 성공.


name: GeForce GTX 1080 Ti
major: 6 minor: 1 memoryClockRate (GHz) 1.582
pciBusID 0000:02:00.0
Total memory: 10.91GiB
Free memory: 10.75GiB
2017-08-30 17:41:13.373074: W tensorflow/stream_executor/cuda/cuda_driver.cc:523] A non-primary context 0x2d63250 exists before initializing the StreamExecutor. We haven't verified StreamExecutor works with that.
2017-08-30 17:41:13.374815: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties:
name: GeForce GTX 1080 Ti
major: 6 minor: 1 memoryClockRate (GHz) 1.582
pciBusID 0000:03:00.0
Total memory: 10.91GiB
Free memory: 10.75GiB
2017-08-30 17:41:13.695077: W tensorflow/stream_executor/cuda/cuda_driver.cc:523] A non-primary context 0x2d67600 exists before initializing the StreamExecutor. We haven't verified StreamExecutor works with that.
2017-08-30 17:41:13.696140: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 2 with properties:
name: GeForce GTX 1080 Ti
major: 6 minor: 1 memoryClockRate (GHz) 1.582
pciBusID 0000:82:00.0
Total memory: 10.91GiB
Free memory: 10.75GiB
2017-08-30 17:41:14.016589: W tensorflow/stream_executor/cuda/cuda_driver.cc:523] A non-primary context 0x2d6b9b0 exists before initializing the StreamExecutor. We haven't verified StreamExecutor works with that.
2017-08-30 17:41:14.017710: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 3 with properties:
name: GeForce GTX 1080 Ti
major: 6 minor: 1 memoryClockRate (GHz) 1.582
pciBusID 0000:83:00.0
Total memory: 10.91GiB
Free memory: 10.75GiB



참고


http://goodtogreate.tistory.com/entry/TensorFlow-GPU-%EB%B2%84%EC%A0%84-%EC%9A%B0%EB%B6%84%ED%88%AC-1604%EC%97%90-%EC%84%A4%EC%B9%98-%ED%95%98%EA%B8%B0



반응형

'Soft skills' 카테고리의 다른 글

티스토리 블로그에서 수식 쉽게 쓰기  (1) 2018.05.20
반응형

CIGAR Format


출처 - https://genome.sph.umich.edu/wiki/SAM



/* 2017.8.13 by 3months. */


CIAGR Format은 어떠한 Sequence A가 reference genome에 align되어있을 때 이를 나타내 주는 포맷이다.

예를 들어, 아래와 같은 reference sequence와 Read가 있다고 하자. 이 Read를 reference sequence에 align 해보면


RefPos:     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19
Reference:  C  C  A  T  A  C  T  G  A  A  C  T  G  A  C  T  A  A  C
Read: ACTAGAATGGCT

이와 같이 align 된다.

RefPos:     1  2  3  4  5  6  7     8  9 10 11 12 13 14 15 16 17 18 19
Reference:  C  C  A  T  A  C  T     G  A  A  C  T  G  A  C  T  A  A  C
Read:                   A  C  T  A  G  A  A     T  G  G  C  T

이 때 이것을 나타내는 CIGAR Format은

POS: 5
CIGAR: 3M1I3M1D5M

이렇게 되는데 reference의 5번 position부터 시작해서 3개의 Matching, 1개의 insertion, 다시 3개 matching, 1개 deletion, 5개 matching 이라는 뜻이다. ref의 14번 position에 read와 시퀀스가 다르지만, align이 이렇게 되기 때문에 matching으로 쳐준다.



Lastz를 통한 CIGAR Format 생성


lastz_test.fa

lastz_test2.fa



의도적으로 lastz_test fasta 파일의 sequence에다가 4개의 sequence를 insert하고 2개의 sequence를 delete해서 lastz_test2.fa 파일을 생성하였다.



그 다음


lastz lastz_test.fa lastz_test2.fa --format=general:cigar > cigar.txt


를 실행 후, cigar.txt 파일을 열어보면


#cigar
208M4I163M2D138M


위와 같은 결과가 나왔음을 볼 수 있다. 결과를 해석하면 208개 matching 4개 insertion, 163개 matching 2개 deletion, 138개 matchin 이다.



2017.10.8 추가



lastz 사용해서 cigar을 얻을 때 다른 옵션을 주면 substitution도 고려가 가능하다.

반응형

'Domains > Bioinformatics' 카테고리의 다른 글

NGS 분석의 기초 개념  (2) 2017.09.10
ClinVar DB 를 통한 질병 연관 변이 찾기  (0) 2017.09.09
Lastz 실행  (0) 2017.08.13
Lastz 설치 및 테스트  (0) 2017.08.07
Platypus 를 통한 variant calling  (0) 2017.08.07
반응형

lastz_test.fa

lastz_test2.fa



Lastz 실행


/* 2017.8.13 by. 3months */


Lastz를 설치하였으면 간단하게 결과를 뽑아보자.


두 개의 fasta 파일을 폴더에 붙여넣고,


해당 폴더에서 아래 명령어를 입력해보자.



lastz lastz_test.fa lastz_test2.fa



결과

#:lav
d {
  "lastz.v1.04.00 lastz_test.fa lastz_test2.fa
     A    C    G    T
    91 -114  -31 -123
  -114  100 -125  -31
   -31 -125  100 -114
  -123  -31 -114   91
  O = 400, E = 30, K = 3000, L = 3000, M = 0"
}
#:lav
s {
  "lastz_test.fa" 1 511 0 1
  "lastz_test2.fa" 1 521 0 1
}
h {
   ">ref"
   ">ref"
}
a {
  s 47093
  b 1 1
  e 511 521
  l 1 1 194 194 100
  l 195 203 208 216 100
  l 209 221 371 383 100
  l 374 384 511 521 100
}
m {
  n 0
}
#:eof



그러면 콘솔창에 이런 결과가 나온다.



또는 아래와 같이 옵션을 주어서 실행하면 maf 파일로 내보낼 수 있다.


lastz lastz_test.fa lastz_test2.fa --format=maf > lastz_result.maf



lastz_result.maf 파일을 열어보면 아래와 같이 되어있다.  (이것이 무엇을 뜻하는지는 다음에 알아보자..)

##maf version=1 scoring=lastz.v1.04.00
# lastz.v1.04.00 --format=maf
#
# hsp_threshold      = 3000
# gapped_threshold   = 3000
# x_drop             = 910
# y_drop             = 9400
# gap_open_penalty   = 400
# gap_extend_penalty = 30
#        A    C    G    T
#   A   91 -114  -31 -123
#   C -114  100 -125  -31
#   G  -31 -125  100 -114
#   T -123  -31 -114   91


a score=47093
s ref 0 511 + 511 GAAGAGCAGCACACTCAGATCTTCTTACACCATCTCTGGGGGCCGACTGGCAGAGAAGGCTAGGGACTTGGCCAATATCATGCAGCCTTCATGCCTTATTCGGGAAAGGTGCTCCAAATAGGAGGAATATTTGGAAGAAATCCCAATAGGGATTTGGAGACATGCCATTTGGGAATGCAAACCCAGCCCCTCCT--------AGTGCTCCACCCTG----CCCATGTCCCCATTGAACCGACAACCTGCAGAGAGAGCAGGATGCCCACAGCAAGCCCCAAGGACAAAGGCCACAGAGTCAGGGCACCCAAATCCTAACCTAACCTTGCCTGTGCTTCCTGTGTACTGTGGCCATTTTACTTTCCCCCTGTTCCCTCCTCTGTAAATGAGGCCCTTGGACTGCATCAGTGGTTTTTACACTGAGCTCCCTGGAGCTCTGGGGGCCTCAGGGACTATTGTGGAGGCCTTGCTGCATTTGAGAGTGGTGTCTTGTACCCTACTCAACCCATTTTTTCTGTTTTAC

s ref 0 521 + 521 GAAGAGCAGCACACTCAGATCTTCTTACACCATCTCTGGGGGCCGACTGGCAGAGAAGGCTAGGGACTTGGCCAATATCATGCAGCCTTCATGCCTTATTCGGGAAAGGTGCTCCAAATAGGAGGAATATTTGGAAGAAATCCCAATAGGGATTTGGAGACATGCCATTTGGGAATGCAAACCCAGCCCCTCCTAGAGAGAGAGTGCTCCACCCTGCCCCCCCATGTCCCCATTGAACCGACAACCTGCAGAGAGAGCAGGATGCCCACAGCAAGCCCCAAGGACAAAGGCCACAGAGTCAGGGCACCCAAATCCTAACCTAACCTTGCCTGTGCTTCCTGTGTACTGTGGCCATTTTACTTTCCCCCTGTTCCCTCCTCTGT--ATGAGGCCCTTGGACTGCATCAGTGGTTTTTACACTGAGCTCCCTGGAGCTCTGGGGGCCTCAGGGACTATTGTGGAGGCCTTGCTGCATTTGAGAGTGGTGTCTTGTACCCTACTCAACCCATTTTTTCTGTTTTAC


아래 링크에서 lastz 실행과 관련된 다양한 예제를 볼 수 있다.

http://www.bx.psu.edu/miller_lab/dist/README.lastz-1.02.00/README.lastz-1.02.00a.html#examples




반응형

'Domains > Bioinformatics' 카테고리의 다른 글

ClinVar DB 를 통한 질병 연관 변이 찾기  (0) 2017.09.09
CIGAR Format  (0) 2017.08.13
Lastz 설치 및 테스트  (0) 2017.08.07
Platypus 를 통한 variant calling  (0) 2017.08.07
bam 파일 인덱싱  (0) 2017.08.07
반응형

DNA 결합 단백질


Regulatory Genomics 관련 논문을 읽던 중 DNA binding protein을 보고 몰라서 공부하였다.


DNA => RNA => Protein이 되는 과정에서 DNA=>RNA로 변하는 transcription 과정 중 DNA가 RNA로 변하는 것의 시작은 전사개시복합체(transcription initiation complex)가 Promoter 부분에 붙으면서 시작된다. 이 복합체 단백질 중 하나인 RNA중합효소2가 유전자를 전사헤 pre-mRNA를 만든다. 그 다음에 RNA Processing(5'캡 생성, 폴리A 꼬리 생성, 인트론 splicing)을 통해 mature mRNA가 생성된다.


이 과정에서 RNA 중합효소가 전사를 개시하려면 전사인자(transcription factor)라는 단백질이 필요하다. 이들은 보편전사인자(general transcription factor)라고도 불린다. 하지만 이것만 가지고는 전사개시속도가 매우 낮으며 특수전사인자라는 조절 단백질의 작용이 필요하다.


promoter 주변에는 DNA 시퀀스에는 근거리 조절요소가 있다. 그리고 유전자에 멀리 떨어져 있는 원거리 조절요소인 인핸서가 있다. (한 개의 인핸서는 하나의 유전자에만 작용하며, 한 유전자는 여러개의 인핸서를 갖을 수 있다. 인핸서에 붙는 단백질들은 특수전사인자라고 불리며 전사인자 종류중 하나라고 볼 수 있다 )


진핵생물에서 유전자 발현율은 인핸서의 조절요소에 활성자(activator) 또는 억제자(repressor)가 결합함에 따라 증가되거나 감소된다. 결합되는 부분은 DNA Binding site라고 불리는듯하다. 즉 인핸서의 조절 요소에 특정한 단백질이 붙어서 그 인핸서의 표적 유전자의 발현을 조절하는 것이다.  활성자 단백질은 RNA 중합효소를 promoter로 recruting한다. 그래서 전사속도가 빨라진다. 반면 억제자 단백질은 RNA 중합효소가 이동하지 못하게 하여 전사가 될수 없게 만든다.


이렇게 gene expression 조절을 수행하는 여러가지 형태의 단백질(RNA 중합효소, 활성자, 억제자 단백질)을 DNA 결합 단백질 (DNA Binding protein)이라고 하며 이들은 sequence specific하다. 즉, DNA Binding protein을 코딩하는 시퀀스에 문제가 있을 경우 해당 protein의 표적 유전자의 발현에 이상이 생길 수 있다. 그래서 DNA Binding protein의 sequence specificity를 안다면 표적 유전자를 알 수 있게 되고, DNA Binding protein 시퀀스의 disease causing variant를 파악하는데 도움이 된다.


이러한 Transcription factor 등과 같은 단백질에 결합하는 DNA 시퀀스를 알아내는 방법으로 CHIP-seq 방법이 있다.



참고 - 캠밸 생명과학

반응형
반응형


유전체학을 위한 신경망 모델 (Neural Networks for Genomics)


원본글

http://blog.qure.ai/notes/neural-networks-for-genomics


위 글을 번역한 포스팅입니다.



Introduction


딥러닝을 처음 유전체학에 적용하려고 한다면, 최신으로 이루어지고 있는 연구(state-of-the-art)가 무엇인지, 연구자들이 딥러닝을 통해 어떠한 문제를 해결하고자 하고, 이를 어떻게 접근하고 있는지 알아야할 필요가 있다. 이 포스팅은 유전체학에서 유명한 네트워크 구조를 소개하고, 이 네트워크를을 트레이닝할 때 쓰이는 데이터의 타입, 그리고 모델을 통해 최종적으로 예측한 결과가 어떻게 나오는지를 요약한다.


시퀀싱 기술의 발달, 그리고 1000-genome project, encode, geo와 같은 public dataset의 범람에도 불구하고 아직까지 genotype-phenotype 구분, 그리고 시퀀스를 통해 질병을 예측하는 것을 완벽하게 해내지 못하고 있다. Bredan Frey의 이 talk는 딥러닝과 유전체학의 컨텍스트상에서 왜 더 많은 genome을 시퀀싱 하는 것이 반드시 해답이 아니라는 것을 설명하고 있다. genome은 매우 복잡하고, 서로 상호작용하는 수많은 정보 레이어를 갖고 있다. 현재의 대부분의 접근법은 시퀀스를 통해 직접적으로 표현형을 추측하는 것이 아니라, 시퀀스의 일부를 해석하는 시스템을 구축하는 것이다. 아래에 딥러닝이 유전체학이나 전사체학에 적용된 예를 소개한다.



얕은 fully connected networks 를 이용한 초기 연구


초기 연구중 몇몇은 주성분분석을 통해 차원을 축소한 gene expression 데이터를 single layer fully connected network에 적용한 것이다. 이러한 초기 연구는 gene expression을 통해 tumor type을 구분하거나, tumor grade를 예측하거나, 환자의 생존 여부를 예측하는데에 사용되었다. 이러한 연구의 발달은 가장 예측력이 높은 gene의 subset을 찾거나, gene의 signature를 찾는 연구의 발달을 가져왔다. 이와 비슷하게 인공신경망은 microRNA의 발현 패턴을 통해 대장암의 등급을 예측하거나, 암 상태를 예측할 수 있는 microRNA를 찾아내는 연구에 사용되었다.



Autoencoder를 이용한 차원 축소와 특징값 추출


Autoencoder는 유전체학에서 gene expression 데이터로부터 feature space를 줄이거나 유용한 feature를 찾아내는데 사용되어왔다. 한 예는 autoencoder를 사용해 labling 되지 않은 gene expression data로부터 정교한 feature representation을 구현하고, 이를 통해 tumor를 예측하는 classifier를 구현한 이 페이퍼이다. 더 최근 연구는 denoising autoencoder를 이용해 유방암 gene expression data에서 feature extraction을 한 연구이다. 다음은 ADAGE(paper and repository)인데, 박테리아 gene expression 데이터에 비슷한 접근을 한 연구이다. autoencoder를 통해 추출한 유용한 feature들은 암 분류, 에스트로겐 수용체의 상태, 환자의 생존 예측에 활용될 수 있다. 그러면 하나의 autoencoder로 부터 밝혀진 gene expression profile들을 통해 어떠한 조직에도 일반적으로 적용할 수 있는 feature를 밝혀낼 수 있을까? gene expression 데이터 말고 DNA sequence에 autoencoder를 적용하여 유용한 feature를 추출할 수 있을까?



Deep learning을 통해 gene expression, transcript expression level을 예측하기


 유전자의 발현은 공동으로 이루어지는 경우가 많기 때문에, 서로 다른 유전자의 발현 정도는 상관관계가 매우 높다. 이는 특정 subset의 유전자 발현 데이터만 가지고도 나머지 gene의 발현 정도를 예측해볼 수 있다는 것을 뜻한다. 이는 잠재적으로 유전자 발현 profiling에서 비용과 복잡성을 줄일 수 있다. D-GEX라고 불리는 방법이 개발되었는데 이는 퍼블릭 데이터인 CMAP을 통해 트레이닝된 심층신경망 모델로써, 1000개의 gene expression 데이터를 통해 나머지 gene 의 expression 정도를 예측한다. 최근의 topcoder challenge도 이와 비슷한 문제가 올라와있다. 이와 비슷하지만 더 hard한 태스크는 exon이나 transcript의 expression level을 DNA sequence data로 부터 예측하는 것이다. expression level은 sequence로만 결정되는 것이아니라, cellular context 에도 의존한다. ‘Deep learning of the tissue-regulated splicing code’ 라는 타이틀의 연구는 exon 주변의 dna sequence를 통해 그 exon이 splice in 되는 확률 (PSI)를 예측한다. 직접 손으로 만든 genomics feature들(이 genomics feature들은 특정한 mouse의 cell type에서 splicing pattern을 예측할 수 있는 것들이다.) 이 모델을 트레이닝하는데 사용되었다. autoencoder를 통해 이 feature의 차원을 축소하고, cell type을 나타내는 추가적인 input을 통해 multilayer fully connected network를 트레이닝하였다. 이 방법을 통해 저자들은 tool을 개발하고 검증하였는데, 이것을 통해 SNV가 splicing애 미치는 effect를 scoring할 수 있다.



Epigenomics를 위한 Convolutional Networks


최근 연구의 많은 부분이 바로 전사인자 결합 위치나, 인핸서 지역, 시퀀스를 통한 크로마틴 accessibility 예측과 같은 epigenomic의 문제에 CNN을 이용하는 것이다. DeepBind는 주어진 sequence를 통해 DNA나 RNA 결한 proteins의 specificity를 예측할 수 있는 방법이다. 이것을 하기 위해 많은 수의 protein binding micro-array chip-seq 데이터를 통해 CNN이 training 되었다. convolutional stage에는 one-hot encoding된 시퀀스에서 'motif detector' matiireces의 set을 scan한다. learning된 filter는 유전쳏학에서 DNA seuqnece motif를 설명하고 이해하는데 사용된다. 네트워크는 알려진 motif와 알려지지 않은 motif까지도 learning할 수 있다. DeepMotif는 비슷한 계열의 더 깊은 모델로써, 시퀀스에 따라 transcription factor binding(yes or no)를 분류하고, motif를 추출하는데 더 중점을 둔 모델이다. DeepSea는 ENCODE의 epigenomics 데이터로부터 트레이닝되었고, 단일염기의 mutation이 transcription factor binding과 DNAse sensitivity에 미치는 영향을 예측한다. 이 모델의 주요 기능은 다양한 규모의 시퀀스 기능을 학습하는 계층적 아키텍처의 사용, 광범위한 시퀀스 컨텍스트 스캔 기능 및 예측 기능을 공유하는 다양한 염색질 요소의 멀티 태스크 공동 학습이다. 다른 epigenomics에 사용되는 CNN의 예는 Basset인데, DNA 시퀀스로부터 chromatin accessibility code를 예측한다. DeepCpG는 DNA metylation을 모델링하였고, DEEP은 enhancer나 transcription factor binding으로 인해 gene의 transcription이 증가하는 DNA의 region을 예측하는 ensemble framework이다. 또한 chip-seq 실험에서 noise를 감소시키거나 signal을 증폭하기 위한 CNN-based 방법도 있다.



언어처리로부터 영감을 얻은 모델들


언어처리와 genome해석은 어느정도 비슷한 면이있다. 이는 언어처리에 사용되는 방법이 genomics를 이해하는데 유용할 수 있다는 것을 시사한다.


Recurent Neural Networks


RNN은 긴 범위를 갖는 DNA 시퀀스의 상호작용을 발견하기 위해 사용되어왔다. DanQ는 CNN과 bi-directional LSTM(long-short term memory)의 하이브리드로써, convolution layer는 regulatory motif를 발견하고, recurrent layer는 regulatory 'grammer'를 이해하기 위해 motif들 간의 long-term dependency를 발견하는데 사용된다. 다른 예는 DNA-level splice junction prediction인데 RNN이 splice junction이나 intro과 exon의 경계를 발견하기위해 training이 된다. 또한 바이러스 gemoe에서 proten coding region을 발견하는 것도 있다.



Word embedding이나 word2vec 같은 모델


‘Gene2vec: Neural word embeddings of genetic data’ 라는 타이틀을 갖고있는 한 프로젝트는 구글의 오리지날 word2vec을 genome 시퀀스로 구현한 것이다. (genome을 27bp의 'word'로 splitting한다.) 실제로 이것이 인간 genom에 실용적으로 적용될 수 있는지는 흥미로운 주제일 것이다. 비슷한 word2vec 스타일의 모델은 gene expression data로도 트레이닝이 가능하다.




기타 링크

dna binding protein motif

http://2013.igem.org/wiki/index.php?title=Team:XMU_Software/Project/promoter&oldid=359507



반응형
반응형


Regulatory Genomics 개념


regulatory genomics 관련 자료를 찾아보다 아래 링크를 찾아 번역하여 정리하였습니다.


https://biology.stackexchange.com/questions/17810/what-does-regulatory-genomics-mean


Genome은 크게 두 파트로 나뉘어진다.


1. 단백질을 코딩하는 파트 (coding region)

2. 단백질을 코딩하지 않는 파트 (non-coding region)


이 때 단백질을 코딩하지 않는 두 번째 파트는 또 다시 두 개의 클래스로 나뉘어진다.


2-1. transcribe가 되어 생물학적인 활동을 하는 파트 (long noncoding RNA, miRNA, competing endogenous RNA 등)

2-2. transcribe가 안되는 부분 (unscribed non-coding region)


이 중에서 2-2번 unscribed noncoding region은 아마도 1번파트와 2-1번 파트에 regulation 작용을 할 것으로 생각된다. (transcription factor나 transcriptional coactivators/corepressors에 binding 함으로써)


※ transcriptional coactivators/corepressors는 gene의 시작부분 (promoter) 또는 멀리 떨어진 부분(enhancer)에서 해당 gene이 expression이 될지 안될지를 조절한다. enhancer은 gene과 멀리 떨어져있지만 3차원 상에서는 붙어있을 수 있기 때문에 gene expression을 조절할 수 있다. (genome은 세포 안에서 접혀져 있기 때문이다.)


Regulatory Genomics는 바로 genomics "features"라고도 불리는 이 unscribed non-coding region에 대한 연구이다. 어떻게 그들이 gene regulation을 하는지 알아내는 것이다. 이 분야의 연구의 대표적인 예는 ENCODE project의 파트로써 publish된 페이퍼들이다.






ENCODE 프로젝트 링크


http://www.nature.com/encode/#/threads


ENCODE 프로젝트 소개 (홈페이지 내용 번역)


ENCODE(Encyclopedia of DNA Elements) 프로젝트는 National Human Genome Research Institute가 후원하는 프로젝트로써 genome 상에서의 transcription, transcription factor association, chromatin structure, histone modification을 밝혀내기 위한 프로젝트이다. 이러한 genome 상에서의 기능적인 요소들을 식별함으로써 현재 인간 genome의 80%의 부분이 최소 1개 이상의 biochemical function 을 한다는 것 알아내었다. 이러한 functional annotation에 관한 광활한 자원들은 genome과 유전자의 regulation과 oragnization에 있어 새로운 통찰력을 제공하고 있다.


ENCODE 관련 한글로 정리된 블로그


http://blog.daum.net/kimuks/7535222


https://madscientist.wordpress.com/2012/09/18/%EC%98%A4%EB%8A%98%EC%9D%98-%EB%85%BC%EC%9D%BD%EB%82%A8-%EC%97%94%EC%BD%94%EB%93%9C%EB%A5%BC-%EB%94%94%EC%BD%94%EB%93%9C%ED%95%98%EA%B8%B0/



Regulatory Genomics 및 Epigenomics 관련 강의 자료

https://simons.berkeley.edu/talks/regulatory-genomics-epigenomics


반응형
반응형

Lastz 설치


Lastz는 Large-Scale Genome Alignment Tool의 약자로 말그대로 큰 genome 시퀀스를 alignment하는 툴이다.


이 링크에 들어간 후 https://github.com/lastz/lastz


프로젝트 파일을 git을 통해 clone하거나 zip파일로 다운받은 후, 압축을 해제하여 README.lastz.html 이 파일을 웹 브라우저에서 연다.

 



이런 느낌의 html 문서가 나오는데 Installation 파트에 가면 설치 과정을 자세히 볼 수 있다.

다른 생명정보학 툴과 마찬가지로 리눅스 계열 운영체제에서 동작한다.


lastz\src 폴더에 들어가서


make

make install


이 명령어를 통해 두 개의 실행가능한 프로그램이 운영체제에 설치가된다. lastz, lastz_D인데 차이는 lastz는 integer score, lastz_D는 floating point score를 쓴다고 한다.


아래 커맨드를 입력했을 때 아웃풋이 나오지 않으면 설치가 제대로 된 것이다.


make test


그리고


./lastz


를 통해 lastz 프로그램이 동작하는지 확인해보자.


편하게 lastz 프로그램을 사용하기 위해 환경변수를 등록한다.



export PATH=[설치된경로]/lastz/src:$PATH



이제 어느곳에서나 lastz 명령어를 통해 프로그램을 실행할 수 있다.

아래는 lastz 명령어 실행시 나타나는 메시지. 타겟 파일 이름을 지정하라고 나온다.


You must specify a target file
lastz-- Local Alignment Search Tool, blastZ-like
  (version 1.04.00 released 20170312)
usage: lastz target [query] [options]
  (common options;  use --help for a more extensive list)
  target, query          specifiers or files, containing sequences to align
                         (use --help=files for more details)
......

반응형

'Domains > Bioinformatics' 카테고리의 다른 글

CIGAR Format  (0) 2017.08.13
Lastz 실행  (0) 2017.08.13
Platypus 를 통한 variant calling  (0) 2017.08.07
bam 파일 인덱싱  (0) 2017.08.07
platypus 설치  (0) 2017.08.07
반응형

python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf



출처: http://3months.tistory.com/155 [Deep Play]


python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf



출처: http://3months.tistory.com/155 [Deep Play]


python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf



출처: http://3months.tistory.com/155 [Deep Play]

Platypus 설치 확인


platypus 설치하기 링크 : 3months.tistory.com/155


platypus를 설치하였으면 아래 명령어를 통해 variant calling을 하여 플라티푸스가 잘 설치되었는지 확인해보자.


python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf

출처: http://3months.tistory.com/155 [Deep Play]
python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf

출처: http://3months.tistory.com/155 [Deep Play]


python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf



출처: http://3months.tistory.com/155 [Deep Play]

amFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf


플라티푸스 폴더에 들어가서 저 명령어를 실행하는 것인데,

이 때, 1개 이상의 BAM 파일을 인풋으로 제공할 수 있으며, reference file은 fast파일로 제공하면된다.

또한 BAM 파일은 samtools나 이와 비슷한 프로그램으로 indexing이 되어있어야하며,

FASTA 파일도 마찬가지로 "samtools faidx" 나 이와



출처: http://3months.tistory.com/155 [Deep Play]

amFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf


플라티푸스 폴더에 들어가서 저 명령어를 실행하는 것인데,

이 때, 1개 이상의 BAM 파일을 인풋으로 제공할 수 있으며, reference file은 fast파일로 제공하면된다.

또한 BAM 파일은 samtools나 이와 비슷한 프로그램으로 indexing이 되어있어야하며,

FASTA 파일도 마찬가지로 "samtools faidx" 나 이와



출처: http://3months.tistory.com/155 [Deep Play]

python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf



출처: http://3months.tistory.com/155 [Deep Play]

python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf



출처: http://3months.tistory.com/155 [Deep Play]

python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf



출처: http://3months.tistory.com/155 [Deep Play]

python Platypus.py callVariants --bamFiles=input.bam --refFile=ref.fa --output=VariantCalls.vcf


(이 명령어를 실행하기 전에 전에 samtools를 활용해 bam 파일과 fasta 파일의 인덱스 파일을 만들어 놓아야한다.)



실행 에러


간단한 sample 데이터로 위 명령어를 실행하니


ImportError: libhts.so.2: cannot open shared object file: No such file or directory


라는 에러메시지가 출력되면서 실행되지 않았다. 찾아보니 htslib의 라이브러리 경로가 제대로 지정되지 않았기 때문이라고 한다.


https://github.com/andyrimmer/Platypus


위 링크를 보고 해결하였는데 htslib를 설치하면 /usr/local 폴더에 htslib 가 설치되는데 여기서 /usr/local/lib와 /usr/local/include 폴더의 라이브러리 경로를 잡아주어야 한다.

export C_INCLUDE_PATH=/usr/local/include
export LIBRARY_PATH= /usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib

bash 에서 위 명령어를 실행하여 라이브러리 경로를 잡아주고 다시 실행하니 잘 실행이 되는 것을 볼 수 있다.



그러면 실제 데이터로 variant calling을 해보자.

http://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncodeUwRepliSeq/


위 링크에서 아무거나 골라서 bam 파일과 인덱스 파일을 다운받는다.

그리고 hg19의 chromosome1 fasta file을 다운받는다. http://hgdownload.cse.ucsc.edu/goldenPath/hg19/chromosomes/


그리고 chromosome1의 variant 만 확인하기 위해 bam 파일에서 chromosome1의 시퀀스만 뽑아낸다.


samtools view -b sample.bam chr1 > sample_ch1.bam


위 명령어를 통해 bam 파일에서 ch1 부분만 뽑아낼 수 있다.  그리고 이 bam 파일에서 인덱스 파일을 생성한다.


samtools index sample_ch1.bam


그러면 sample_ch1.bam.bai 파일이 생성되며 준비가 끝났다.


또한 hg19의 chr1 fasta 파일도 인덱스 파일을 생성해준다.


samtools faidx chr1.fasta


이제 플라티푸스 명령어를 돌리기 위한 준비가 끝났다.


python Platypus.py callVariants --bamFiles=sample_ch1.bam --refFile=chr1.fa --output=VariantCalls.vcf



실행되는 모습


생성된 VariantCalls.vcf 파일

반응형

'Domains > Bioinformatics' 카테고리의 다른 글

Lastz 실행  (0) 2017.08.13
Lastz 설치 및 테스트  (0) 2017.08.07
bam 파일 인덱싱  (0) 2017.08.07
platypus 설치  (0) 2017.08.07
samtools 설치시 에러 해결  (0) 2017.07.16
반응형

bam 파일 인덱싱



BAM 파일은 FASTA 파일처럼 sequence 를 저장하는 파일인데 binary로 저장이된다. (저장공간의 효율을 위해 그런것같다.) 시퀀스를 저장하고 있는 모양은 SAM 파일과 같은데, 이를 단지 binary 형태로 저장한 것이다.


bam 파일 인덱싱 관련 정보는 https://www.biostars.org/p/15847/ 이 곳에서 얻었는데, bam 파일은 companion file 인 index 파일을 갖을 수 있다. 이것은 외부에 저장되는 bam 파일의 인덱스 테이블이다. 이 테이블을 통해 프로그램이 bam 파일의 원하는 위치로 점프할 수 있다.


왜 platypus 파일에서 variant calling 할 때 인덱싱된 bam 파일을 제공하라고 하는지 알 것 같다. 인덱스 테이블을 통해 원하는 시퀀스로 점프할 수 있게 하는것 이다. 이 index 파일은 bam 파일과 똑같은 이름에 끝에만 .bai 를 붙인다. (bam 파일 이름이 ch1.bam 이면 인덱스 파일은 ch1.bam.bai 이다. 이러한 naming을 통해 해당 인덱스 파일이 어느 bam 파일로부터 나왔는지를 알 수 있다.


bam 파일 인덱싱하는 법은 쉬운데 samtools 설치 후


samtools index bamfile.bam


를 실행하면 된다.


http://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncodeUwRepliSeq/


이곳에서 bam 파일을 아무거나 다운 받은 후 테스트 해보자. 제일 위에 있는 것을 다운 받은 후 파일명을 bamfile.bam으로 바꾸었다. 근데 위 command를 실행하니 오류가 떴다. 검색해 보니 먼저 bam파일을 sorting을 한 후 indexing 을 해야하는 것 같다.


samtools sort bamfile.bam

samtools index bamfile.bam


를 실행한다. 참고로 samtools 명령어 모음집은 아래 링크에서 찾을 수 있다.


http://www.htslib.org/doc/samtools.html



반응형

'Domains > Bioinformatics' 카테고리의 다른 글

Lastz 설치 및 테스트  (0) 2017.08.07
Platypus 를 통한 variant calling  (0) 2017.08.07
platypus 설치  (0) 2017.08.07
samtools 설치시 에러 해결  (0) 2017.07.16
윈도우 우분투에 GATK 설치하기  (0) 2017.06.24
반응형