bioinfo:roary
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
bioinfo:roary [2022/06/22 17:03] – [cluster ID를 이용하여 GFF 파일에서 지정된 유전자의 염기서열 추출하기] hyjeong | bioinfo:roary [2023/06/26 20:02] (current) – [결과물 이해하기] hyjeong | ||
---|---|---|---|
Line 33: | Line 33: | ||
==== 다른 방법으로 마련한 통해 마련한 GFF3을 쓰면 안되나? ==== | ==== 다른 방법으로 마련한 통해 마련한 GFF3을 쓰면 안되나? ==== | ||
- | GFF3 파일은 이를 만들어내는 프로그램에 따라서 형식이 조금씩 다르다. Roary가 사용하는 GFF3 파일은 뒷부분 '## | + | GFF3 파일은 이를 만들어내는 프로그램에 따라서 형식이 조금씩 다르다. Roary가 사용하는 GFF3 파일은 |
LOCUS | LOCUS | ||
DEFINITION | DEFINITION | ||
Line 115: | Line 115: | ||
[[https:// | [[https:// | ||
- | clustered_proteins는 가장 이해하기 쉬운 파일이다. summary_statistics.txt에 나타난 total genes는 결국 gene cluster(singleton 포함)이며, | + | **clustered_proteins**는 가장 이해하기 쉬운 파일이다. |
> | > | ||
GTGGACAGCCATACCTCTGAACTATGGCAGCAAATTCTATCCATTATACAAACCAAGCTG | GTGGACAGCCATACCTCTGAACTATGGCAGCAAATTCTATCCATTATACAAACCAAGCTG | ||
Line 314: | Line 314: | ||
=== 종합 실습 === | === 종합 실습 === | ||
- | Core gene 목록을 뽑은 뒤 이에 해당하는 유전자 염기서열을 GCF_000520775.1.gff에서 뽑아내어 FASTA file로 만든다. 작업 디렉토리는 fixed_input_files로 한다. 가장 먼저 할 일은 뽑아낼 유전자(core gene)의 cluster ID를 추출하는 것이다. | + | Core gene 목록을 뽑은 뒤 이에 해당하는 유전자 염기서열을 |
$ query_pan_genome -a intersection -g ../ | $ query_pan_genome -a intersection -g ../ | ||
$ awk ' | $ awk ' | ||
Line 323: | Line 323: | ||
- gene_presence_absence.csv는 콤마로 각 컬럼을 구분하고 있으며, 컬럼은 따옴표로 둘러싸여 있다. Annotation 컬럼은 내부적으로 콤마를 포함할 수도 있다. 많은 유전자의 product 이름에는 콤마가 들어있는 경우가 많다. | - gene_presence_absence.csv는 콤마로 각 컬럼을 구분하고 있으며, 컬럼은 따옴표로 둘러싸여 있다. Annotation 컬럼은 내부적으로 콤마를 포함할 수도 있다. 많은 유전자의 product 이름에는 콤마가 들어있는 경우가 많다. | ||
- Paralog가 출현하면 하나의 컬럼에 두 개 이상의 유전자가 있을 수 있다. | - Paralog가 출현하면 하나의 컬럼에 두 개 이상의 유전자가 있을 수 있다. | ||
- | 1, 즉 따옴표로 둘러싼 컬럼을 콤마로 구분하는 csv 파일을 파싱하는 것은 매우 흔한 일이면서도 의외로 까다롭다. [[https:// | + | 1, 즉 따옴표로 둘러싼 컬럼(특히 그 내부에 콤마를 포함하는 경우)을 콤마로 구분하는 csv 파일을 파싱하는 것은 매우 흔한 일이면서도 의외로 까다롭다(([[https:// |
$ csvcut -c 1,17 ../ | $ csvcut -c 1,17 ../ | ||
$ join -t, -1 1 -2 1 core_genes.txt gene_presence_absence_GCF_000520775.1.csv > core_gene_info_GCF_000520775.1.txt | $ join -t, -1 1 -2 1 core_genes.txt gene_presence_absence_GCF_000520775.1.csv > core_gene_info_GCF_000520775.1.txt | ||
- | GCF_000520775.1_info.txt 파일을 콤마로 구분했을 때 두 번째 컬럼에 유전자가 정확히 1개씩 있는지, 혹은 탭을 구분자로 하여 2개 이상이 있는지를 확인해 둔다. | + | **core_gene_info_GCF_000520775.1.txt** 파일을 콤마로 구분했을 때 두 번째 컬럼에 유전자가 정확히 1개씩 있는지, 혹은 탭을 구분자로 하여 2개 이상이 있는지를 확인해 둔다. |
== [1] pan_genome_sequences 디렉토리의 core gene alignment에서 염기서열을 뽑아내기 == | == [1] pan_genome_sequences 디렉토리의 core gene alignment에서 염기서열을 뽑아내기 == | ||
# 현 위치는 fixed_input_files | # 현 위치는 fixed_input_files | ||
Line 341: | Line 341: | ||
== [2] GFF 파일과 이로부터 추출한 FASTA file을 이용하는 방법 == | == [2] GFF 파일과 이로부터 추출한 FASTA file을 이용하는 방법 == | ||
+ | # 현 위치는 fixed_input_files | ||
+ | $ perl test_20220622.pl core_gene_info_GCF_000520775.1.txt GCF_000520775.1.gff > core_genes_from_GCF_000520775.1.fa | ||
+ | Perl 스크립트 ' | ||
+ | # | ||
+ | # | ||
+ | | ||
+ | open LIST, $ARGV[0]; | ||
+ | while ( < | ||
+ | chomp; | ||
+ | @data = split /,/, $_; | ||
+ | $seen{$data[1]} = $data[0]; | ||
+ | } | ||
+ | | ||
+ | ( $strain = $ARGV[1] ) =~ s/\.gff$//; | ||
+ | open GFF, $ARGV[1]; | ||
+ | while ( <GFF> ) { | ||
+ | chomp; | ||
+ | @temp = split /\t/, $_; | ||
+ | next unless $temp[2] eq ' | ||
+ | $temp[8] =~ m/ | ||
+ | $op = ''; | ||
+ | if ( exists $seen{$1} ) { | ||
+ | $seq = $strain . ' | ||
+ | $op = ' | ||
+ | $idndesc = '>' | ||
+ | system( " | ||
+ | } | ||
+ | } | ||
+ | 두 번째 방법으로 추출한 FASTA 파일에는 gap이 존재하지 않으며, 오로지 위치를 이용하여 염기서열을 추출하게 되므로 core gene의 group ID가 약간 틀려도 문제를 일으키지 않는다는 장점이 있다. | ||
===== Roary에게 경의를! Scory ===== | ===== Roary에게 경의를! Scory ===== |
bioinfo/roary.1655885006.txt.gz · Last modified: 2022/06/22 17:03 by hyjeong