유전체 데이터는 A, T, G, C의 네 가지 알파벳 (염기) 으로 구성된 일종의 텍스트 데이터이다. 따라서 데이터 내에서 특정 패턴의 염기 서열을 추출할 때, regular expressions를 사용할 수 있다. 따라서 이번 포스팅에서는 regular expressions에 대해 공부해보려 한다. 아래 Reference에 있는 링크에 접속하면 더 자세하게 설명되어 있고 연습 문제도 풀어볼 수 있으므로 관심 있다면 한 번 확인해 보면 좋을 것 같다.
1. 문자
- e.g., abcde → abcde
Regular Expression | DNA Sequence | Match or Not |
CTT | TAGACCTTAC | Match |
TTGACCGGAT | Not match | |
ACAGTGTCTT | Match |
2. 숫자
- e.g., 123 → 123
3. 아무 문자/특수문자 (\D)
- e.g., abcd# → \D\D\D\D\D
Regular Expression | DNA Sequence | Match or Not |
ACA\D | TGACACGTTT | Match |
ATGGGTTACT | Not match | |
GCAATCACAT | Match |
4. 아무 숫자 (\d)
- e.g., 123 → \d\d\d
5. 아무 문자/특수문자/숫자 (.)
- e.g. abcde123# → .........
Regular Expression | DNA Sequence | Match or Not |
CT.T | CCAAGACTGG | Not match |
CTATGCACGA | Match | |
AGCAACTCTT | Match |
6. 온점 (\.)
- e.g., hi.flower → hi\.flower
7. 주어진 문자/특수문자/숫자 중 하나 ([abc])
- e.g., dog → [fdb]og
Regular Expression | DNA Sequence | Match or Not |
TGTT[AG] | GAGTGTTAAA | Match |
ATGTTGACCC | Match | |
CTGTATTTGG | Not match |
8. 복수 개의 문자/특수문자/숫자 중 어느 하나도 포함하지 않고 ([^abc])
- e.g., dog → [^abc]og
Regular Expression | DNA Sequence | Match or Not |
GAT[^GT] | GATGCGGGTA | Match |
GTAGATGAGT | Match | |
GCAGGGACTC | Not match |
9. a에서 z까지의 문자 ([a-z]), A에서 Z까지의 문자 ([A-Z])
- 대소문자 구분
- e.g., K → [A-Z]
Regular Expression | DNA Sequence | Match or Not |
AGG[A-Z] | CGAGGTCAAG | Match |
TACATTACCC | Not match | |
TCTCATAGGG | Match |
10. 0에서 9까지의 숫자 ([0-9])
- e.g., 7 → [0-9]
11. [A-Za-z0-9_] = \w
- e.g., U_r4 → \w\w\w\w
Regular Expression | DNA Sequence | Match or Not |
CAC\w | GGCGTTCTAG | Not match |
ATCACGTTAC | Match | |
CACCATATCA | Match |
12. \w에 포함되지 않은 특수문자들 (\W)
- e.g., @?+ → \W\W\W
13. 특정 문자/특수문자/숫자 m번 반복 ({m})
- e.g., yy → y{2}
Regular Expression | DNA Sequence | Match or Not |
GC{3} | TTCGAGCATG | Not match |
ACACCATCTC | Not match | |
CGCTGTGCCC | Match |
14. 특정 문자/특수문자/숫자 m번에서 n번 반복 ({m,n})
- e.g., uuu → u{1,4}
Regular Expression | DNA Sequence | Match or Not |
ATC{2,5} | ATCCTAGTAG | Match |
ATCCCCCACG | Match | |
TATCACGCTT | Not match |
15. 반복 횟수 ≥ 0 (*)
- e.g., aaa → b*
Regular Expression | DNA Sequence | Match or Not |
A*TG | AATGAAAATG | Match |
TTTTTCGCTG | Match | |
ACAGTCATAT | Not match |
16. 반복 횟수 ≥ 1 (+)
- e.g., aaa → a+
Regular Expression | DNA Sequence | Match or Not |
TG+ | TGGGGTGCTC | Match |
CTAAGCTTTT | Not match | |
CCACTTGGCT | Match |
17. 있거나 없거나 (?)
- e.g., abd → abc?d
Regular Expression | DNA Sequence | Match or Not |
AGC?T | GGGTCAGCTA | Match |
GGCCTCCGTG | Not match | |
CCCGGAGTTT | Match |
18. 아무 공백 (\s)
- space, tab, new line 모두 포함
- e.g., a bc → a\sbc
19. 공백이 아닌 아무 문자/특수문자/숫자 (\S)
- e.g., ab → \S\S
Regular Expression | DNA Sequence | Match or Not |
CCG\SC | CGGCGCAGTG | Not match |
CTGCCGACAG | Match | |
CCGGCCATTG | Match |
20. 특정 문자/특수문자/숫자로 시작(^)하고 끝($)나는 줄
- e.g., abcdefg → ^a\D+g$
Regular Expression | DNA Sequence | Match or Not |
^C\D+T$ | TCTTTGGGGC | Not match |
CTCATTCGAG | Not match | |
CCTATCTTGT | Match |
22. 특정 group capture하기 (())
- e.g., abcdefg에서 abcdef capture하기 → ^(a\D+)g$
Regular Expression | DNA Sequence | Match or Not | Captured Group |
^CGGG(\D+)C$ | GTTGGGCTTA | Not match | - |
CGGGACCACC | Match | ACCAC | |
CGGGGTAGTC | Match | GTAGT |
23. 특정 subgroup capture하기 ((()))
- e.g., abcdefg에서 abcdef와 bcd capture하기 → ^(a(bcd)\D+)g$
Regular Expression | DNA Sequence | Match or Not | Captured Group | Captured Subgroup |
(\D+(CCT.)\D+)C$ | CGGCCTCCCC | Match | CGGCCTCCC | CCTC |
AGCCCTGCGC | Match | AGCCCTGCG | CCTG | |
TGCACCGAAA | Not match | - | - |
24. abc 또는 def (abc|def)
- e.g., ABCdef → ABC(def|ghij)
Regular Expression | DNA Sequence | Match or Not |
(T.+G|C.+C)AAG | GCTACGGAAG | Match |
GTGATAAGCT | Not match | |
CCGGCAAGCA | Match |
Reference
'생물정보학 끄적끄적' 카테고리의 다른 글
[Linux] Merging Paired-End Reads (62) | 2023.12.31 |
---|---|
[Linux] Sequence Data Quality Control - Trimming Adapters (61) | 2023.12.30 |
[Linux] Short Read Archive 데이터 다운받기 (63) | 2023.12.29 |
GO Enrichment 분석 연습 (78) | 2023.12.28 |
[Linux] Ontology (3) - bio explain (86) | 2023.12.25 |