반응형

Gene ID conversion




하나의 유전자를 지칭하는 명칭은 ensembl, kegg, refseq 등 분석 방법에 따라 달라지고 분석 중에 gene id를 다른 방식으로 맞춰야 하는 일들이 생긴다.


R에서 biomaRt등의 라이브러리를 사용하여 스크립트 내에서 변환하는 방법도 있지만 web 기반의 tool를 사용해서 바꾸는 방법에 대해서 설명하고자 한다.


홈페이지 : 

https://biodbnet-abcc.ncifcrf.gov/db/db2db.php



ID List에 변환하고자 하는 유전자 목록을 넣었고 ID가 ensembl ID이기 때문에 input에는 Ensembl Gene ID, 결과는 Gene Symbol로 맞추었다.


Organism은 9606이 human이며 다른 종을 찾고싶다면 Taxon ID를 클릭해서 들어가면 검색이 가능하다. 이 항목은 option이기 때문에 꼭 넣어주어야 하는 것은 아니다.




입력을 많이 넣지 않았기 때문에 넣어준 ID가 하나 빼고는 다 치환된 것을 확인하였다. 


Result in Excel을 클릭하여 엑셀파일로 받으면 기존의 데이터에 덮어쓰거나 추가 열을 만드는 등 편집하기 쉽다.


Reference -

https://biodbnet-abcc.ncifcrf.gov/db/db2dbRes.php


반응형

'bioinformatics' 카테고리의 다른 글

NGS 기술을 이용한 Methylation 분석  (0) 2019.06.17
KEGG Mapper 사용법  (2) 2018.11.15
SRA data 다운로드받기  (1) 2018.10.17
oncotator 설치 및 실행하기  (0) 2018.10.04
liftover하기  (0) 2018.09.28
반응형

SRA data 다운로드받기

 

 

 

NCBI에서 SRA data를 받을 수 있는 방법은 세 가지 이다.

 

1. SRA Toolkit

 

NCBI SRA 다운로드 페이지 :

https://www.ncbi.nlm.nih.gov/sra/docs/toolkitsoft/

 

압축을 풀면 바로 bin폴더가 생성되어 있고 이 중에 fastq-dump를 사용하여 받을 수 있다.

 

사용법은 

 

fastq-dump -A [accession number]

2. ascp utility

 

aspera 홈페이지 :

https://downloads.asperasoft.com/en/downloads/50

 

sh 파일을 다운르도 후 root로 진행하면 된다. (보류)

 

3. wget

 

ascp가 고속 전송을 지원하기 때문에 FTP를 사용하는 것 보다 10배는 빠르지만 별도의 설치나 key파일을 필요로 하기 때문에 초기 셋팅이 번거롭다.

 

wget은 가장 간단하게 사용할 수 있지만 속도가 느리다.

 

wget /sra/sra-instant/reads/ByRun/sra/{SRR|ERR|DRR}/<first 6 characters of accession>/<accession>/<accession>.sra
 
예를들어 받고자 하는 넘버가 SRR304976이라면 아래처럼 입력하면 된다.
wget ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR304/SRR304976/SRR304976.sra

 

아래의 bash script를 만들고 "sh sradownload.sh SRR304976" 라고 입력하면 sra를 다운받아서 fastq까지 만들어준다.

 

wget ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/${1:0:3}/${1:0:6}/${1}/${1}.sra

fastq-dump --split-3 ${1}.sra

 

Reference -

https://www.ncbi.nlm.nih.gov/sra/docs/toolkitsoft/

 

반응형

'bioinformatics' 카테고리의 다른 글

KEGG Mapper 사용법  (2) 2018.11.15
Gene ID conversion  (0) 2018.11.15
oncotator 설치 및 실행하기  (0) 2018.10.04
liftover하기  (0) 2018.09.28
DESeq2에서 heatmap, PCA, MA, volcano plot 그리기  (0) 2018.08.31
반응형

somatic mutation과 germline mutation




somatic mutation(체세포 돌연변이)과 germline mutation(생식세포 돌연변이)의 개념이 가장 많이 등장하는 곳은 암 유전체일 것이다. 


두 돌연변이 모두 DNA 서열상에서의 돌연변이를 가리키며 각각의 개념의 정의는 아래와 같다.


체세포 돌연변이 - 체세포에서 돌연변이가 발생. 몸 전체에서 일부 영역의 세포만이 돌연변이를 갖는다. 


생식세포 돌연변이 - 생식세포 돌연변이는 부모 세대로부터 물려받은, 배아가 형성될 때부터 이미 가지고 있는 돌연변이로서 몸 전체 어느 세포든지 같은 돌연변이를 갖는다.


