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: by hyjeong
