월요일, 4월 23, 2012

Velvet과 Oases 설치

Velvet 다운로드

$tar zxf velvet_1.2.03.tgz
$cd velvet_1.2.03
$make

default 설정으로 설치하는 경우 그냥 make하면 되지만..
K-mer값을 큰 값으로 사용하고자 하는 경우나 multi-thread를 사용하고자 하는 경우
옵션값을 조절해줘야 한다.
아니면 make할 때 옵션을 설정해 주어도 가능하다. :)


$vi Makefile
...
MAXKMERLENGTH=99
CATEGORIES=16
...
OPENMP=1
LONGSEQUENCES=1
...


$make 





Oases 다운로드

$tar zxf oases_0.2.06.tgz
$cd oases_0.2.06
$make


Oases 또한 Velvet과 마찬가지로 default 설정으로 설치하고자 하는 경우에는 make를 해주면 되지만, velvet경로도 내부 서버 상황에 맞게 설정 해야 하는 경우 가 있으므로, 다음과 같이 Makefile을 수정 후 make를 하면된다. :)


$vi Makefile
...
MAXKMERLENGTH=99
CATEGORIES=16
...
OPENMP=1
LONGSEQUENCES=1
VELVET_DIR=../velvet_1.2.03
...


$make 







금요일, 4월 06, 2012

tabix vs intersectBed

tab으로 구분되어 있는 txt 파일 처리하는 tabix에서 대해서
혜식 형님께 조언을 구하는데 대량으로 처리하려면
tabix보단 intersectBed가 더 좋다는 정보 획득!! ㅎㅎ

intersectBed 홈페이지

COUNTIF 함수

아... 어제 작업하면서 이런 기능 엑셀에 이런기능이 설마 없을까?
했는데... 역시 있었다. 착한 놈들 ㅎㅎㅎㅎ

이름도 기특하다 ! COUNTIF !
cell을 세는데 특정 조건에 맞는 셀 개수를 세는 함수

모 사용방법은 그렇듯이 항상 간단하다

=COUNTIF(범위, 조건)
범위는 우리가 자주 쓰는 A2:A30
조건은 개수를 세려는 셀의 조건이나 문자열 등등등..
내 경우 0.01보다 작은것이 몇개나 있는지 확인하기 위해서 이녀석을 찾았다.

그러므로 내가 사용한것은 =COUNTIF(A1:A10000, "<0.01")

수요일, 3월 28, 2012

awk 사용법


Blast를 수행 시 -m 8을 하면 자료 뽑아내기가 쉬운 것을 알고 있다.
근데 리눅스에서는 awk라는 명령어를 사용하여 별도의 코딩을 하지 않고
일정 값 이상/이하의 결과들만 골라서 볼 수 있다.
-biodb의 wiki에 정리해둔 것이 있었는데...;;;

구글 뒤져보니 본인이 원하는 기능의 awk 기능을 잘 설명해 놓은 것이 있어서
그대로 옮겨보도록 한다. ㅋ

출처: :+:하늘을 닮은 호수:+:

-m 옵셥에서 8값을 선택한 결과 파일 (blastout.file) 에서 score가 100 이상의 결과들만 뽑길 원하는 경우
> awk '$12 > 100 { print $2 }' blastout.file

본 문장을 응용하면 결과값에 특정 문자열만 들어가 있는 것을 포함/제외 하고
출력하기, 결과값이 중복된 것이 있으면 sort를 이용하여 제거 할 수도 있으니
참 간편하지요? ;;;

그걸 몰랐던 학부 시절 때 하나하나 python으로 삽질하던 기억을 하면;; 아놔;;;
그러나 요즘도 걍 python으로 작업한다는 훈훈한 이야기가 전해내려 온다능..;;

CPAN이용해서 Perl 모듈 설치하기


Circos를 설치하기 위해서 perl 모듈 설치에 좀더
편하게 하는 방법이 있어서.... ㅎㅎ

CPAN (Comprehensive Perl Archive Network)는 각종 perl 모듈이
모아져 있는 사이트인데 perl 5.8이후부터 cpan이라는 명령어를 지원하여
보다 편리하게 perl 모듈들을 설치할 수 있게 되었다.
(윈도우의 cgwin은 역시 잘 안된다능;;;; )

5.8 이전의 경우
$perl -MCPAN -eshell
또는
5.8 이후
$cpan

이라고 명령어를 실행시키면 처음에 실행시키면 이것저거 무엇을 한다고 하고
 [yes]를 입력하면 알아서 작업을 한후 cpan이라는 프롬프트를 보여줍니다.
cpan>install 모듈명
으로 쉽게 설치 우후훗...

HTTP Status 상태 코드별로 페이지 작성하기



출처:http://linux.tini4u.net/stories.php

