목요일, 2월 14, 2013

ALTER 문법을 이용한 character set

Posted at 2008/08/25


Database 변환
alter database database_name default character set euckr collate euckr_korean_ci


Table 변환
alter table table_name default character set euckr collate euckr_korean_ci

수요일, 1월 30, 2013

FASTX Tool Kit에서 phred33 사용하기

FAST{A/Q} 파일을 조작(그 조작말고요 고갱님~ ㅎㅎ)을
보다 수월하게 하는 명령어들을 모아놓은 아주 좋은 패키지 입니다.
(사실 전 몇개 안쓰지만요;;; 잇힝~ )

그러나 지금은 이 툴보다 좋은 프로그램들이 많이나와 있는 상태인데..

그래도 끄적 끄적... ㅎㅎ
혹시 다른 페이지들이 폐쇄되는걸 대비해서
백업용으로.....

fasta tool에서 fastx_quality_stats를 사용할 때 quality score관련한 error 메세지를 볼 수 있는데 이것은 fasta tool kit이 phred기준 +64를 좋아해서 그런다는...

그래서 fastx_quality_stats -i input.fastq -N -Q 33 -o quality.txt

이렇게 하면 된다고 이곳에 나와 있었습니다.

출처: shengliblog

화요일, 1월 29, 2013

NGSQCToolkit 사용기

아.... 이제서야
지난번에 언급했던
NGS QC Toolkit을 사용해 봤습니다. :)

라이브러리와 perl 모듈을 잘 설치해주면
큰 문제없이 잘 돌아가는것을 확인했고
multi-thread로 실행하는 경우 음.. 빠르더라구요 ㅎㅎ
시간 체크는 못해봤는데...
지금 시간체크 하면서 돌리는게 있으니
정리해서 올리도록 하겠습니다. :)

1. 들어가기전
일단 시스템에 gd관련 라이브러리가 있는지 확인하시고
gd와 libgd-graph 등등 관련 라이브러리를 설치해주시기 바랍니다.
그리고 perl 모듈들이 모두 설치되어 있는지 확인해서 안되어 있다면
설치해주시면 되겠습니다.
gd라이브러리가 없으면 펄의 GD::Graph 설치할때 설치가 안되더군요;;
에러가 나서 몬가 하고 있었는데.. ㅎㅎ 여하튼...
모 이런저런 라이브러리와 모듈을 확인하시고 잘 설치하면
사용하는데 문제 없습니다. :)

2. 사용하기
NGQQCToolkit에는 크게 4가지의 서브 카테고리로 구분되어져 있더군요
1) 포맷 변경
2) QC
3) 자료 통계
4) Trimming

2.1 Format Convert
Fastq -> {454 | Fasta}: Fastq를 454(Fastq,Qual), Fasta 포맷으로 변환

{SangerFastq | SolexaFastq} -> IlluFastq: Sanger와 Solexa의 qual를 Illumina의 통일된 qual score range로 변환 (다만, 1.5+ 로 하는지 1.8+ 로 하는지는 확인 못했습니다.)


2.2 QC
454{QC|QC_PE|QC_PRLL}: 454 데이터를 input으로 하는 QC tools
Illumina와 다르게 QC_PE가 있는건 454의 경우 paired-end로 sequencing 하는 경우는 좀 특별해서 구분해둔듯.. :) (단, input은 SFF 포맷이 아닌 서열 파일과 Quality score파일로 구분해서 입력해야 사용가능하다.)

Ill{QC|QC_PRLL}: 일루미나 read를 처리하는 tools, 454와는 다르게 single-end와 paired-end를 따로 구분하지 않고 -se, -pe 옵션으로 처리하도록 만들어놨다는 점~ :)

PRLL 접미사는 병렬처리를 지원하는 스크립트입니다.
PRLL tools에서는 -c를 사용해서 multi-core를 사용하는데에 반해
일반 tools는 -p 옵션을  사용해도 multi-core를 사용하지 않는 점이 있었습니다.


