시퀀싱 데이터에서 3' 어댑터 서열 제거

small RNA 시퀀싱에서는 리드보다 RNA가 더 짧아서, 5' 끝부터 읽을 경우에는 3' 어댑터 시퀀스가 나오고, 프라이머를 뒤집어서 3' 끝부터 읽으면 5' 시퀀스가 나올 수 밖에 없다. small RNA가 아니더라도 CLIP에서는 보통 바인딩 사이트를 정확히 알기위해 짧게 쳐내서 시퀀싱하는 경향이 있어서, 보통 30nt 안쪽으로 들어오는 편이라 시퀀싱한 뒤에 어댑터 제거가 꼭 필요하다.

AACTGTTTGCAGAGGAAACTGAATCTCGTATGCCGT  - hsa-miR-452 뒤에 Illumina SRA 1.5 3' 어댑터
<----- miR-452 ------><-- 3' adapter

그렇지만 역시나 PCR 오류, 시퀀싱 오류, 어댑터 불량 등등 수많은 잡음때문에 역시 단순 문자열 비교로는 잘 안 통한다. 그래서 정규식을 쓰기도 하는데 영 속도가 만족스럽지 못하고, 모든 자리에서 어댑터 시퀀스랑 비교해서 미스매치를 세는 등의 방법(HTSeq 패키지)을 쓰기도 하는데, 갭을 전혀 허용하지 않아서 어댑터 합성 품질이 안 좋은 경우는 놓치는 것이 너무 많아서 결과를 보면 답답~하다.

최근 많이 쓰이는 방법으로 Needleman-WunschSmith-Waterman을 섞어서 어댑터의 5' 끝에게는 지역정렬처럼 아무데서나 시작하게 하고, 3' 끝에는 전체정렬처럼 끝까지 가게 하는 것이 있다. 그런데, 소프트웨어는 홈페이지에 오거나, 저자에게 말하면 준다고 다들 써 놓고서는 정작 홈페이지에 가면 아무 것도 없고, 메일 보내면 묵묵부답이라, 1년 넘게 정규식으로 불쌍하게 쓰다가, 결국 큰 마음먹고 토요일 밤을 투자했다. +_+

소스코드 받기 (파이썬용 C 확장 모듈)

실제로는 affine gap penalty를 써서 행렬이 3개지만, 그냥 linear gap penalty를 쓴 경우라고 하고 행렬을 예를 들어 보면,

  • 시퀀스 리드: CCAGTCCA
  • 어댑터 시퀀스: CCAG
  • 점수: match 2, mismatch -3, gap penalty -3

3' 어댑터 떼기

이렇게 하면 짠~

댓글 3 개 | 트랙백 0 개 (보낼곳) | 태그 happyhacking


트랙백
트랙백이 없습니다.
댓글
정찬석  ▒
이런 데이터 다루는구나~ 재미있겠다~^^
2010-07-11 14:50
yong27  ▒
오오~~ biopython에 넣어주세요~
2010-07-15 09:28
찬석: 크.. 맨날 머리를 굴리는 종류의 것을 하지는 않아.. ㅋㅋ;;; C가 이렇게 재미있는지 한참 안 해보니 알겠네 ^_^;;

yong27: 오... 일반화 하기엔 좀 번거로워서 -ㅇ-;;;;;
2010-07-17 22:43

글이 올라온 지 30일이 지나 새 댓글은 쓸 수 없습니다.

누구?

장혜식 (Hyeshik Chang)
내일을 사랑하는 소년(!)