반응형

DESeq2에서 연속적인 값을 condtion으로 받기




DESeq2에서는 2가지 이상의 condition에 대한 차이를 보고 Differentially Expressed Genes를 구할 수도 있지만 시간이나 약물 투여 농도에 따른 DEGs도 계산할 수 있다.


아래의 예시처럼 약물 농도는 0nM, 0.1nM, 1nM을 투여하고 이에 따른 유전자의 변화를 가지고 p-value를 구하게 된다.


sampleTable<-data.frame(sampleName=sampleFiles, fileName=sampleFiles, dose=I(dose), drug=drug, cell_line=cell_line)


ddsHTSeq<-DESeqDataSetFromHTSeqCount(sampleTable=sampleTable, directory=directory, design=~dose)


dose=I(dose) 이 부분에서 I가 연속적인 value를 의미한다. 물론 dose안의 모든 값은 숫자로만 저장되어야 하며 dose에 기반하여 DEG를 구하여야 하기 때문에 밑에design=~dose가 되는 것이다.

design에 여러가지 factor를 넣어서 같이 계산할 수도 있지만 실험설계를 그렇게 해본 적은 없기 때문에 아래 참조 페이지에서 직접 확인하길 바란다.


그림이 너무 작은데 계속 진행하면 아래와 같은 결과를 얻을 수 있다.


내용은 임의로 채워놓았기때문에 크게 신경쓰지 말고 보면 마지막 6개의 column이 의미하는 것은 농도가 0, 1, 3으로 올라갔을 때 normalized readcount가 급격히 감소하는 것을 볼 수 있으며 log2FoldChange도 -값으로 크고, 당연히 결과적으로 adjust p-value도 낮은것을 확인할 수 있다.



Reference -

https://support.bioconductor.org/p/97262/


반응형
반응형

RSeQC를 사용하여 stranded 데이터 확인하기




지난 글에 이어 RNA-seq에서 데이터가 stranded인지 unstranded인지 구별하는 방법에 대해 더 알아보기로 한다.


2018/08/03 - [bioinformatics] - RNA-seq 라이브러리 종류와 구별법


지난 글에서는 IGV로 직접 reads를 확인하는 방법을 설명했지만 이를 확인시켜주는 프로그램도 당연히 존재한다.


하지만 개인적으로 RNA-seq데이터를 다룰 때는 한 번쯤은 IGV로 데이터가 분석에 사용하기에 적절한 품질을 지녔는지 확인해보는것이 좋다고 생각하기 때문에 직접 확인하는 것을 권장하지만 데이터가 수십, 수백 개가 된다면 일일히 다 확인하는 것은 불가능하다.


그럴때 RSeQC에 포함되어있는 infer_experiment.py 스크립트를 사용하여 stranded인지 여부를 확인해보도록 하자.


#http://rseqc.sourceforge.net/#infer-experiment-py


위의 링크를 타고 들어가면 자세한 설명이 있기때문에 여기선 간단하게 요약만 한다.



필요한 데이터는 Alignement file (BAM,SAM) 파일과 annotation.bed 파일이다.

전자는 당연히 준비가 되어 있을 것이고 후자는 RSeQC 홈페이지에서 아래 링크로 가면 받을 수 있다. (human과 mouse만을 지원한다. 다른 종은 직접 만들거나 다른 데이터베이스에서 찾기 어렵지 않을 것이다.)

http://rseqc.sourceforge.net/#download-gene-models-update-on-08-07-2014


결과해석은 위의 infer-experiment-py 링크에 설명을 참고하면 된다.



Example 1: Pair-end non strand specific:

infer_experiment.py -r hg19.refseq.bed12 -i Pairend_nonStrandSpecific_36mer_Human_hg19.bam

#Output::

This is PairEnd Data
Fraction of reads failed to determine: 0.0172
Fraction of reads explained by "1++,1--,2+-,2-+": 0.4903
Fraction of reads explained by "1+-,1-+,2++,2--": 0.4925

Example 2: Pair-end strand specific:

infer_experiment.py -r hg19.refseq.bed12 -i Pairend_StrandSpecific_51mer_Human_hg19.bam

#Output::

This is PairEnd Data
Fraction of reads failed to determine: 0.0072
Fraction of reads explained by "1++,1--,2+-,2-+": 0.9441
Fraction of reads explained by "1+-,1-+,2++,2--": 0.0487