2.3 Statistics
AvgQuality.pl: quality score 파일을 입력받아 점수를 계산하는 tool
N50Stat.pl: fasta파일을 input으로 받아 N50을 계산하는 tool

2.4 Trimming
AmbiguityFiltering.pl:
HomopolymerTrimming.pl:
TrimmingReads.pl:

결과로 제공되는 figure도 나름 괜찮습니다. :)
속도도 multi-core를 사용하던 안하던 만족할만한 수준이었습니다.
(제가 in-House로 제작한 script가 느린것도 있겠지만요.. ㅎㅎ )


자세한 사용법은 저보다 영어 못하시는 분은 없을테니 메뉴얼 보세요~ ㅎㅎ

>>메뉴얼보러가기<<


추가정보
paired-end fastq raw파일로 3-4g정도의 파일을 single cpu로 처리하는데
2시간에서 2시간 반내외정도로 확인되었습니다. :)

금요일, 1월 25, 2013

의학데이터를 공유하자



의학데이터를 공유하자는 용자 John





자발적 참여로 데이터를 수집하는 사이트 WeConsent

John의 설문조사 결과로는
사람은 기회와 선택이 주어지면 나누려고 한다고 한다.

공유할 데이터는 꼭 거창해야만 하는 건 아니다.
헌혈하면 배달되는 피검사 수치도 가능한듯 보이는데...
나중에 한번 올려볼까한다. :)

강연중 언급한 Sage Bionetworks

월요일, 1월 07, 2013

swap를 설정해야 하는가 말아야 하는가


IBM: swap 활용하기

김용환 블로그: SWAP 메모리


사실 집에서 쓰는 간단한 파일 서버나 데탑에서는
크게 신경 안쓰는 부분인데 서버 작업을 하게 될때는
신경을 안쓸 수 가 없다는.....

집에서 쓰는거야 램이 16G니 대충 다른 HDD에 4G만 잡아주고 쓰고 있고
개인서버인 경우는 RAM이 4G니 CPU core(x2) 곱하기 메모리 용량해서
하드에 swap잡으면 8G면 충분하다(HDD가 죄다 500G, 1T니.. ㅎㅎ).

그런데 서버로 오면
메모리 용량이 24G, 32G, 192G에
CPU core는 2, 8, 24개....
극악의 조건이라면 swap을 full로 잡는다면 4T라는;;;;

근데 사실 swap을 다 쓴다는건 서버의 문제라기 보다는
서버를 운영하는 관리자에게 책임이 더 있지 않나하다.
메모리를 다쓰고 swap까지 쓰는 동안 무엇을 했는지 그것도 계산 못하고
작업을 돌리고 있는가...

근래 많이 접하는 서버들이
고성능 CPU에 대용량 RAM, 그리고 SSD 시스템 하드에 HDD 12개 이상의 RAID인데,

어디다가 swap를 잡을것인가....
SSD에 잡기에는 OS설치하고 패키지 설치하기 빠듯한데...
(물론 256G이상의 조금 넉넉한 SSD라면 크게 상관없을듯)
그리고 RAID하드, RAID에 왜 swap을....;;;;

case에 HDD 공간이 남는다면 single하드를 꼽아서 swap를 잡는걸 한번 권유해보고 싶고
넉넉한 SSD라면 자그만하게 잡아주면 좋지 않을까 하다.

사실 지금 어느 서버 한대는 swap없이 운영중인것으로 기억하는데
아직 3개월 지났는데 메모리 문제로 다운되서 작업 못한 적은 없다는..
사용할 메모리 계산만 잘 해서 쓰면 swap따위... ㅎㅎ


계산용 서버라면 이렇지만
web이나 db서비스를 하는 경우라면 조금이라도 swap을 잡는게 좋을듯...
언제 어떻게 본인도 모르게 부하가 걸릴지도 모르니...
서비스용 시스템에서 하드웨어 스펙의 넉넉함의 미덕은
24x7x365 강조해도 모자람이 없는것 정도?? ㅎㅎ

swap한번 걸리면 그냥 대책없이 느려진다는..
메모리를 더 꼽거나 업그레이드를 시키는것이
모든 면에서 합리적이고, 효율적이다.