somatic vs germline


두 돌연변이가 암 유전체에서 많이 등장하는 이유와 구분하는 방법은 무엇일까


대부분 암은 체세포 돌연변이로 발생한다. 사람이 살아가는 동안 ROS, UV 등으로 DNA가 계속 변이의 위험에 노출되는데 이때 세포 성장이나 세포 주기에 관여하는 유전자에 돌연변이가 생기면 암세포로 변이되는 것이 가장 일반적인 암 발생 패턴이다. 그런데 이러한 유전자에 생식세포 때부터 돌연변이가 있다면 애초에 사산될 확률이 높기 때문이다.


따라서 암 치료 시 환자 개개인의 암세포를 채취해서 생식세포 돌연변이보다는 체새포 돌연변이를 찾아내고 해당 변이에 맞는 약물을 투여하는 것이 개인 맞춤형 치료이다.


물론 BRCA 돌연변이같이 유전되는 생식세포 돌연변이도 존재한다. 이러한 암을 대략 5~20% 정도로 예상하고 있다.



두 돌연변이를 구분할 수 있는 가장 확실한 방법은 N-T pair 비교이다.


환자의 정상 세포와 암세포를 각각 채취하여 GATK에서 제공하는 Mutact2 또는 이 같은 목적의 프로그램을 돌리는 것이다.


이론적으로 염색체의 염기 서열은 Homozygous인지 Heterozygous인지에 따라 0%, 50%, 100%를 가지게 된다. 

ex) G/G or G/T or T/T 이런식으로 maternal, paternal을 가진다. 


하지만 체세포 변이가 일어나면 그 비율이 달라질 수 있다. 특정 염색체에서만 변이가 일어나거나 CNV 등이 일어나서 염기 비율이 달라진 세포와 일반적인 세포가 섞여있기 때문이다. 10개의 세포중에 7개의 정상세포가 T/T를 가지고 있었고 3개가 암세포이고 G/T로 변이되었다고 하자. G/T의 비율은 3/17가 된다. 


프로그램은 정상 세포에서 발견한 돌연변이와 암세포에서 발견한 돌연변이를 고려하여 체세포 돌연변이로 구분하게 된다.


Whole genome sequencing을 사용하여 염색체 전체에서 수행하는 것이 가장 확실하지만, 비용과 시간의 문제로 인해 Whole exome sequencing으로도 많이 진행하고 있으며 RNA-seq으로도 진행할 수 있지만 신뢰도가 그리 높지는 않다. 신뢰도가 높지 않은 이유는 RNA는 기본적으로 불안전 할 뿐만 아니라 RNA editing등으로 서열이 쉽게 변하고 이것이 변이라고 분석되어 질 수 있기 때문이다.



Reference -

http://ib.bioninja.com.au/standard-level/topic-3-genetics/33-meiosis/somatic-vs-germline-mutatio.html


반응형

'bioinformatics > cancer genomics' 카테고리의 다른 글

Cancer cell line 정보 받기  (0) 2018.08.28
Clinical Cancer 데이터베이스  (0) 2018.07.09
Molecular disease  (0) 2018.07.05
암 분류법  (0) 2018.07.05
CancerSCAN  (0) 2018.07.04
반응형

oncotator 설치 및 실행하기




oncotator는 암 연구에서 point mutations이나 indels이 기능적으로 연관성이 있는지를 annotation 해주는 프로그램이다. COSMIC, Tumorscape, MutSig 결과를 조합하여 암 특이적 annotation을 해준다.


설치에 앞서 oncotator는 python 모듈인데 아래처럼 특정 버전의 모듈이 필요다. 


bx-python 0.8.2 requires six, which is not installed.

oncotator 1.9.9.0 requires biopython==1.66, which is not installed.

oncotator 1.9.9.0 requires pandas==0.18.0, which is not installed.

oncotator 1.9.9.0 requires pyvcf==0.6.8, which is not installed.

oncotator 1.9.9.0 has requirement bcbio-gff==0.6.2, but you'll have bcbio-gff 0.6.4 which is incompatible.

oncotator 1.9.9.0 has requirement numpy==1.11.0, but you'll have numpy 1.15.2 which is incompatible.

oncotator 1.9.9.0 has requirement pysam==0.9.0, but you'll have pysam 0.15.1 which is incompatible.


oncotator용 python-2.7.15를 새로 설치하였다. 


2017/08/16 - [programming language/python] - Python 설치 및 실행하기



oncotator 다운로드 페이지는 gatk에서 확인할 수 있다.