Example 3: Single-end strand specific:

infer_experiment.py -r hg19.refseq.bed12 -i SingleEnd_StrandSpecific_36mer_Human_hg19.bam

#Output::

This is SingleEnd Data
Fraction of reads failed to determine: 0.0170
Fraction of reads explained by "++,--": 0.9669
Fraction of reads explained by "+-,-+": 0.0161


단순하게 위의 Fraction과 아래의 Fraction이 약 50:50을 이룬다면 annotation되어 있는 유전자의 방향성과 맵핑된 reads의 방향성간의 통일성이 없기 때문에 unstranded 데이터라고 말할 수 있으며 반대로 첫 번째 Fraction과 두 번째 Fraction중에 한 곳으로 몰려있다면 방향성이 통일되어 있다는 뜻이기 때문에 stranded라고 할 수 있다.


위의 Fraction과 아래 Fraction중에 어디에 몰리는지는 stranded 데이터를 만들 때 방법에 차이에서부터 기인한다. library 설명 포스팅을 참고하면 된다.


Reference -

http://rseqc.sourceforge.net/

반응형
반응형

RNA-seq 라이브러리 종류와 구별법




RNA-seq 데이터를 다루는데 있어서 데이터의 라이브러리 특성에 따라 정확도와 비용이 달라지는데 특성은 크게 두 가지로 구분할 수 있다. 하나는 singled-end와 paired-end 다른 하나는 strand-specific과 unstranded이다.

각각의 방식을 사용하였을 때 생기는 차이는 paper-review에서 다루도록 하겠다. (예정)

Susan M. Corely et al., Differentially expressed genes from RNA-Seq and functional enrichment results are affected by the choice of single-end versus paired-end reads and stranded versus non-stranded protocols, BMC Genomics, 2016



Single-end 

- single-end는 우리가 생각할 수 있는 가장 기본적인 형태이다. 단순히 길이가 약 35~150bp 정도가 되는 단일 reads들의 집합으로 존재하며 수 년 전에 생산한 데이터들은 이 형태를 많이 띄고있다. 다른 방법들에 비해 만들기 쉽지만 상대적으로 정확한 위치에 맵핑되지 않는다는 단점이 있기 때문에 Illumina사의 HiSeq등의 기술로 생산하는 short reads에서는 많이 보이지 않는 추세이다.

- 하지만 PacBio, Minion, MiSeq등의 기술은 reads의 길이를 350~수 kb에 해당하게 늘릴 수 있고 길이가 긴 reads는 정확환 위치에 맵핑할 확률이 늘어나기 때문에 특정한 상황에서는 여전히 쓰이고 있다.


Paired-end

- paired-end는 초기 single-end의 단점을 극복하고자 read를 양 쪽에서 읽어 한 쌍의 fragement를 만들어 더 정확한 위치에 맵핑되고자 하는 방식이다. 


Zhernakova, et al., PLoS Genet. 2013


- 위의 사진을 비교해보면 길이가 100bp reads가 있다고 가정할 때, single-end에서는 전체 genome상에 reads와 유사한 서열이 100bp만 있다면 그 곳에 맵핑 될 수 있지만 paired-end같은 경우에는 한 쌍이라서 100bp+약간의 간격+100bp가 모두 일치해야만 되기 때문에 200bp+@가 매치되어야한다. 이는 확률적으로 잘못된 위치에 맵핑될 확률이 single-end보다 낮아진다는 것을 의미한다. (@는 insert size를 말하며 라이브러리 제작시 원하는 만큼 줄 수 있다.)


Single-end와 Paired-end 구별법

- single-end와 paired-end의 구분법은 대부분의 paired-end는 왼쪽과 오른쪽 파일이 각각 존재한다. sample_1.fq와 sample_2.fq가 있다면 각 파일 안에 있는 readID가 같은 것 끼리 짝을 이루는 식이다. 한 파일 양 reads가 동시에 존재하는 경우도 있는데 이때도 파일 안에 readID를 자세히 보면 readID가 동일하고 끝에 1/2 이런식으로 구분되어 있다면 paired-end인 것이다.




Unstranded

- 라이브러리를 제작할 때 시퀀싱 기계가 reads를 읽기 위해서 양 말단에 adapter sequence를 붙이게 되는데 같은 서열의 adapter sequence가 붙게 되면 reads의 앞 뒤를 구분할 수 없게 된다. 