결론 swap은 당신이 속해있는 시스템 관리자의 능력에 맡기는 수 밖에 없는듯.. :)



MySQL에서 LIMIT 속도 저하 피하기



출처: 아이군의 블로그


위의 블로그에서 LIMIT에 대해서 이해하기 쉽게 설명해 놓으셔서
스리슬적~ :)


Query 1.
SELECT * FROM TABLE LIMIT 10000000, 50000;
(Table에서 천만개 데이터 이후의 5만개 데이터를 가져오는 쿼리)

Query 2.
SELECT * FROM TABLE WHERE id > 10000000 LIMIT 50000;
(Table에서 id가 천만번보다 큰 행으로 이동 한 후 5만개를 가져오는 쿼리)

Query 1과 Query 2의 차이점은 index를 사용하는 것과 하지 않는 것!!
(query 문 앞에 explain을 추가하여 실행시키면 확인 할 수 있습니다.)

그래서 처리 속도에서 엄청난 차이가 났다는 것입죠
LIMIT를 사용하더라도 영리하게 사용하자는 내용이었습니다. :)

MySQL 안다뤄본지 오래돼서..... ;;

토요일, 1월 05, 2013

리눅스에서 파일 찾는 locate


리눅스에서 파일 찾는 명령어로
find를 많이 사용할 것이다.

그러나 find보다 사용하기 쉬운 (본인 기준으로...) 명령어가 있다.

locate

find와 같이 파일을 찾는 명령어이나 find와 달리 DB를 이용하여 파일 찾기 때문에 속도가 WARP~


사용방법은 간단하다.
> locate <파일 이름>
자세한 사용 방법은 man이나 help를 이용하기를 :)

> locate -n 5 <파일 이름>
은 결과물을 5개 까지만 보여주는 옵션이다.

대신 위에서 언급한 것과 같이 DB를 검색하는 것이므로 DB를 주기적으로 update해주어야 하며 그에 사용되는 명령어는 updatedb 이다.

서버 셋팅 후 매시간 혹인 매일 주기적으러 갱신되도록 cron에 등록하면 편리하다.

수요일, 12월 19, 2012

생명정보학을 공부하면서 궁금한게 있다면 이곳으로~!!


http://openbio.kr/questions/

혜식형님이 (시간이 남아돌아서..)만든 사이트

슬슬 글들이 올라오고 있습니다.

궁금하신것이나 알고 있는 정보들에 있어서 함께 공유하고
해결하면 좋을 것 같습니다. :)

목요일, 11월 29, 2012

RStudio IDE Server 설치기


RStudio IDE (Server)

잘 알려지고 널리 쓰여지고 있는 통계프로그램인 R을 
좀더 편리하게 사용할 수 있게 해주는 IDE 프로그램입니다.
오늘 말하려는것은 Desktop용이 아닌 Server용

처음에 이해한건 고성능 서버에 RStudio Server를 설치하고
데스크탑에는 RStudio Desktop라는 Client를 설치해서 사용하는 줄 알았는데..
하.... 그게 아니었더군요..;;;

걍 Desktop은 내 컴퓨터의 있는 R을 인식해서 좀더 사용하기 편하게
IDE로 보여주는 것으로 역할이 끝!!
-괜히 깔았어.... ㅎㅎ

여하튼...
R과 RStudio를 설치하면서...
좀 삽질을 하는 관계로..
R을 설치하는데 libR.so가 없어서 고생을..
그것도 개고생을... 별것도 아닌것이...

그래서 어쩔수 없이 현재 최신버전인 R-2.15.2는 사용못하고
rpm버전으로 제공되는 R-2.14.1을 사용해서 해결했다죠..
나중에 시간되면 R-2.15.2로 업그레이드 작업도 한번 할 예정입니다. ㅎㅎ

역시 설치할때 메뉴얼 숙지는 필수인데
저처럼 친절하지 않습니다. :)

R과 RStudio를 다운로드 받은 rpm으로  설치를 잘 마무리하고
실행시키는데 /usr/include 폴더 밑에 R 헤더파일이 없다고 투덜투덜투덜..