일반적으로 웹호스팅을 받아보면 HTTP Status code page가
윈도우의 기본적인 그것이 아니라 깔끔하게 제작된 페이지를 본적이 있을 것입니다.
그것은 아파치에서(혹은 사용자가 [Override enabled]) 서버에러에 대한
응답을 지정해주어서 그렇습니다.

아파치 문서에 보면 ErrorDocument 부분이 정의되어 있으니
한번쯤 읽어보시면 이해하시기가 쉬우실 겁니다.
대략적으로 정리하면 총 3가지 방법으로 응답을 지정할 수가 있는데,
그것은 아래와 같습니다.


1. 보통의 텍스트
ErrorDocument 500 "The server made a boo boo."


문자열인 경우엔 " " 안에 문자열을 넣으면 됩니다.
추가=> [" "] 표시는 텍스트임을 알려주는 것으로서 그 자체는 출력되지 않습니다.


2. 내부 전환
ErrorDocument 404 /missing.html


서버 내부의 파일로 전환하는 방법인데 주의할 점으로는
절대 경로로 지정했을 경우엔 틀린 방법이라는 것입니다.
문법의 최상위 경로(/)는 DocumentRoot를 의미하기 때문입니다.
즉, 내 도메인이 /home/foobar/www/로 DocumentRoot가 설정되어 있고
전환할 페이지가 /home/foobar/www/missing.html 에 있다면
ErrorDocument 404 /missing.html


위와같이 설정을 해주셔야 작동을 합니다.

다만 이것이 사용자단이 아닌 아파치단에서(httpd.conf) 설정되었을 경우
모든 도메인에 대해서 404 코드는 /missing.html 파일을 찾게 됩니다.
이런 경우 사용자 입장에서는 /missing.html 파일을 사용하지 못합니다.

만약 서버 관리자로써 모든 Status Code 페이지를 전환하려면
Alias /Error "/usr/local/apache/htdocs/Error/"
ErrorDocument 404 /Error/missing.html


이런식으로 Alias를 만들어 주면 해결이 됩니다.
왜냐하면 모든 도메인은 /Error/missing.html를 찾을 것이고
/Error은 /usr/local/apache/htdocs/Error/ 으로 보내지기 때문입니다.
/Error/missing.html를 풀이해보면
/usr/local/apache/htdocs/Error/missing.html 이 되겠죠.

추가=> 스크립트나 SSI로도 내부 전환이 가능합니다.


3. 외부 전환
ErrorDocument 402 http://www.example.com/subscription_info.html


서버 외부의 파일로 전환하는 방법인데 김정균님 경험상으로
외부 전환시 CGI와 htaccess 인증시에 505 Status Code가 발생했다고 합니다.
원래 요청과 관련있는 환경 변수의 상당수가 스크립트에 전달되지 못한다는 점을 알고 있어야 합니다.


※ 설정하면서 주의해야 할 사항
위의 설정대로 설정했고 아무런 문제도 없는데
IE 자체의 에러페이지가 보이는 경우가 있습니다.
이런 경우는 대략 몇가지 문제가 있는데 대표적인것은 아래와 같습니다.

1. 완전한 HTML 페이지가 아닐 경우
<BODY>로 시작해서 </BODY>로 확실하게 끝나지 않았거나
혹은 <HTML>로 시작해서 </HTML>로 확실하게 끝나지 않았을 경우 입니다.
또는 PHP의 exit 명령으로 종료할때 </BODY></HTML>가 출력되지 않는
경우에도 IE 기본 페이지가 나옵니다.

2. Custom error page의 사이즈가 기준치보다 작은 경우
Custom error page 라는게 크기가 정해져 있기 때문에
이 크기가 넘지 않는 경우에도 IE 기본 페이지가 나옵니다.
Custom error page 의 각 크기 기준치는 아래와 같습니다.
Code Description File Size


400 Bad Request > 512 bytes
403 Forbidden > 256 bytes
404 Not Found > 512 bytes
405 Method Not Allowed > 256 bytes
406 Not Acceptable > 512 bytes
408 Request Time-out > 512 bytes
409 Conflict > 512 bytes
410 Gone > 256 bytes
500 Internal Server Error > 512 bytes
501 Not Implemented > 512 bytes
505 HTTP Version Not Supported > 512 bytes

금요일, 3월 23, 2012

Fasta 형식의 파일에서 빈서열 제거


가끔씩 Blast를 수행하고자 formatdb를 수행 할 때,
다음과 같은 에러를 접한 적이 있으리라 본다.


[formatdb] WARNING: Cannot add sequence number XXXXX XX.XXX.XXX.
 because it has zero-length.
[formatdb] FATAL ERROR: Fatal error when adding sequence to BLAST database.