Strand-specific

- Strand-specific은 양 말단의 adapter sequence를 다르게 붙임으로써 reads의 앞 뒤를 구분해 주는 방식을 말하는데, 제작방식은 크게 세 가지가 존재하며, 각 방식에따라 맵핑할 때 옵션을 다르게 줘야 할 수도 있으니 구분할 수 있는것이 좋다.


A not completely illuminating figure


- 맵핑 프로그램을 보면 fr-strand, rf-strand 등이 존재하는데 앞의 fr은 foward reverse, rf는 reverse foward를 의미하며 각각 앞 뒤의 reads가 정방향인지 역방향인지를 의미한다. 어떤 것을 선택할 지는 paired-end 제작 방식에 따라 달라질 수 있기 때문에 지정해주어야한다. (STAR는 프로그램이 알아서 계산하지만 tophat은 직접 넣어줘야 한다. 아래는 tophat의 메뉴얼중의 일부로 옵션별 설명이 있어서 캡쳐해서 가져와 보았다.)



- 아래는 strand 예측이 왜 중요한지를 보여주는 figure이다. 가끔 genome 상에서 유전자들이 겹치는 부분이 존재한다. (DNA상에서의 방향성이 같고 겹친다면 같은 유전자이기 때문에 당연히도 예시의 두 유전자의 방향성은 반대이다.) Unstranded RNA-seq signal을 보면 어떤 유전자에서 나온 reads인지 구분이 안되지만 stranded RNA-seq이라면 RPD signal처럼 구분할 수 있다. 또한 발현량 분석 프로그램이 유전자의 방향성과 반대의 방향성을 가진 reads들은 유전자의 발현량으로 계산하지 않는 다는 점에서 strand-specific은 더 정확한 유전자 발현량을 계산할 수 있게 해주는 방식이라고 말할 수 있다.

(해당 논문은 unstrand데이터를 stranded데이터로 바꾸는 프로그램을 소개하며 해당 방식을 적용했을 때 민감도와 특이도가 높아지는 것을 보여준다.)



Bo-Hyun You et al., High-confidence coding and noncoding trnascriptome maps, Genome Research, 2017




Unstranded와 Strand-specific 구별법

- 가장 좋은 방법은 sequencing protocol을 보는 것이지만 그게 여의치 않을 때 사용할 수 있는 방법이 있다. 필요한 데이터는 맵핑할 genome과 gene의 방향성이 포함되어 있는 annotation file이다. 

- reads를 모두 genome에 맵핑한 뒤 IGV를 통해 annotation file과 bam파일을 같이 올려보면 gene에 방향성과 상관없이 reads가 맵핑되어 있다면 unstranded이며, 방향성이 + 일때는 F2R1, - 일때는 F1R2 식으로만 맵핑된다면 이는 stranded 데이터이다. (중요한건 통일성이지 F1R2는 바뀔 수 있다!)


- 아래 그림을 보면 방향성이 <<< 인 유전자에 있는 reads는 대부분 F1R2를 가지고 있고 >>>에는 F2R1를 가지고 있는 것을 확인할 수 있다. (가끔 by chance로 아닌 reads들이 있지만 5% 미만이다.)




위의 방식을 지원하는 프로그램도 존재한다.


2018/08/06 - [bioinformatics] - RSeQC를 사용하여 stranded 데이터 확인하기




마지막으로 Single-end, Paired-end와 Stranded, Unstranded는 별개의 개념이라는 것을 알아야 한다. Single-end이더라도 Stranded일 수도 있고 Unstranded일 수도 있으며 Paired-end도 마찬가지이다.



Reference -

https://genome.cshlp.org/content/27/6/1050.full?sid=63335fd5-50fe-46bd-b849-c88bbc2a0a84

https://www.biostars.org/p/70833/#70834

http://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.1003594



반응형
반응형

MultiQC 설치 및 실행하기




여태 Bioinformatics tools 중에 가장 높은 별점을 주고 싶은 프로그램을 발견해서 소개하고자 한다.
STAR와 ALLPATHS-LG 등도 매우 훌륭했지만 이 프로그램만큼은 별 다섯개를 주고 싶다.

