우분투 14.04.3 을 서버 시스템에 설치하여 사용 중이었다. 그런데 이게 알고 보니..
14.04.1 --> 3.13
14.04.2 --> 3.16
14.04.3 --> 3.19
14.04.4 --> 4.2
14.04.5 --> 4.4
왼쪽이 14.04 의 버전이고 오른쪽이 커널 버전 업데이트 현황이다. 충격적인건 LTS 로 지원하는 건 3.13 과 4.4 라는 것.. 즉, 3.16, 3.19, 4.2 는 커널 업데이트를 따로 해야만 된다.
못 믿겠다고? 밑에 링크에 들어가봐라.
https://wiki.ubuntu.com/Kernel/Support
https://wiki.ubuntu.com/Kernel/LTSEnablementStack
이게 HWE 뭐시기랑 연관이 되어 있단다. 아, 진심 귀찮음.. 커널만 업데이트 할 수 없을까 찾아봤지만 그냥 통째로 16.04 로 업그레이드 하란다. 이거 또 엉뚱하게 4.6 이나 4.8 로 업그레이도 되면 또 자주 업그레이드 하게 되므로 4.4 로 업그레이드 해야겠다.
방법은 나중에 찾자.
2016년 9월 19일 월요일
GATK 사용 중 에러..
GenomeAnalysisTK 에서 RealignerTargetCreator 를 사용하던 중에 뭔지 모를 에러가 났다. 에러 메세지 중에 "unknown index" 라는 말이 있어서 bai files 도 다시 만들어 보고 reference index file 도 다시 만들어 봤지만 도통 해결될 기미가 보이지 않는다..
그러다가 결국 picard 를 2.0.1 --> 2.6.1 로 업그레이드 하고 GATK 도 3.5 --> 3.6 으로 업그레이드 하였다. 덕택에 Oracle JAVA 7 과 8을 혼용하다가 8만 사용 가능하게 되었다.
본래 picard 는 JAVA 8 을 일찌감치 사용하였는데 GATK 가 JAVA 7 을 사용하다가 3.6 버전에서 JAVA 8 로 바뀐 것.. 그런데.. 난 본래 8 이었을텐데.. ;;
여하튼.. 그래도 해결이 안된다.. 사흘 가까이 머리를 쥐어 뜯던 중..
'-known /.../.vcf' 옵션이 보였고 여기에 가보니 idx 파일이 보인다. 이걸 지우고 다시 해보니 잘 된다. 엉엉.... ㅠ_ㅠ
vcf index 파일의 일종인데 GATK 가 실행될 때 자동으로 생성되는 파일이라 그동안 몰랐던 것. 젠장.. 에러 메시지면 에러 메시지 답게 뭐가 잘못된 건지 잘 알려줘야 될 것 아닌가.. ;;
다시 며칠 간 지켜보며 진행하다 보니 어딘가에서 에러가 또 있다. 대충 에러 메시지를 살펴보니 Quality 가 맞지 않는단다.. =_=
예전에 시스템이 두번 뒤집힌 적이 있었는데 그때 원본 파일에 손상이 갔는지 일부 데이터가 깨져 있어서 다시 원본으로 덮어 쓴 적이 있었다. 그럼에도 복구가 안된 듯..
아니면 본래 데이터가 phd 64 와 phd 33 가 혼용이 되어 있어서 phd 64 를 phd 33 으로 바꿔놨는데 이게 잘 안됐나보다. 여기서 쓸 수 있는 방법을 찾아보니...
--fix_misencoded_quality_scores / -fixMisencodedQuals
-allowPotentiallyMisencodedQuals / --allow_potentially_misencoded_quality_scores
두 가지 방법을 안내해주더만.. 그중에서 오른쪽 밑에 옵션을 사용했더니 진행이 되었다.
그러다가 결국 picard 를 2.0.1 --> 2.6.1 로 업그레이드 하고 GATK 도 3.5 --> 3.6 으로 업그레이드 하였다. 덕택에 Oracle JAVA 7 과 8을 혼용하다가 8만 사용 가능하게 되었다.
본래 picard 는 JAVA 8 을 일찌감치 사용하였는데 GATK 가 JAVA 7 을 사용하다가 3.6 버전에서 JAVA 8 로 바뀐 것.. 그런데.. 난 본래 8 이었을텐데.. ;;
여하튼.. 그래도 해결이 안된다.. 사흘 가까이 머리를 쥐어 뜯던 중..
'-known /.../.vcf' 옵션이 보였고 여기에 가보니 idx 파일이 보인다. 이걸 지우고 다시 해보니 잘 된다. 엉엉.... ㅠ_ㅠ
vcf index 파일의 일종인데 GATK 가 실행될 때 자동으로 생성되는 파일이라 그동안 몰랐던 것. 젠장.. 에러 메시지면 에러 메시지 답게 뭐가 잘못된 건지 잘 알려줘야 될 것 아닌가.. ;;
다시 며칠 간 지켜보며 진행하다 보니 어딘가에서 에러가 또 있다. 대충 에러 메시지를 살펴보니 Quality 가 맞지 않는단다.. =_=
예전에 시스템이 두번 뒤집힌 적이 있었는데 그때 원본 파일에 손상이 갔는지 일부 데이터가 깨져 있어서 다시 원본으로 덮어 쓴 적이 있었다. 그럼에도 복구가 안된 듯..
아니면 본래 데이터가 phd 64 와 phd 33 가 혼용이 되어 있어서 phd 64 를 phd 33 으로 바꿔놨는데 이게 잘 안됐나보다. 여기서 쓸 수 있는 방법을 찾아보니...
--fix_misencoded_quality_scores / -fixMisencodedQuals
-allowPotentiallyMisencodedQuals / --allow_potentially_misencoded_quality_scores
두 가지 방법을 안내해주더만.. 그중에서 오른쪽 밑에 옵션을 사용했더니 진행이 되었다.
2016년 2월 5일 금요일
GATK 사용기 2
이제 GATK 로 넘어간다.
지금부터 할 일은 snp 라고 추측되는 부분을 중심으로 reads를 재분석하여 다시 realignment 해야 된다. 왜냐하면 이 부분에서 mapping 이 잘못되는 경우가 많기 때문. 그래서 이미 알려진 snp db 를 가지고 다시 분석한다.
GATK의 help 로 보면 입이 떡 벌어질 길고도 복잡한 페이지가 보인다. 읽는 것을 포기한다.
java -jar GenomeAnalysisTK.jar -T RealignerTargetCreator -R reference.fa -I dedup_reads.bam -L 20 -known gold_indels.vcf -o realignment_targets.list
홈페이지에 나온 간략본이다.
-T - GATK 의 수많은 기능 중 이번에 사용할 기능 RealignerTargetCreator
-R - reference sequence
-I - picard 로 duplicated reads 를 marking 하고 난 뒤의 bam file
-L - 특정 contig 를 대상으로 분석하고 싶을 때 쓰는 옵션.
-known - 이미 알려진 snp 가 있다면 찾아서 넣어주면 좀 더 잘 찾는다고함. reference sequence 와 같은 contig name 을 가지고 있어야 한다. 좀 더 구분하기 쉬우라고 'chr01' 이런 식으로 고쳤다가 피봤다.
-o - output file
java -jar GenomeAnalysisTK.jar -T IndelRealigner -R reference.fa -I dedup_reads.bam -targetIntervals realignment_targets.list -known gold_indels.vcf -o realigned_reads.bam
대부분의 옵션은 위와 겹치니까 설명은 안 하겠다. (귀찮음.. ;o;)
위에서 구한 list 와 SNPdb 를 가지고 realign 을 수행하여 bam file 을 다시 만든다.
계속해서 GATK 를 사용해보자.
java -jar GenomeAnalysisTK.jar -T BaseRecalibrator -R referencefa -I realigned_reads.bam -L 20 -knownSites dbsnp.vcf -knownSites gold_indels.vcf -o recal_data.table
java -jar GenomeAnalysisTK.jar -T BaseRecalibrator -R reference.fa -I realigned_reads.bam -L 20 -knownSites dbsnp.vcf -knownSites gold_indels.vcf -BQSR recal_data.table -o post_recal_data.table
java -jar GenomeAnalysisTK.jar -T AnalyzeCovariates -R reference.fa -L 20 -before recal_data.table -after post_recal_data.table -plots recalibration_plots.pdf
java -jar GenomeAnalysisTK.jar -T PrintReads -R reference.fa -I realigned_reads.bam -L 20 -BQSR recal_data.table -o recal_reads.bam
지금부터 할 일은 snp 라고 추측되는 부분을 중심으로 reads를 재분석하여 다시 realignment 해야 된다. 왜냐하면 이 부분에서 mapping 이 잘못되는 경우가 많기 때문. 그래서 이미 알려진 snp db 를 가지고 다시 분석한다.
GATK의 help 로 보면 입이 떡 벌어질 길고도 복잡한 페이지가 보인다. 읽는 것을 포기한다.
java -jar GenomeAnalysisTK.jar -T RealignerTargetCreator -R reference.fa -I dedup_reads.bam -L 20 -known gold_indels.vcf -o realignment_targets.list
홈페이지에 나온 간략본이다.
-T - GATK 의 수많은 기능 중 이번에 사용할 기능 RealignerTargetCreator
-R - reference sequence
-I - picard 로 duplicated reads 를 marking 하고 난 뒤의 bam file
-L - 특정 contig 를 대상으로 분석하고 싶을 때 쓰는 옵션.
-known - 이미 알려진 snp 가 있다면 찾아서 넣어주면 좀 더 잘 찾는다고함. reference sequence 와 같은 contig name 을 가지고 있어야 한다. 좀 더 구분하기 쉬우라고 'chr01' 이런 식으로 고쳤다가 피봤다.
-o - output file
java -jar GenomeAnalysisTK.jar -T IndelRealigner -R reference.fa -I dedup_reads.bam -targetIntervals realignment_targets.list -known gold_indels.vcf -o realigned_reads.bam
대부분의 옵션은 위와 겹치니까 설명은 안 하겠다. (귀찮음.. ;o;)
위에서 구한 list 와 SNPdb 를 가지고 realign 을 수행하여 bam file 을 다시 만든다.
계속해서 GATK 를 사용해보자.
java -jar GenomeAnalysisTK.jar -T BaseRecalibrator -R referencefa -I realigned_reads.bam -L 20 -knownSites dbsnp.vcf -knownSites gold_indels.vcf -o recal_data.table
java -jar GenomeAnalysisTK.jar -T BaseRecalibrator -R reference.fa -I realigned_reads.bam -L 20 -knownSites dbsnp.vcf -knownSites gold_indels.vcf -BQSR recal_data.table -o post_recal_data.table
java -jar GenomeAnalysisTK.jar -T AnalyzeCovariates -R reference.fa -L 20 -before recal_data.table -after post_recal_data.table -plots recalibration_plots.pdf
java -jar GenomeAnalysisTK.jar -T PrintReads -R reference.fa -I realigned_reads.bam -L 20 -BQSR recal_data.table -o recal_reads.bam
picard 와 GATK 사용하기
GATK 를 사용해서 snp 분석을 하기 전에 picard 를 써서 sam files 를 정리해야 된다. 이와중에 시행착오가 참 많았다..
먼저 만약 1개의 sample 로 여러 개의 NGS data를 만들었을 경우, picard 의 MergeSamFiles 명령어로 여러 sam files 합치는 것과 동시에 coordinate sorting 하자.
어차피 sam file 은 reads 순서로 정렬이 되어 있으므로 reference mapping 결과대로 다시 sorting 해야 되니까 이참에 하자.
java -jar -Xmx128g picard.jar MergeSamFiles I=1.sam I=2.sam O=filename.merge.sam SO=coordinate USE_THREADING=true TMP_DIR=/.../ R=reference.fasta
합치고 싶은 sam files 각각을 I 옵션에 넣어주면 된다.
USE_THREADING - multi thread 를 활성화 시켜줘서 20% 정도 속도 향상을 시켜준다고 하는데 딱히 체감되지는 않지만...
TMP_DIR - sorting 할 때 디스크를 많이 쓴다. 여분의 디스크를 따로 설치하고 그곳을 지정해주는게 속도 향상에 더 큰 영향을 주는 듯. samtools 는 메모리 영역을 크게 할당할 수 있었는데 picard 는 그런 옵션이 없는 듯.
R - reference 파일인데 딱히 필요하지는 않는다.
* -Xms32g, -Xmx128g - java 옵션이다. Xms 는 최소 메모리, Xmx 는 최대 메모리를 지정한다. 이걸 크게 설정해 놓으면 disk I/O 작업이 빈번하게 일어나는 것을 막아 disk drive 가 고장날 확률을 줄여주고 작업 속도도 빨라진다.... 라고 기대했는데 아닌가 보다. TMP 디렉토리에 잔뜩 만들어지는 걸 보아하니..
굳이 합칠 일이 없을 경우 sorting 하는 방법이다.
java -jar /share/picard-2.0.1/dist/picard.jar SortSam I=filename.sam O=filename_sorted.sam SO=coordinate TMP_DIR=/.../tmp/ R=reference.fasta
Sorting 이 끝나면 이제 duplication 제거를 한다. 이것은 sequencing 될 때 적당한 강도의 signal 확보를 위해 PCR 을 하게 되고 이 과정에서 특정 DNA 만 유독 강하게 나올 수 있다. 이것을 찾아 가장 좋은 것 하나로 만드는 작업이다. 그렇지 않으면 depth 계산이 엉뚱하게 나올 수 있다.
java -jar picard.jar MarkDuplicatesWithMateCigar I=filename.sorted.sam O=filename.sorted.dedup.bam M=filename.sorted.dedup.bam.metrics.txt TMP_DIR=/.../tmp/ R=/reference.fasta
다음 글에서 GATK 로 넘어간다..... 그냥 넘어가면 에러 뜬다.. ㅡ_ㅡ...
bam file 의 index 를 만들어야 된다.
java -jar picard.jar BuildBamIndex I=filename.sorted.dedup.bam O=filename.sorted.dedup.bai TMP_DIR=/.../tmp/ R=/reference.fasta
굳이 output 옵션을 쓸 필요는 없다.. 알아서 현재 디렉토리에 .bai 로 나온다.
하나 더 해야 된다.. 아.. 짜증.. 진작 말하지..
java -jar picard.jar CreateSequenceDictionary R=reference.fasta O=refrence.dict
쉽게 말해 GATK 에서 사용할 reference fasta 의 index 를 생성하는거다.
먼저 만약 1개의 sample 로 여러 개의 NGS data를 만들었을 경우, picard 의 MergeSamFiles 명령어로 여러 sam files 합치는 것과 동시에 coordinate sorting 하자.
어차피 sam file 은 reads 순서로 정렬이 되어 있으므로 reference mapping 결과대로 다시 sorting 해야 되니까 이참에 하자.
java -jar -Xmx128g picard.jar MergeSamFiles I=1.sam I=2.sam O=filename.merge.sam SO=coordinate USE_THREADING=true TMP_DIR=/.../ R=reference.fasta
합치고 싶은 sam files 각각을 I 옵션에 넣어주면 된다.
USE_THREADING - multi thread 를 활성화 시켜줘서 20% 정도 속도 향상을 시켜준다고 하는데 딱히 체감되지는 않지만...
TMP_DIR - sorting 할 때 디스크를 많이 쓴다. 여분의 디스크를 따로 설치하고 그곳을 지정해주는게 속도 향상에 더 큰 영향을 주는 듯. samtools 는 메모리 영역을 크게 할당할 수 있었는데 picard 는 그런 옵션이 없는 듯.
R - reference 파일인데 딱히 필요하지는 않는다.
* -Xms32g, -Xmx128g - java 옵션이다. Xms 는 최소 메모리, Xmx 는 최대 메모리를 지정한다. 이걸 크게 설정해 놓으면 disk I/O 작업이 빈번하게 일어나는 것을 막아 disk drive 가 고장날 확률을 줄여주고 작업 속도도 빨라진다.... 라고 기대했는데 아닌가 보다. TMP 디렉토리에 잔뜩 만들어지는 걸 보아하니..
굳이 합칠 일이 없을 경우 sorting 하는 방법이다.
java -jar /share/picard-2.0.1/dist/picard.jar SortSam I=filename.sam O=filename_sorted.sam SO=coordinate TMP_DIR=/.../tmp/ R=reference.fasta
Sorting 이 끝나면 이제 duplication 제거를 한다. 이것은 sequencing 될 때 적당한 강도의 signal 확보를 위해 PCR 을 하게 되고 이 과정에서 특정 DNA 만 유독 강하게 나올 수 있다. 이것을 찾아 가장 좋은 것 하나로 만드는 작업이다. 그렇지 않으면 depth 계산이 엉뚱하게 나올 수 있다.
java -jar picard.jar MarkDuplicatesWithMateCigar I=filename.sorted.sam O=filename.sorted.dedup.bam M=filename.sorted.dedup.bam.metrics.txt TMP_DIR=/.../tmp/ R=/reference.fasta
다음 글에서 GATK 로 넘어간다..... 그냥 넘어가면 에러 뜬다.. ㅡ_ㅡ...
bam file 의 index 를 만들어야 된다.
java -jar picard.jar BuildBamIndex I=filename.sorted.dedup.bam O=filename.sorted.dedup.bai TMP_DIR=/.../tmp/ R=/reference.fasta
굳이 output 옵션을 쓸 필요는 없다.. 알아서 현재 디렉토리에 .bai 로 나온다.
하나 더 해야 된다.. 아.. 짜증.. 진작 말하지..
java -jar picard.jar CreateSequenceDictionary R=reference.fasta O=refrence.dict
쉽게 말해 GATK 에서 사용할 reference fasta 의 index 를 생성하는거다.
2016년 2월 3일 수요일
bowtie2 와 bwa mem 명령어
GATK 를 사용해 snp 분석을 하려고 했더니 첩첩산중... 너무 어렵다.
알고 보니 sam 파일을 만들 때부터 뭔가 잔뜩 들어간다. 이제부터 그 이야기를 써보자.
GATK 에서 error 가 발생하는 원인 중 하나는 multiple match..
정확한 분석을 위해서는 하나의 match 만이 인정되어야 한다. bwa 의 경우 -M 옵션을 붙이면 해결이 된다.
bowtie2 의 경우는 잘 모르겠다.
또다른 error 의 원인 중 하나는 sam header 를 잘 써줘야 한다. bwa 의 경우 -R '@RG\tID:text\tSM:text\tPL:text'
@RG - sam header 중 RG 를 쓰겠다는 뜻..
\t - tab seperate
ID:text - ID section 에 text 를 집어넣겠다. RG header 를 쓸 때 필수.
DS:text - 설명문 넣겠음.
LB:text - library 이름을 넣겠음.
PL:text - Platform/technology 넣는 곳으로 GATK 에서 필수. CAPILLARY, LS454, ILLUMINA, SOLID, HELICOS, IONTORRENT, ONT, PACBIO 로 선점되어 있으니 맞는 거 골라써라.
PM:text - PL 과 비슷하나 좀더 상세 모델명을 쓸 수 있다. 자유롭게 쓰면 된다.
SM:text - sample name
bwa mem 명령을 이용해 paired end fastq 파일을 sam 으로 만들어 보자.
bwa mem -t 4 -M -R '@RG\tID:rice\tLB:PE1\tPL:ILLUMINA\tPM:HISEQ2000\tSM:BJJNo1' reference.fasta paired1.fq paired2.fq >filename.sam
bowtie2 를 사용해보자.
bowtie2 -q --phred33 --rg-id rice --rg "LB:PE1" --rg "PL:ILLUMINA" --rg "PM:HISEQ2000" --rg "SM:BJJNo1" --fr -p 4 -x reference.fasta -1 paired1.fq -2 paired2.fq -S filename.sam
알고 보니 sam 파일을 만들 때부터 뭔가 잔뜩 들어간다. 이제부터 그 이야기를 써보자.
GATK 에서 error 가 발생하는 원인 중 하나는 multiple match..
정확한 분석을 위해서는 하나의 match 만이 인정되어야 한다. bwa 의 경우 -M 옵션을 붙이면 해결이 된다.
bowtie2 의 경우는 잘 모르겠다.
또다른 error 의 원인 중 하나는 sam header 를 잘 써줘야 한다. bwa 의 경우 -R '@RG\tID:text\tSM:text\tPL:text'
@RG - sam header 중 RG 를 쓰겠다는 뜻..
\t - tab seperate
ID:text - ID section 에 text 를 집어넣겠다. RG header 를 쓸 때 필수.
DS:text - 설명문 넣겠음.
LB:text - library 이름을 넣겠음.
PL:text - Platform/technology 넣는 곳으로 GATK 에서 필수. CAPILLARY, LS454, ILLUMINA, SOLID, HELICOS, IONTORRENT, ONT, PACBIO 로 선점되어 있으니 맞는 거 골라써라.
PM:text - PL 과 비슷하나 좀더 상세 모델명을 쓸 수 있다. 자유롭게 쓰면 된다.
SM:text - sample name
bwa mem 명령을 이용해 paired end fastq 파일을 sam 으로 만들어 보자.
bwa mem -t 4 -M -R '@RG\tID:rice\tLB:PE1\tPL:ILLUMINA\tPM:HISEQ2000\tSM:BJJNo1' reference.fasta paired1.fq paired2.fq >filename.sam
bowtie2 를 사용해보자.
bowtie2 -q --phred33 --rg-id rice --rg "LB:PE1" --rg "PL:ILLUMINA" --rg "PM:HISEQ2000" --rg "SM:BJJNo1" --fr -p 4 -x reference.fasta -1 paired1.fq -2 paired2.fq -S filename.sam
2015년 11월 26일 목요일
ABySS 1.9.0 버전 설치..
ABySS assembler 가 기존 1.5.1 버전에서 1.9.0 버전으로 업데이트 되었다. 업데이트 되면서 크게 바뀐 것 중에 하나가 라이센스 정책... 기존에는 GPL v3 라이센스 였지만 BCCCA 라이센스로 바뀌면서 Academy Only 로 바뀌었다. 나랑은 상관없는 이야기...
그 외에도 Boost, OpenMPI, sparsehash, SQLite 가 필요한데 SQLite 는 뭔데 새로 생겼다. 귀찮게..
자세한 것은 https://github.com/bcgsc/abyss#abyss 직접 보라.
먼저 Boost 설치부터 하자. http://www.boost.org/
현재 최신 버전은 1.59 이다.
파일을 다운 받아 압축을 풀면...
1. ./bootstrap.sh 하면 b2 와 bjam 파일이 생성 된다.
2. ./b2 --prefix=/.../PATH/usr/local/ threading=multi install
3. 기다려라.. 시간 좀 걸릴 거다.. ㅡ,.ㅡ
두번째 Open MPI 를 설치하자. http://www.open-mpi.org/
현재 최신 버전은 1.10.1 이다. 파일을 다운로드 받아 압축 해제하고 들어가자.
1. ./configure --prefix=/.../usr/openmpi
2. make all
3. make install
2번에서 multi core 를 이용해 더 빨리 설치할 수 있다. 'make j4 all' core 4개를 쓴다는 뜻. 그런데 실제론 해보니 그다지 빨라지는 듯 싶지 않다.
여기서 끝이 아니다.
~/.bashrc 에 다음 두 줄을 더하거나 삽입해야 된다.
export PATH=/.../PATH/usr/openmpi/bin
exoprt LD_LIBRARY_PATH=/.../PATH/usr/openmpi/lib
세번째 sparsehash 를 설치하자. https://github.com/sparsehash/sparsehash
기존 goolge code 가 없어지고 github 로 통합된 듯.. 왼쪽에 다운로드 버튼이 있다.
다운로드한 파일의 압축을 해제하고 디렉토리로 들어간다.
1. ./configure --prefix=/.../PATH/usr/local
2. make
3. make install
이쯤 되니 별거 없는 듯 느껴진다.
네번째. 마지막이다. SQLite 를 설치하자. 이건 처음 보는 거라 좀 긴장된다.
http://www.sqlite.org/ 현재 최신 버전은 3.9.2 이다.
사실, precompiled 가 있으니 그거 쓰는게 속 편하다. 그래도 한번 source code 로 해보자.
1. README 파일을 읽어보자. 뭔가 있다.
2. ./configure --prefix=/.../PATH/usr/local --enable-readline=yes --enable-threadsafe=yes --enable-dynamic-extensions=yes
3. make
4. make install
5. ~/.bashrc 에 export LD_LIBRARY_PATH=/.../PATH/usr/local/lib 추가하라는 글이 뜬다.
뭔가 있을 줄 알았어.. 그런데 아까 한거 같은데...
이제 목표였던 ABySS assembler 를 설치하러 가자. 위의 험난한 과정을 거치다보니 예전엔 몰랐던 옵션들의 의미를 대충 알게 되었고 ABySS 설치도 무척이나 쉽게 느껴진다.
위의 방법대로 해왔다면 밑의 명령어 줄로 하면 무난하게 설치가 된다.
1. http://www.bcgsc.ca/platform/bioinfo/software/abyss 에서 다운로드를 받는다.
2. 압축을 해제하고 디렉토리로 들어간다.
3. ./configure --prefix=/.../PATH/abyss CC=gcc CXX=g++ --with-boost=/.../PATH/usr/local/include --with-mpi=/.../PATH/usr/openmpi CPPFLAGS=-I/.../PATH/usr/local/gcc-4.9.3/include --with-sqlite=/.../PATH/usr/local/ --with-sparsehash=/.../PATH/usr/local/include --enable-maxk=128
4. make
5. make install
6. /.../PATH/abyss/bin 디렉토리를 $PATH 에 포함시킨다.
컴파일 도중 warning 이 뜨고 그걸 무시하고 싶다면 make AM_CXXFLAGS=-Wall 를 실행하라고 나오는데 딱히 warning 이 없어서 그냥 진행했다.
그 외에도 Boost, OpenMPI, sparsehash, SQLite 가 필요한데 SQLite 는 뭔데 새로 생겼다. 귀찮게..
자세한 것은 https://github.com/bcgsc/abyss#abyss 직접 보라.
먼저 Boost 설치부터 하자. http://www.boost.org/
현재 최신 버전은 1.59 이다.
파일을 다운 받아 압축을 풀면...
1. ./bootstrap.sh 하면 b2 와 bjam 파일이 생성 된다.
2. ./b2 --prefix=/.../PATH/usr/local/ threading=multi install
3. 기다려라.. 시간 좀 걸릴 거다.. ㅡ,.ㅡ
두번째 Open MPI 를 설치하자. http://www.open-mpi.org/
현재 최신 버전은 1.10.1 이다. 파일을 다운로드 받아 압축 해제하고 들어가자.
1. ./configure --prefix=/.../usr/openmpi
2. make all
3. make install
2번에서 multi core 를 이용해 더 빨리 설치할 수 있다. 'make j4 all' core 4개를 쓴다는 뜻. 그런데 실제론 해보니 그다지 빨라지는 듯 싶지 않다.
여기서 끝이 아니다.
~/.bashrc 에 다음 두 줄을 더하거나 삽입해야 된다.
export PATH=/.../PATH/usr/openmpi/bin
exoprt LD_LIBRARY_PATH=/.../PATH/usr/openmpi/lib
세번째 sparsehash 를 설치하자. https://github.com/sparsehash/sparsehash
기존 goolge code 가 없어지고 github 로 통합된 듯.. 왼쪽에 다운로드 버튼이 있다.
다운로드한 파일의 압축을 해제하고 디렉토리로 들어간다.
1. ./configure --prefix=/.../PATH/usr/local
2. make
3. make install
이쯤 되니 별거 없는 듯 느껴진다.
네번째. 마지막이다. SQLite 를 설치하자. 이건 처음 보는 거라 좀 긴장된다.
http://www.sqlite.org/ 현재 최신 버전은 3.9.2 이다.
사실, precompiled 가 있으니 그거 쓰는게 속 편하다. 그래도 한번 source code 로 해보자.
1. README 파일을 읽어보자. 뭔가 있다.
2. ./configure --prefix=/.../PATH/usr/local --enable-readline=yes --enable-threadsafe=yes --enable-dynamic-extensions=yes
3. make
4. make install
5. ~/.bashrc 에 export LD_LIBRARY_PATH=/.../PATH/usr/local/lib 추가하라는 글이 뜬다.
뭔가 있을 줄 알았어.. 그런데 아까 한거 같은데...
이제 목표였던 ABySS assembler 를 설치하러 가자. 위의 험난한 과정을 거치다보니 예전엔 몰랐던 옵션들의 의미를 대충 알게 되었고 ABySS 설치도 무척이나 쉽게 느껴진다.
위의 방법대로 해왔다면 밑의 명령어 줄로 하면 무난하게 설치가 된다.
1. http://www.bcgsc.ca/platform/bioinfo/software/abyss 에서 다운로드를 받는다.
2. 압축을 해제하고 디렉토리로 들어간다.
3. ./configure --prefix=/.../PATH/abyss CC=gcc CXX=g++ --with-boost=/.../PATH/usr/local/include --with-mpi=/.../PATH/usr/openmpi CPPFLAGS=-I/.../PATH/usr/local/gcc-4.9.3/include --with-sqlite=/.../PATH/usr/local/ --with-sparsehash=/.../PATH/usr/local/include --enable-maxk=128
4. make
5. make install
6. /.../PATH/abyss/bin 디렉토리를 $PATH 에 포함시킨다.
컴파일 도중 warning 이 뜨고 그걸 무시하고 싶다면 make AM_CXXFLAGS=-Wall 를 실행하라고 나오는데 딱히 warning 이 없어서 그냥 진행했다.
2015년 11월 25일 수요일
gcc compiler 를 설치하기 위한 여정..
서버가 아직도 우분투 10.10 인 관계로 gcc ,g++ 컴파일러가 4.4 버전이다. ABySS 어셈블러도 신버전이 나온 김에 재설치를 하기 위하여 gcc, g++ 컴파일러를 4.9.3 버전으로 업데이트를 해보려고 한다.
그런데, 이 서버는 예전에 좀비 서버가 된 적이 있어서 학교 전산팀에서 외부로 나가는 트래픽을 막아놓았다. 게다가 나에겐 비록 root 계정이 있기는 하지만 하는 김에 root 계정 없이 설치를 해보고자 했더니 아주 험난한 과정이 기다리고 있었다. 하지만 한번 해보고자 한다.
gcc 컴파일러 설치를 위해서는 선행해서 필요한 것들이 기다리고 있다.
GNU M4 (http://ftp.gnu.org/gnu/m4/)
autoconfigure (ftp://ftp.gnu.org/gnu/autoconf/)
automake (ftp://ftp.gnu.org/gnu/automake/)
꼭 순서대로 설치해야 된다.
본래대로라면 default 설치 위치가 /usr 로 설정되어 있지만 나는 root 계정이 아닌 관계로 개인 디렉토리에 설치할 거다.
각 압축 파일을 풀어서 새로 생성된 디렉토리로 들어간 다음
1. ./configure --prefix=/.../My_path
2. make
3. make install
순서대로 하면 /.../My_path/bin 디렉토리가 생겨 있고 여기에 컴파일된 파일이 생성되어 있을 것이다. 저 디렉토리를 $PATH 에 걸어놓으면 나머지는 순조롭게 설치가 된다.
그리고 gcc 홈페이지 (https://gcc.gnu.org/) 에 가보면 여러가지 필요한 것들이 나열 되어 있다. 그 중에서..
1. GNU Multiple Precision Library (GMP https://gmplib.org/)
2. MPFR Library (http://www.mpfr.org/ http://www.mpfr.org/mpfr-current/#download),
3. MPC Library (http://www.multiprecision.org/ http://www.multiprecision.org/index.php?prog=mpc&page=download)
4. ISL Library (ftp://gcc.gnu.org/pub/gcc/infrastructure/) version 0.15, 0.14, 0.13, or 0.12.2
왠만한 것들은 우분투에도 있지만 저 4가지는 없거나 $PATH 에 안 잡혀 있다. 그래서 일단 저 4가지를 설치해보자.
먼저 GMP 압축 파일을 받아서 압축을 해제하고 디렉토리로 들어간다.
1. ./configure --prefix=/.../My-path/usr/local
2. make
3. make check
4. make install
두번째로 MPFR 을 설치하자.
마찬가지로 압축 파일을 받아 압축 해제 후 디렉토리로 들어가서..
1. ./configure --prefix=/../My_path/usr/local --with-gmp=/.../My_path/usr/local
2. make
3. make install
세번째 MPC 설치하자.
1. ./configure --prefix=/.../My_path/usr/local --with-gmp=/.../My_path/usr/local --with-mpfr=/.../My_path/usr/local
2. make
3. make install
네번째 ISL 을 설치하자.
1. ./configure --prefix=/.../My_path/usr/local --with-gmp-prefix=/.../My_path/usr/local
2. make
3. make install
** gcc 설치하다가 알았는데 ISL 0.15 버전은 gcc 4.9.3 버전에서 지원하지 않는 것 같다. 0.14 버전으로 재설치했다.
마지막으로 대망의 gcc... 이것을 위해 여기까지 왔다.. ㅜ_ㅜ
** gcc 를 설치하기 전 LD_LIBRARY_PATH 라는 환경변수에 isl 등을 설치했던 lib 디렉토리를 추가해줘야 한다.
export LD_LIBRARY_PATH=/.../My_path/usr/local/lib/:$LD_LIBRARY_PATH:
1. gcc 압축 파일을 받아 압축을 해제하고 해당 디렉토리에 들어간 다음
./configure --prefix=/.../My_path/usr/local/gcc-4.9.3/ --enable-stage1-languages=all --with-mpc=/.../My_path/usr/local/ --with-mpfr=/.../My_path/usr/local/ --with-gmp=/.../My_path/usr/local/ --with-isl-include=/.../My_path/usr/local/include/ --with-isl-lib=/.../My_path/usr/local/lib/ --disable-multilib
본래 --with-isl=PATH 옵션이 있어서 해봤는데 계속 되는 에러로 --with-isl-include, --with-isl-lib 두 옵션으로 바꿔버렸더니 됐다. 또한 현재 시스템엔 32 bit 와 64 bit 중에 64 bit 시스템 밖에 없으므로 --enable-multilib 와 --disable-multilib 둘 중에 하나 고르라는 에러가 떠서 64 bit 만 쓸 것이므로 --disable-multilib 옵션을 골랐다.
2. make
3. make install
그런데, 이 서버는 예전에 좀비 서버가 된 적이 있어서 학교 전산팀에서 외부로 나가는 트래픽을 막아놓았다. 게다가 나에겐 비록 root 계정이 있기는 하지만 하는 김에 root 계정 없이 설치를 해보고자 했더니 아주 험난한 과정이 기다리고 있었다. 하지만 한번 해보고자 한다.
gcc 컴파일러 설치를 위해서는 선행해서 필요한 것들이 기다리고 있다.
GNU M4 (http://ftp.gnu.org/gnu/m4/)
autoconfigure (ftp://ftp.gnu.org/gnu/autoconf/)
automake (ftp://ftp.gnu.org/gnu/automake/)
꼭 순서대로 설치해야 된다.
본래대로라면 default 설치 위치가 /usr 로 설정되어 있지만 나는 root 계정이 아닌 관계로 개인 디렉토리에 설치할 거다.
각 압축 파일을 풀어서 새로 생성된 디렉토리로 들어간 다음
1. ./configure --prefix=/.../My_path
2. make
3. make install
순서대로 하면 /.../My_path/bin 디렉토리가 생겨 있고 여기에 컴파일된 파일이 생성되어 있을 것이다. 저 디렉토리를 $PATH 에 걸어놓으면 나머지는 순조롭게 설치가 된다.
그리고 gcc 홈페이지 (https://gcc.gnu.org/) 에 가보면 여러가지 필요한 것들이 나열 되어 있다. 그 중에서..
1. GNU Multiple Precision Library (GMP https://gmplib.org/)
2. MPFR Library (http://www.mpfr.org/ http://www.mpfr.org/mpfr-current/#download),
3. MPC Library (http://www.multiprecision.org/ http://www.multiprecision.org/index.php?prog=mpc&page=download)
4. ISL Library (ftp://gcc.gnu.org/pub/gcc/infrastructure/) version 0.15, 0.14, 0.13, or 0.12.2
왠만한 것들은 우분투에도 있지만 저 4가지는 없거나 $PATH 에 안 잡혀 있다. 그래서 일단 저 4가지를 설치해보자.
먼저 GMP 압축 파일을 받아서 압축을 해제하고 디렉토리로 들어간다.
1. ./configure --prefix=/.../My-path/usr/local
2. make
3. make check
4. make install
두번째로 MPFR 을 설치하자.
마찬가지로 압축 파일을 받아 압축 해제 후 디렉토리로 들어가서..
1. ./configure --prefix=/../My_path/usr/local --with-gmp=/.../My_path/usr/local
2. make
3. make install
세번째 MPC 설치하자.
1. ./configure --prefix=/.../My_path/usr/local --with-gmp=/.../My_path/usr/local --with-mpfr=/.../My_path/usr/local
2. make
3. make install
네번째 ISL 을 설치하자.
1. ./configure --prefix=/.../My_path/usr/local --with-gmp-prefix=/.../My_path/usr/local
2. make
3. make install
** gcc 설치하다가 알았는데 ISL 0.15 버전은 gcc 4.9.3 버전에서 지원하지 않는 것 같다. 0.14 버전으로 재설치했다.
마지막으로 대망의 gcc... 이것을 위해 여기까지 왔다.. ㅜ_ㅜ
** gcc 를 설치하기 전 LD_LIBRARY_PATH 라는 환경변수에 isl 등을 설치했던 lib 디렉토리를 추가해줘야 한다.
export LD_LIBRARY_PATH=/.../My_path/usr/local/lib/:$LD_LIBRARY_PATH:
1. gcc 압축 파일을 받아 압축을 해제하고 해당 디렉토리에 들어간 다음
./configure --prefix=/.../My_path/usr/local/gcc-4.9.3/ --enable-stage1-languages=all --with-mpc=/.../My_path/usr/local/ --with-mpfr=/.../My_path/usr/local/ --with-gmp=/.../My_path/usr/local/ --with-isl-include=/.../My_path/usr/local/include/ --with-isl-lib=/.../My_path/usr/local/lib/ --disable-multilib
본래 --with-isl=PATH 옵션이 있어서 해봤는데 계속 되는 에러로 --with-isl-include, --with-isl-lib 두 옵션으로 바꿔버렸더니 됐다. 또한 현재 시스템엔 32 bit 와 64 bit 중에 64 bit 시스템 밖에 없으므로 --enable-multilib 와 --disable-multilib 둘 중에 하나 고르라는 에러가 떠서 64 bit 만 쓸 것이므로 --disable-multilib 옵션을 골랐다.
2. make
3. make install
피드 구독하기:
글 (Atom)