그래서 R 소스파일을 대충 컴파일해서 거기서 나오는 헤더파일을
해당 폴더에 샤샤샥 복사~ (컴파일한 파일은 제거~)

그리고 서버와 세션 설정 파일을 작성한후 구동시키면 끝~ :)
(example파일로 설정 파일을 제공하는 줄 알았는데;; 헐.... 걍 관리자가 파일 만들어서 하면 된다는... 이건 모.. ㅎㅎ)

아.. RStudio Server의 경우 웹서버를 구동하기 때문에
기존에 80포트를 사용하거나 추후에 웹서버를 운영할 게획이 있으신 분께서는
포트 변경해서 RStudio를 구동  시키시면 됩니다. :)

이렇게 위의 일련의 작업들을 정상적으로 잘 마무리하시고
URL란에 http://<server-ip>:<port>와 같이 입력하시고
엔터를 치시면 다음과 같은 화면을 웹브라우저를 통해서 확인하실 수 있습니다. :)


아.. user id와 passwd는 system account을 그대로 사용합니다. :)

RStudio (Server)의 장점은
고성능 서버의 자원을 사용해서
내 컴퓨터(모바일기기를 포함해서 웹브라우저가 되는 기기면)에서 작업하기 어려운
대규모(혹은 간단한) 통계작업이나 분석 작업을 진행할수 있다는 점~
그리고 plot, graph도 볼 수 있다는 점이라고 말씀드릴 수 있겠습니다. 고갱님~ :)

수요일, 11월 21, 2012

bam파일에서 fastq로 파일을 뽑을 수 있을까?

당연히 뽑을 수 있으니
글을 쓰는 것이겠지요? ㅎㅎㅎㅎ

그러나 원하는 서열이 bam파일에 있는 전체  서열이 아닌 한
약간의 작업을 해줘야 한 다는 것

현재 사용하고 있는 bam2fastq에 발등을 찍힌 관계로
align작업 후 얻어진 bam파일에서 곧바로 bam2fastq를 사용하여
 fastq를 뽑지 않고 있습니다.

약간 귀찮지만 다음 단계들을 거쳐서 뽑으면
본인이 원하는 서열들을 정확히 bam파일에서 뽑아 낼 수 있다는 것!!

bam2fastq나 그런 류의 프로그램만 사용하면 된다는 구글링 결과는
거짓부렁;;; 제길...

현재 다운로드 가능한 bam2fastq는 1.1.0 이다.
좋은 결과 있으시길~ :)


samtools view -H align.bam > align.mapped.sam
samtools view -F4 align.bam >> align.mapped.sam
samtools view -bS align.mapped.sam > align.mapped.bam
bam2fastq --aligned -o align#.mapped.fq align.mapped.bam

명령어 주석
-H는 헤더파일을 뽑는 옵션
-F4는 저도 정확히 모르겠지만 bam파일에서 -F4는 paired-end read가
모두 align되는 flag인듯 합니다.
-f4를 해서 저장한 파일들을 보면 align되지 않은 것들이 저장되는 것은 확인하였고,
-F4의 경우 align 정보가 표시되는 것으로 보아 맞는것으로 보입니다. :)
-F는 해당 flag를 제외한 결과를 return하는 옵션이고, 
-f는 해당 flag를 포함한 결과를 return하는 옵션입니다.
그러므로 -f4를하면 unmapped된 결과만 저장되고, -F4를 하면 unmapped되지 않은 결과가 저장되게 됩니다. :)
생성한 sam파일을 다시 bam파일로 변환하여 bam2fastq를 사용하여
fastq를 얻으면 됩니다. 다만, 구글링 결과에서 --no-aligned와 --aligned가 같다고
하는 글들이 있었는데..
--aligned를 해야 align된 paired read들만 fastq로 저장됩니다.
--no-aligned의 경우 결과가 상이한 것으로 나타나서 --aligned를 권장
--aligned와 동일한 결과를 보여주는 옵션은 --no-unaligned...
믿거나 말거나~ ㅎㅎ