프로그램의 목적은 여러 Bioinformatics tools을 사용해서 나온 log 파일들을 모아서 reporting 해주는 것이다. 프로젝트 폴더만 지정해주면 그 폴더 내에서 사용한 여러 프로그램에 대한 로그파일을 모두 수집하여 요약본을 만들어 준다.

현재까지 지원하는 프로그램은 아래 링크에서 확인할 수 있다. 약 63개정도....


http://multiqc.info/docs/#multiqc-modules


로그파일의 이름과 무관하게 형식만 맞으면 다 읽는 것으로 보이며 그럼에도 불구하고 실행시간은 오래걸리지 않는다. 

로그파일들의 크기가 대체로 작긴 하지만 폴더내에 있는 파일 중에 매치가되지 않으면 바로바로 점프하는 듯 하다.



설치 방법은 가장 간단한 방법은 PyPI을 사용하는 방법이다.

프로그램이 Python 기반이기 때문에 Python을 설치하고 PyPI를 사용하도록 하자.


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


pip가 설치되어 있다면 아래처럼 입력하고


pip install multiqc


권한문제가 생긴다면 --user 옵션을 넣도록 하자.


pip install multiqc --user


--user 옵션을 사용했다면 실행 파일은 ~/.local/bin/multiqc 에 생겼을 것이다.



설치가 정상적으로 끝났다면 프로젝트 폴더에가서


multiqc .


명령을 수행하면 multiqc_report.html 파일이 생성된다.


html파일을 열면 프로젝트 폴더 안에 있는 대부분의 로그파일들이 올라와있는 것을 확인할 수 있다.



당연하게도 모든 중간작업마다 로그파일을 생성했어야만 정상적으로 파일을 읽고 작동한다.



table이나 plot 복사를 하면 report를 작성하는데 매우 유용하게 사용할 수 있을 것이다.



Reference-

http://multiqc.info/docs/#using-multiqc


반응형

'bioinformatics' 카테고리의 다른 글

RSeQC를 사용하여 stranded 데이터 확인하기  (0) 2018.08.06
RNA-seq 라이브러리 종류와 구별법  (1) 2018.08.03
RPKM, FPKM and TPM의 정의  (0) 2018.07.27
Remove duplicates  (0) 2018.07.24
Gene ontology analysis - DAVID  (0) 2018.07.16
반응형

RPKM, FPKM and TPM의 정의




RPKM, FPKM, TPM은 생물정보학에서 상당히 쉽게 접할 수 있는 용어들이다.

여러 샘플의 RNA-seq을 발현 분석할 때 정규화(normalize)된 발현량을 의미하는 것으로 과거에는 RPKM이 많이 쓰였으나 점차 FPKM을 거쳐 TPM을 많이 사용하고 있다.

각 용어가 의미하는 바는 크게 다르지 않으며 샘플간의 차이 (주로 total depth)로 인한 발현량을 정규화하여 비교하기 위해 사용하게 되었다.

RPKM (Reads Per Kilobase of transcript per Million mapped reads)

- 추후에 FPKM 설명에서 FPKM과 RPKM에 차이에 대해서 설명하겠지만 과거에 single-end RNA-seq이 주로 생산되었을 때 단순히 read counts in transcripts, gene length, total mapped reads 만을 가지고 계산한 값이다.

enter image description here

- 먼저 total mapped reads로 나누는 이유는 sample에 따라서 total depth가 다른 것을 normalize해주기 위함이다. 
sample A는 1,000,000개의 reads가 있고 sample B에는 2,000,000개의 reads가 있을 때, 같은 유전자에 같은 갯수의 reads가 붙었다고하면 sample A가 더 발현량이 높다고 계산하기 위함이다. 
(sample B가 PCR cycle이 한 번 더 진행되었기 때문에 전체 depth가 높은 것이라고 가정한 것이다. 단순히 reads count가 같다고 해서 발현량이 같은 것이 아니다!)

- gene length로 나누는 이유는 샘플간의 비교가 아닌 유전자 간의 비교를 위함이다. 
gene A는 길이가 1000고 gene B는 길이가 2000일 때 위와 마찬가지로 같은 갯수의 reads가 붙었다면 gene A의 발현량이 더 높다고 추측할 수 있다. 
(길이가 2배이고 발현량이 같다면 gene B가 두 배 많은 reads를 생산 되었어야 한다!)

FPKM (Fragments Per Kilobase of transcripts per Million mapped reads)