formatdb를 수행하려는 fasta 서열에
빈 서열을 가지고 있기 때문에 나오는 에러로
빈 서열을 제거하면 OK!

vi check.py


import glob,sys
from Bio import SeqIO


file = sys.argv[1]


ow = open(file.split('.')[0]+'.check','w')
seqs = SeqIO.parse(open(file), format='fasta')
 for rec in seqs:
        name = rec.description
        seq = rec.seq.tostring()


        if len(seq.strip()) != 0:
                ow.write('>'+name+'\n')
                ow.write(seq+'\n')


ow.close()



[test]$python check.py test.fasta

Finding Homo Polymeric


출처: Finding homopolymer stretches in contigs

필요에 의해서 perl로 있는거 이용해서 약간 수정

$ vi findingHomopolymer.pl
$file = $ARGV[0];
open(data,$file);
$s = <data>;
$min = 4;


while ( $s =~ /(A{$min,}|T{$min,}|G{$min,}|C{$min,})/g) {
   $end = pos($s);
   $start = $end - length($1) + 1;
   print "$start, $end, $1 \n";
}

$ perl findingHomopolymer.pl seq.fa

※주위: seq.fa에는 서열만 한줄로 있어야 작동합니다.
fasta 폼 이런거 인식 못합니다. ㅋ

MSSQL Data Type


숫자형
bit : 1bit, 0,1
tinyint : 1byte, 0~255
smallint : 2byte, -2^15 ~ 2^15-1
int : 4byte, -2^31~2^31-1
bigint : 8byte, -2^63~2^63-1
smallmoney : 4byte, -2^31~2^31-1
money : 8byte, -2^63~2^63-1
numeric /decimal : -10^38~10^38-1
float : -1.79E+308 ~ 1.79E+308
real : -3.40E+38 ~ 3.40E+38

문자형
char/varchar : 8000자 이하의 문자
nchar/nvarchar : 4000자 이하의 유니코드 문자
text : 8000자 넘는 문자
ntext : 8000자 넘는 유니코드 문자

날짜형 
smalldatetime : 4byte, 1900-1-1 ~ 2079-6-6, 1분 단위
datetime : 8byte, 1753-1-1 ~ 9999-12-31, 1 ms 단위

이진/특수형
binary/varbinary : 8000 byte 이하의 이진값
image : 8000 byte 이상의 그림등의 바이너리 값
cutsor : 커서 이름을 변수로 처리
uniqueidentifer : 전역 유일 구분자
teimstamp : 데이터베이스 안에서 유일한 수

Eclipse Plugin 설치


(지금은 또 어떻게 얼마나 많이 변했을지 모르는 Eclipse.... ;; )


Eclipse 사용시 사용하고자 하는 plugin을 설치할 일이 있을 것이다

웬만하면 [HELP] - [Software Updates]에서 해결 가능하다.
그러나 가끔씩 맘에 안들게 이 메뉴로 해결이 불가능 할 때가 있다.

그럴때에는 manual하게 설치를 해줘야 한다.
-모 그냥 심심풀이로 사용하고자 하는 경우에는 굳이
 스트레스 받으면서 할 필요 없다.

3.4버전 Eclipse인 Ganymede는 Europa와 달리
Plugin폴더에 파일만 복사하면 plugin이 설치가 안된다.
-그래서 조낸 힘들었다.. ㅠ.ㅜ
-Europa도 안써봤었는데.. 제길..
앞으로 만날 Maven, Ant가 무섭다.. xml 설정 같은거 지랄같이 못하는데..

여하튼... Ganymede에서 수동으로 plugin을 설치하려면
두개의 설정 파일과 두개의 폴더에 관련 파일들을 복사해 주어야
Ganymede가 기분좋게 인식해준다.
-[HELP]-[Software Updates]에서 의존성 문제로 설치안되던 녀석들도
너무 깔끔하게 설치된다는 사실.. 제길...

일단 수정되어야 할 파일
eclipse/artifacts.xml
eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info

그리고 수동으로 설치 할 plugin관련 파일들을 저장할 폴더 두곳
eclipse/features/
eclipse/plugins/

그런데 문제는 각 파일과 폴더를 들여다 보면 막막할것이다.
파일안에 어떻게 내용을 넣어줘야하며, 폴더에는 어떤 파일들을 넣어줘야 하는지..

그래서 본좌는 개발용으로 사용하는 eclipse외에 버전별로(왜 버전별인지 플러그인 설치하다가 당해보면 알것이다.) 다운로드 받아놨다. ^^

그래서 원하는 plugin을 설치가 되는 eclipse에 설치 된 후,
그 eclipse에 저장된 폴더들과 파일의 관련 부분만을 긇어서 원래 개발용
eclipse에 첨가시켜주면 OK!!
젠장.. 이거 깨닫는데 한달 걸렸다..;;;