https://gatkforums.broadinstitute.org/gatk/discussion/4154/howto-install-and-run-oncotator-for-the-first-time#latest


oncotator와 data source를 모두 받는 것을 권장한다.


python은 pip까지 설치. oncotator는 압축만 풀고 난 뒤 설치를 진행하였다.


/data/Tools/system/Python-2.7.15-oncotator/bin/python setup.py build


아래와 같은 메시지가 떴다. mac이 아닌 환경에서는 직접 설치를 해줘야 한단다.


ngslib must be installed manually on non-mac: pip install --no-binary :all: ngslib==1.1.18


위의 메시지와 똑같이 입력하였다.


/data/Tools/system/Python-2.7.15-oncotator/bin/pip install --no-binary :all: ngslib==1.1.18


다시 빌드하였을 때 위와 같은 메시지가 없어진 것을 확인하였고 그대로 설치하였다.


/data/Tools/system/Python-2.7.15-oncotator/bin/python setup.py build

/data/Tools/system/Python-2.7.15-oncotator/bin/python setup.py install



install 과정에서 아래와 같은 에러 발생.


ImportError: No module named _build_utils.apple_accelerate


검색해보니 Numpy install 오류라고 한다. (https://github.com/andersbll/cudarray/issues/34)


oncotator를 install할 때 모듈을 설치하기는 하는데 미리 메뉴얼로 설치하는게 혹시 모를 오류가 안생기는듯 하다.


pip install bx-python==0.8.2

pip install pandas==0.18.0

pip install biopython==1.66 

pip install pyvcf==0.6.8

pip install bcbio-gff==0.6.2

pip install numpy==1.11.0

pip install pysam==0.9.0


근데 pysam 설치하다가 또 오류남.


    htslib/hfile_libcurl.c: In function ‘easy_errno’:

    htslib/hfile_libcurl.c:93:10: error: ‘CURLE_NOT_BUILT_IN’ undeclared (first use in this function)

    htslib/hfile_libcurl.c:93:10: note: each undeclared identifier is reported only once for each function it appears in

    error: command 'gcc' failed with exit status 1


아래처럼 해결함.

installed : /path-to/curl-7.50.3

export CFLAGS=-I/path-to/curl-7.50.3/include



Reference -

https://github.com/abishara/athena_meta/issues/1


반응형

'bioinformatics' 카테고리의 다른 글

Gene ID conversion  (0) 2018.11.15
SRA data 다운로드받기  (1) 2018.10.17
liftover하기  (0) 2018.09.28
DESeq2에서 heatmap, PCA, MA, volcano plot 그리기  (0) 2018.08.31
Optical duplicate와 Library duplicates  (0) 2018.08.27
반응형

tar 디렉토리 지정해서 압축 풀기




원하는 경로에 압축을 풀고싶다면 아래처럼 입력하면 된다.


tar zxvf file.tar.gz -C path


해당 폴더에 파일을 바로 압축을 풀어주니 미리 빈 폴더를 생성하고 그 폴더 안에 푸는것이 좋을 것 같다.



반응형
반응형

liftover하기




liftover란?

- 다른 genome에 맞게 결과 파일의 버전을 바꾸는 것을 말한다. 

- 사람의 genome은 hg19, GRCh37, GRCh38 등 여러 개가 존재하며 이에 따라 각 유전자의 위치도 조금씩 차이가 난다. 새롭게 genome을 만들 때마다 모든 정보를 새로 작성하는 것 보다 기존의 정보에서 달라진 위치만 수정하는 것이 비용이나 시간상으로 효율적일 것이다.

- 권장하지는 않지만 다른 종의 genome 간의 비교도 가능하다. 단 여기서는 서열 간의 차이가 크게 나기 때문에 정확도가 낮아 손실되는 정보가 있을 수 있음에 유의해야 한다.


CrossMap

liftover를 지원하는 프로그램은 여러 개 있지만, 여기에선 CrossMap을 소개하고자 한다.


CrossMap은 SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF 등 다양한 포맷의 파일을 지원하며 특히나 python module이기 때문에 설치가 매우 간단하다.


아래와 같이 입력하면 설치가 완료된다.


pip install CrossMap


Python 2.7 이하에서만 작동하는 모듈이다.


dependency가 있지만, 특별히 어려운 모듈은 없어서 pip에서 알아서 설치해주니 크게 신경 쓸 필요는 없다.



설치가 제대로 되었으면 chain 파일이 필요하다.

chain 파일이란 두 genome 간의 변화된 부분이 작성된 파일이다. CrossMap 홈페이지에서 사람과 쥐의 chain 파일을 제공하고 있으며 USCS genome browser에 가면 종간의 chain 파일도 내려받을 수 있다.


CrossMap 홈페이지 : http://crossmap.sourceforge.net/


프로그램 사용법은 홈페이지에 자세하게 나와 있으니 요약하기만 하겠다.


CrossMap.py <command> <chain file> <input file> <output file> 


input file이 hg18이고 output file이 hg19라면 chain file은 hg18Tohg19를 넣으면 된다.



Reference -

http://crossmap.sourceforge.net/



반응형
반응형

pheatmap 값에 따른 color 범위 조절하기




heatmap에서는 일반적으로 발현량을 RdBl 색깔로 표현한다.


p-value를 여기서 적용하면 0.05라는 경계를 두고 보기에는 조금 불편하다. 0.6과 0.4를 사람 눈으로는 구별 할 수 없기 때문이다.


value에 따라서 구분하는 방법을 설명하고자 한다.




값이 -1부터 1까지 존재한다. ( DEG 분석에서 발현이 증가하는지 감소하는지 여부를 나타내려고 했다. )

1-adjust pvalue니까 0.95이상이거나 -0.95이하일 때가 p-value 0.05 이하이다.


library(RColorBrewer)


pheatmap(df, legend_breaks =  c(-0.95, 0, 0.95, max(df)), legend_labels = c("-0.95", "0", "0.95", "1-(p.adj)\n"), legend=T,  color = RColorBrewer::brewer.pal(7,"RdYlBu"), breaks = c(-1,-0.95,-0.9,-0.3,0.3,0.9,0.95,1))


legend_breaks = 범례에 글이 표시될 부분을 마크한다. 글자 크기가 너무 커서 전부를 표시하려 하지는 않았다.

legend_labels = breaks가 가리키는 포인트에 입력될 문자열을 넣으면 된다.

legend = T 범례를 표시할 것인지 여부. default는 F이다.

color = plot에 들어갈 색깔을 지정한다. 여기서는 Read/Yellow/Blue의 순서대로 7개로 나누어진 palette를 의미한다.

breaks = 데이터를 어떻게 나눌지를 의미한다. -1에서 -0.95 사이의 값이 color에서 1번 색깔로 지정 될 것이다.


breaks를 더 늘리게 되면 palette의 숫자 7도 여기에 맞춰서 늘려주면 된다. 색을 세 개를 혼합하였다면 가능하면 홀수로 맞추도록 하자.



Reference -

https://stackoverflow.com/questions/32545256/define-specific-value-colouring-with-pheatmap-in-r




반응형
반응형

Kegg pathway에 속하는 유전자 정보 가져오기



kegg pathway에는 하나에 pathway에 수십에서 수 백가지 유전자가 포함되어 있다. 

R에서 특정 pathway에 포함되어 있는 유전자 리스트를 불러와서 발현 값을 본다던지 하는 분석을 할 수 있는데

여기서 유전자 리스트를 불러오는 법을 설명하고자 한다.



(04010 pathway는 295개의 유전자를 포함하고 있다.)


아래 코드는 kegg pathway에 해당하는 ensembl gene id list를 가져오는 코드이다.


library(KEGGREST)


pathid = paste("path:hsa",i,sep="")

kegggenes = keggLink("hsa",pathid)

genelist = list()

for (j in 1:length(kegggenes)) {

ensemblgenes = keggGet(c(kegggenes[[j]]))[[1]]$DBLINKS

for (k in ensemblgenes) {

if (startsWith(k,"Ensembl:") == T) {

geneid = strsplit(k," ")[[1]][2]

genelist = append(genelist, geneid)

}

}

}


keggLink("hsa","path:hsa04010")를 입력하면 04010 pathway에 대한 모든 정보를 가져오게 되고 여기에 gene id는 DBLINKS에 있는데 이걸 다시 가져와야한다.

DBLINKS에는 ensembl 뿐만 아니라 여러 종류의 gene id를 모두 가지고 있기 때문에 startswith를 사용하여 Ensembl로 시작하는 gene id만을 genelist 라는 변수에 저장하였다.



반응형

'Computer Science > R' 카테고리의 다른 글

Gene id conversion in R  (0) 2018.11.16
pheatmap 값에 따른 color 범위 조절하기  (0) 2018.09.12
pheatmap으로 heatmap그리기  (0) 2018.09.11
R에서 Dataframe 합치기  (0) 2018.09.05
DESeq2 에서 multiple condition 수행하기  (1) 2018.07.27
반응형

pheatmap으로 heatmap그리기




pheatmap은 pretty heamaps의 약자로 heatmap을 그릴 때 더 이쁘고 쉽게 그려보자는 취지에서 만든 R 패키지이다. 주로 사용하게 되는 몇 가지 예시에 대해서 더 자세하게 정리해보고자 한다.


첫 스탭은 당연히 pheatmap을 불러오는 것.


library("pheatmap")



두 번째는 범례를 만드는 법이다. 

데이터 frame에 세포주와 약물을 처리했을 때 샘플들이 많으면 한 눈에 구분하기가 쉽지 않다. 구분하기 쉬운 색상을 미리 골라서 보기 쉽게 분리하도록 하자.

cell_line = c("cell_1","cell_2","cell_3","cell_4","cell_5")
drug = c("drug_1","drug_2","durg_3")

## annotation dataframe
anno.df = data.frame(cell_line=anno_cell_line, drug=anno_drug)
rownames(anno.df) = anno_samples

## annotation color      
ann_colors = list(
        cell_line = c("cell_1" = "#235725", cell_2 = "#1FD7F1", cell_3 = "#E4AF30", cell_4 = "#CADF7C", cell_5 = "#Fc0D7D"),
        drug = c(drug_1 = "#BDBE32", drug_2 = "#FE9089", "drug_3" = "#82B7FC")
)

위의 예시는 cell 5 종류와 drug 3 종류를 구분하였고 data frame을 만들었다. 
anno_samples는 cell_line과 drug 사이에 _를 넣고 붙인 리스트이다. 나중에 데이터와 일치화 시켜야 하기 때문에 상황에 맞게 다르게 줘야 할 수도 있다.

data frame이 제대로 만들어 졌다면 annotation 정보를 가지고 있는 아래와 같은 구조를 가질 것이다.

                cell_line       drug
cell_1_drug_1   cell_1  drug_1
cell_1_drug_2   cell_1  drug_2
cell_1_drug_3   cell_1  drug_3
cell_2_drug_1   cell_2  drug_1
cell_2_drug_2   cell_2  drug_2
cell_2_drug_3   cell_2  drug_3
cell_3_drug_1   cell_3  drug_1
cell_3_drug_2   cell_3  drug_2
cell_3_drug_3   cell_3  drug_3
cell_4_drug_1   cell_4  drug_1
cell_4_drug_2   cell_4  drug_2
cell_4_drug_3   cell_4  drug_3
cell_5_drug_1   cell_5  drug_1
cell_5_drug_2   cell_5  drug_2
cell_5_drug_3   cell_5  drug_3

이후에 데이터가 들어가 있는 data frame과 rowname을 일치시켜주고 plot을 그리면 된다.

names(df) = anno_samples


pdf("test.pdf")

pheatmap(df, cluster_rows=F, cluster_cols=F, show_rownames=T, annotation_col=anno.df, annotation_colors = ann_colors, main=("pheatmap_test"), fontsize_row=6, legend_breaks =  c(-0.5, 0, 0.5, max(newdf)), legend_labels = c("-0.5", "0", "0.5", "1-(q-value)\n"), legend=T)

dev.off()


*여기서 annotation 정보가 있는 data frame의 row name이 데이터가 들어가 있는 data frame의 column name과 일치되어야 한다. 

rownames(anno.df) = anno_samples

names(df) = anno_samples


행과 열을 clustering하는 여부나 이름 표시 여부 등은 아래 메뉴얼을 참고하는 것이 더 빠를 듯 하다. 대부분은 직관적으로 이해할 수 있다.


legend_breaks와 legend_labels은 데이터 표시 범위의 범례를 조절하는데 default로 놓아도 크게 무리없는듯 하다.


예시대로 plot을 그리면 아래처럼 나온다. 색상은 직접 조절하도록 하자.


2018/08/31 - [etc.] - 16진수 RGB코드 알아내는법






Reference -

https://cran.r-project.org/web/packages/pheatmap/pheatmap.pdf



반응형
반응형

R에서 Dataframe 합치기




main이 같은 dataframe끼리 합친다.


df <- merge(df1, df2, by="main")


두 dataframe의 row name이 다르다면 각각을 지정해준다.


df <- merge(df1, df2, by.x="xmain", by.y="ymain")


df1에서는 xmain이라는 row와 df2에서는 ymain이라는 row의 값이 같으면 합친다.


값이 채워지지 않는다면 빈칸으로 존재하는데 이를 그냥 무시하고 지나가면 값이 밀릴 수 있다.


df$xmain <- ifelse(df$xmain == "" , "NA", df$xmain)


df의 xmain이 비어있다면 "NA"로 채우고 비어있지 않다면 값을 유지하고 지나간다.





반응형

+ Recent posts