- FPKM과 RPKM의 차이는 paired-end로 생산된 RNA-seq에서 나타난다. paired-end는 하나의 reads에서 두 개의 fragments가 나온다고 생각하면 된다. 즉 left fragements와 right fragments가 각각 계산되어 RPKM의 대략 두 배의 값을 가지게 된다.(paired-end의 두 fragments가 항상 같이 맵핑되는 것은 아니기 때문에 정확하게 두 배 일 수는 없다.) 
용어가 헷갈릴 수 있는데 일반적으로 paired-end는 reads를 두 개 가지고 있다고 말하는 경우도 있다. 하지만 여기서는 각각을 fragments로 계산하고 있음을 유의해야 한다.


TPM (Transcripts Per Million)

- TPM에서는 total mapped reads를 사용하지 않으며 transcripts level에서의 값이 계산된다. gene level로 계산하고 싶으면 TPM값들을 모두 더하면 된다.

계산하는 방법은 순서가 중요한데

1. 각각의 transcipt에 대해 mapped reads / transcripts length / killobase 로 값을 구한다. (=normalized transcripts expression)
2. 1번에서 구한 값들을 모두 더한뒤 1,000,000으로 나눈다. (=scaling factor)
3. 각각 1번에서 구한 값들을 2번에서 구한 값으로 나눈다. (=TPM)


아래 reference에 있는 논문에 따르면 RPKM을 사용하는 것 보다 TPM을 사용하는 것이 더 정확한 발현 값을 구할 수 있다고 한다.


Reference -

http://www.incodom.kr/Expression_profiling

https://www.rna-seqblog.com/rpkm-fpkm-and-tpm-clearly-explained/

Wagner GP, Kin K, Lynch VJ. Measurement of mRNA abundance using RNA-seq data: RPKM measure is inconsistent among samples. Theory in biosciences. 2012 Dec 1;131(4):281-5.


반응형

'bioinformatics' 카테고리의 다른 글

RNA-seq 라이브러리 종류와 구별법  (1) 2018.08.03
MultiQC 설치 및 실행하기  (1) 2018.07.31
Remove duplicates  (0) 2018.07.24
Gene ontology analysis - DAVID  (0) 2018.07.16
_PAR_Y in Genecode annotation  (0) 2018.07.13
반응형

DESeq2 에서 multiple condition 수행하기




DESeq2는 여러 컨디션이 있어도 DEG분석이란 결국 pairwise하게 비교해야 하기 때문에 condtion을 구분 해 놓은뒤 결과를 원하는 두 컨디션을 놓고 비교해서 각각 분석해야 한다.

SRA010153 데이터로 전체적인 DEG analysis workflow는 추후에 정리하기로 하고 여기서는 multiple condition의 비교에만 중점을 두고 설명하겠다.

SRA010153은 여러 컨디션이 있지만 Brain과 UHR phi X 데이터만 받은 상태에서 임의로 test 컨디션을 아래처럼 추가했다. (원래는 7개의 Brain과 7개의 UHR이다.)

sampleCondition<-c('Brain','Brain','Brain','Brain','Brain','Brain','test', 'UHR','UHR','UHR','UHR','test','UHR','test')

sampleTable<-data.frame(sampleName=sampleFiles, fileName=sampleFiles, condition=sampleCondition)    

                                                                   

ddsHTSeq<-DESeqDataSetFromHTSeqCount(sampleTable=sampleTable, directory=directory, design=~condition)

write.csv(assay(ddsHTSeq),quote=F,file="raw_count.csv")                                                                               

                                                

colData(ddsHTSeq)$condition<-factor(colData(ddsHTSeq)$condition, levels=c('Brain','UHR','test'))

                                                                                        

cts <- counts(ddsHTSeq)                                                                 

geoMeans <- apply(cts, 1, function(row) if (all(row == 0)) 0 else exp(mean(log(row[row != 0]))))

ddsHTSeq <- estimateSizeFactors(ddsHTSeq, geoMeans=geoMeans)                            

dds<-DESeq(ddsHTSeq)


res <- results(dds)


쭉 진행하면 나오는 결과는 test와 brain간의 비교이다. DESeq2는 default로 가장 처음과 마지막에 있는 컨디션을 비교하기 때문이다.


이를 아래처럼 수정하면 test와 UHR간의 비교 결과를 보여준다.


results(dds,contrast=c('condition','test','UHR'))


2, 3번째 값을 수정하면 그에 맞게 바뀌는데 당연히 이미 설정해놓은 컨디션 값을 지정해주어야하며


순서를 바꾸면 log2FoldChange값이 +에서 -로 바뀌게 된다.


> results(dds,contrast=c('condition','UHR','test'))

log2 fold change (MLE): condition UHR vs test 

Wald test p-value: condition UHR vs test 

DataFrame with 60461 rows and 6 columns

                          baseMean     log2FoldChange             lfcSE

                         <numeric>          <numeric>         <numeric>

ENSG00000000003   92.1871316897525  0.479423175690374  0.43657650183317

ENSG00000000005   2.33464385903914  0.243364522893621 0.807778836598724


> results(dds,contrast=c('condition','test','UHR'))

log2 fold change (MLE): condition test vs UHR 

Wald test p-value: condition test vs UHR 

DataFrame with 60461 rows and 6 columns

                          baseMean      log2FoldChange             lfcSE

                         <numeric>           <numeric>         <numeric>

ENSG00000000003   92.1871316897525  -0.479423175690374  0.43657650183317

ENSG00000000005   2.33464385903914  -0.243364522893621 0.807778836598724


log2FC값 외에 변경되는 값은 없다.





반응형
반응형

리눅스에서 프록시 설정하기




외부로 연결되는 서버 A가 있고 이 서버를 통해서 연결할 수 있는 내부만 연결이 되어 있는 서버 B에서 작업할 때 프록시 설정을 해 놓으면 A서버가 중개해서 B서버가 외부와 통신할 수 있게 된다.

B서버의 .bash_profile 안에 아래와 같이 입력하면 된다.

#proxy setting
export http_proxy=http://[ID]:[PASSWORD]@ip:port/
export https_proxy=http://[ID]:[PASSWORD]@ip:port/
export ftp_proxy=http://[ID]:[PASSWORD]@ip:port/

ID와 password가 A서버와 B서버가 동일하다면 생략해도 되며 ip와 port는 반드시 넣어주어야 한다.

port는 proxy의 기본 port number가 3128라서 따로 설정하지 않았다면 3128을 넣으면 된다.



반응형
반응형

Centos 6에서 R 설치를 위한 라이브러리 설치




Root권한이 있다면 yum이나 apt-get으로 설치하면서 진행할 수 있겠지만 local로 설치하려고 하니 local library에 따로 설치해야 하는 것들이 많아서 정리해 보고자 한다.

먼저 local library 설치 폴더를 만든다. 간단하게 만들어도 무방하다.

mkdir ~/library 

zlib

제일 처음 문제가 생긴 부분은 zlib 버전이 1.2.5 미만이라는 것. zlib를 다운받는다. 이때 1.2.10 이상 버전을 받으면 lexiographically 1.2.10이 더 낮다고 판단하는 문제가 있기 때문에 무난하게 1.2.9로 받도록 하자. (lexiographically는 숫자를 문자로 인식해서 5와 15를 비교할 때 5 > 1 로 비교해서 5가 15보다 더 높다고 비교하는 방식이다.)
참조 (https://stackoverflow.com/questions/42076936/zlib-bz2-library-and-headers-are-requried-for-compiling-r)

wget https://osdn.net/frs/g_redir.php?m=kent&f=libpng%2Fzlib%2F1.2.9%2Fzlib-1.2.9.tar.gz
tar -zxf zlib-1.2.9.tar.gz
cd zlib-1.2.9
./configure --prefix=~/library
make && make install

일반적인 설치 방법대로 하면 zlib가 설치된다. 설치가 끝나면 ~/library 폴더 안에 lib와 include폴더가 생성되는데 여기에 나머지 라이브러리들도 다 넣고 이 라이브러리 경로를 잡아서 R을 설치 할 것이다.

bzip

bzip은 설치방법이 약간 다르다. configure가 없다. 바로 make를 하는데 prefix가 대문자임에 주의하면서 진행하면 된다.

wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar -zxf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make --PREFIX=~/library

liblzma

lzma는 lzma를 직접 설치하는게 아니라 XZ를 설치하면 자동으로 해결된다. https://tukaani.org/xz/ 에서 받을 수 있다.

wget https://tukaani.org/xz/xz-5.2.4.tar.gz
tar -zxf xz-5.2.4.tar.gz
cd xz-5.2.4
./configure --prefix=~/library
make && make install

pcre

pcre는 추가로 설정해줘야하는 부분이 있다. 우선 파일은 https://ftp.pcre.org/pub/pcre/에서 받으면 되는데 pcre2를 받지 말고 pcre 8.42정도를 받자.

wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
tar -zxf pcre-8.42.tar.gz
cd pcre-8.42
./configure --prefix=~/library --enable-utf8
make && make install

cd ~/library/include
mkdir pcre
ln -s pcre* include/.

make 이후에 ~/library/include에 생성된 pcre.h 헤더 파일이 있는데 이 파일을 include/pcre 폴더 안에 링크로 넣어주는 작업까지 해야 완료가 된다. 왜인지는 모르겠지만 R 설치시 헤더파일을 pcre폴더 안에서 찾기 때문이다.

curl

마지막으로 curl은 일반적인 설치 방식을 따라가면 된다. https://curl.haxx.se/download.html

wget https://curl.haxx.se/download/curl-7.61.0.tar.gz
tar -zxf curl-7.61.0.tar.gz
cd curl-7.6.10
./configure --prefix=~/library
make && make install



모든 dependency가 설치되었으면 R의 configure를 해보도록 하자.


./configure --prefix=/PATH/TO/INSTALL/R --enable-R-shlib LDFLAGS="-L~/library/lib/" CPPFLAGS="-I~/library/include/"

make && make install




중간에 warning이 뜨긴 했지만 일단 무시하고 진행했으며 R일 실행되는 것 까지 확인하였다.


Reference -

https://unix.stackexchange.com/questions/343452/how-to-install-r-3-3-1-in-my-own-directory

반응형

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

Kegg pathway에 속하는 유전자 정보 가져오기  (2) 2018.09.11
pheatmap으로 heatmap그리기  (0) 2018.09.11
R에서 Dataframe 합치기  (0) 2018.09.05
DESeq2 에서 multiple condition 수행하기  (1) 2018.07.27
Arguments in R  (0) 2018.07.25
반응형

Arguments in R




Rscript를 사용할 때 argument를 input으로 받는 방법.

args = commandArgs(trailingOnly=TRUE)
species <- args[1]
inputfile <= args[2]

Rsciprt test.R human hg19.fasta


argument를 더 복잡하게 쓰려면 optparse라는 라이브러리를 써도 되지만 간단하게 정리하고 싶다면 위와 같이 작성할 수 있다.


추가로 argument를 입력하지 않았을 때 간단한 설명을 넣고 싶다면 아래와 같이 하면 된다.


if(length(args)==0 {

        stop("All argument must be supplied ex) human hg19.fasta",call.=FALSE))

}


argument가 하나도 들어오지 않았다면 ERROR 메세지 뒤에 정해놓은 문자열을 출력하고 자동 종료된다.



반응형
반응형

Remove duplicates




Illumina 같이 PCR amplification이 포함되어 있는 NGS 기술을 사용하면 특정 reads가 과도하게 증폭되는 현상이 나타난다. 이를 제거하기 위한 방법이 remove duplicates 이다.

가장 많이 쓰이는 프로그램은 Picard에 있는 Markduplicates이며 samtools에도 rmdup라는 비슷한 방식이 존재한다.

가능하면 Picard를 쓰는 것을 추천하는데 samtools는 read의 chromosome, position만 고려하여 duplicate여부를 판단하고 제거하는 반면에 Picard는 additional information도 고려하여 duplicate여부를 판단하기 때문이다. 단 Picard를 쓸 때는 모듈 명처럼 duplicate 여부를 마킹하는 것이기 때문에 이후 분석 tools에서 마킹여부를 고려하지 않을 수 있다.

이럴때는 Markduplicates 모듈을 쓸 때 duplicate된 read를 제거하는 옵션에서 true를 걸어놓는것이 좋다.

source -

https://www.biostars.org/p/105291/
http://seqanswers.com/forums/showthread.php?t=5424


반응형

'bioinformatics' 카테고리의 다른 글

MultiQC 설치 및 실행하기  (1) 2018.07.31
RPKM, FPKM and TPM의 정의  (0) 2018.07.27
Gene ontology analysis - DAVID  (0) 2018.07.16
_PAR_Y in Genecode annotation  (0) 2018.07.13
HLAtyping  (0) 2018.07.06

+ Recent posts