SPARQLthon26/TogoGenome
提供:TogoWiki
ゲノム RDF 真核対応
RDF取得フロー
1.NCBIからASSEMBLYのレポートを取得する
- ftp://ftp.hgc.jp/pub/mirror/ncbi/genomes/GENOME_REPORTS
- ftp://ftp.hgc.jp/pub/mirror/ncbi/genomes/ASSEMBLY_REPORTS
「GENOME_REPORTS/eukaryotes.txt」ではBioProjectIDが対応していないため、「ASSEMBLY_REPORTS/assembly_summary_refseq.txt」を使用する。
既存の「prokaryotes.txt」は使用せずに、「assembly_summary_refseq.txt」から原核真核含め全生物種を取得する。
ダウンロード済みファイル
2.ASSEMBLY_REPORTの情報をRDFに変換してインポートする
- 変換スクリプト:http://ep.dbcls.jp/rdf/togogenome/bin/assembly_report2ttl.rb
- インポートグラフ名:<http://togogenome.org/graph/assembly_report>
- SPARQLthon22/AssemblyReports で開発(藤澤)
3.ロード対象のTaxID及びBioProjectID及びRefSeqID(nucleotide)を選択する
「assembly_summary_refseq.txt」には過去の履歴やクオリティの低いデータも含まれているため、ロード対象のTaxID及びその代表的GenomeのBioProjectIDを一意に選定し、GenBankファイルを取得するためにRefSeqIDを取得する。
選定の基準は次の通り
選定基準1. assembly_levelに"Chromosome"が含まれているAssembly
PREFIX asm: <http://www.ncbi.nlm.nih.gov/assembly/> SELECT ?level (COUNT(?assembly) AS ?count) { ?assembly asm:assembly_level ?level . } GROUP BY ?level ORDER BY DESC (?count)
結果:
"Contig" : 12199 "Scaffold" : 10413 "Gapless Chromosome" : 2742 "Chromosome" : 530 "Chromosome with gaps" : 184
選定基準2. version_statusで最新フラグがついたAssembly
asm:version_status "latest"
ロード対象となるTaxIDは3182件。
PREFIX asm: <http://www.ncbi.nlm.nih.gov/assembly/> SELECT (COUNT(DISTINCT ?tax_id) AS ?tax_id) { ?assembly asm:tax_id ?tax_id; asm:version_status "latest" ; asm:assembly_level ?level . FILTER(CONTAINS(?level, "Chromosome")) }
このうち51件のTaxIDについてはProjectIDが一意に決まらない。以下はそのリストを出力するクエリ 結果リスト
PREFIX asm: <http://www.ncbi.nlm.nih.gov/assembly/> SELECT ?tax_id ?bioproject_accession ?category ?release_date FROM <http://togogenome.org/graph/assembly_report> { { SELECT ?tax_id { ?assembly asm:tax_id ?tax_id; asm:bioproject_accession ?bioproject_accession ; asm:version_status "latest" ; asm:assembly_level ?level . FILTER(CONTAINS(?level, "Chromosome")) } GROUP BY ?tax_id HAVING (COUNT(DISTINCT ?bioproject_accession) > 1) } ?assembly asm:tax_id ?tax_id; asm:bioproject_accession ?bioproject_accession ; asm:version_status "latest" ; asm:assembly_level ?level ; asm:refseq_category ?category; asm:release_date ?release_date . } ORDER BY ?tax_id
選定基準3. ヒトゲノム(9606)に関しては”PRJNA168”のみ
上記で対象となるBioProjectのうち、ヒトゲノムだけはBioProjectを一つ(”PRJNA168”)に選定して登録する。
その他の"PRJNA20837"と"PRJNA178030"等はTogoGenomeの対象外とする(SPARQLではなくスクリプト側で除外)。
ヒトゲノム以外はTaxIDについてProjectIDが複数登録されていてもよいものとする
http://identifiers.org/taxonomy/1046632 http://identifiers.org/taxonomy/1051631 http://identifiers.org/taxonomy/1069378 http://identifiers.org/taxonomy/1081094 http://identifiers.org/taxonomy/1081095 http://identifiers.org/taxonomy/1091494 http://identifiers.org/taxonomy/1091500 http://identifiers.org/taxonomy/1091501 http://identifiers.org/taxonomy/1100832 http://identifiers.org/taxonomy/1100833 http://identifiers.org/taxonomy/1126885 http://identifiers.org/taxonomy/1167634 http://identifiers.org/taxonomy/117575 http://identifiers.org/taxonomy/1216962 http://identifiers.org/taxonomy/1219083 http://identifiers.org/taxonomy/1219084 http://identifiers.org/taxonomy/1266844 http://identifiers.org/taxonomy/191026 http://identifiers.org/taxonomy/28173 http://identifiers.org/taxonomy/340100 http://identifiers.org/taxonomy/396359 http://identifiers.org/taxonomy/508765 http://identifiers.org/taxonomy/509169 http://identifiers.org/taxonomy/562019 http://identifiers.org/taxonomy/572263 http://identifiers.org/taxonomy/63186 http://identifiers.org/taxonomy/683735 http://identifiers.org/taxonomy/688245 http://identifiers.org/taxonomy/69896 http://identifiers.org/taxonomy/699032 http://identifiers.org/taxonomy/699033 http://identifiers.org/taxonomy/699037 http://identifiers.org/taxonomy/882884 http://identifiers.org/taxonomy/940296 http://identifiers.org/taxonomy/977801
選定基準4. sequence_roleが"assembled-molecule"となっているシーケンス
選定したAssemblyのRefseqIDを検索するとscaffold等が混じるため、sequenc_roleが"assembled-molecule"となっているものだけにしぼる。ヒトゲノムでの例
- 確認事項:roleの説明についてはNCBIのAssembly helpのページに説明があるが、選択肢が異なる NCBIページ
選定基準5. NucleotideのIDがidentifiers.orgのrefseqIDのパターンにマッチしているもの
refseqIDの項目に"na"(値なし)や"lcl|chr9_random"等おかしなRefSeqIDリストRefSeqIDとして有効でなさそうなものは除外する。
Identifiers.orgに記載されているRefSeqIDのIdentifier patternに準拠したIDだけを選定する。
- 課題1;Identifiers.orgのパターンでは無効だが、有効そうなIDが含まれている(416件)
例;NZ_CM001142.1(NZ_にアルファベット2文字続くが、Identifiers.orgのパターンでは"(NZ\_[A-Z]{4}\d+))"4文字必要だが)
- 課題2;NT_で始まる品質の悪いID(Contig or scaffold, clone-based or WGS)も登録される RefSeqIDのPrefixリスト
現状ではNTが含まれるのは4ゲノム
180454/PRJNA163/NT_078265,NT_078266,NT_078267,NT_078268(Anopheles gambiae str. PEST ハマダラ蚊) リンク 7227/PRJNA164/NT_033777,NT_033778,NT_033779,NT_037436(Drosophila melanogaster ミバエ) リンク 7240/PRJNA29993/NT_167061,NT_167066,NT_167067,NT_167068(Drosophila simulans オナジショウジョウバエ) リンク 7245/PRJNA29999/NT_167062,NT_167063,NT_167064,NT_167065(Drosophila yakuba ヤクバショウジョウバエ) リンク
データ取得用SPARQL
上記の条件に合致するTaxIDとProjectIDのRefSeqID一覧を抽出するクエリ。
PREFIX asm: <http://www.ncbi.nlm.nih.gov/assembly/> SELECT DISTINCT ?assembly_id ?tax_id ?bioproject_accession ?replicon_type ?seq_id FROM <http://togogenome.org/graph/assembly_report> { ?assembly asm:assembly_id ?assembly_id ; asm:tax_id ?tax_id ; asm:bioproject_accession ?bioproject_accession ; asm:gbrs_paired_asm ?gbrs ; asm:version_status "latest" ; asm:assembly_level ?level ; asm:sequence ?seq . ?seq asm:assigned_molecule_location_type ?replicon_type ; asm:sequence_role "assembled-molecule" ; asm:refseq_accession ?seq_id . FILTER( CONTAINS(?level, "Chromosome") AND !((?tax_id ="9606") AND !(?bioproject_accession = "PRJNA168")) AND regex(?seq_id, "^((AC|AP|NC|NG|NM|NP|NR|NT|NW|XM|XP|XR|YP|ZP)_\\d+|(NZ\\_[A-Z]{2,4}\\d+))(\\.\\d+)?$") ) } ORDER BY ?tax_id ?bioproject_accession ?replicon_type ?seq_id
選定基準3と選定基準5の条件を切り出したバージョン(速度が遅くなったりヒトゲノムのような条件が増えるとこちらを使う)。
PREFIX asm: <http://www.ncbi.nlm.nih.gov/assembly/> SELECT DISTINCT ?assembly_id ?tax_id ?bioproject_accession ?gbrs ?replicon_type ?seq_id FROM <http://togogenome.org/graph/assembly_report> { ?assembly asm:assembly_id ?assembly_id ; asm:tax_id ?tax_id ; asm:bioproject_accession ?bioproject_accession ; asm:gbrs_paired_asm ?gbrs ; asm:version_status "latest" ; asm:assembly_level ?level ; asm:sequence ?seq . ?seq asm:assigned_molecule_location_type ?replicon_type ; asm:sequence_role "assembled-molecule" ; asm:refseq_accession ?seq_id . FILTER(CONTAINS(?level, "Chromosome")) } ORDER BY ?tax_id ?bioproject_accession ?replicon_type ?seq_id
上記の条件に合致するTaxIDとProjectIDを抽出するクエリ。Organellaの有無確認でGENOME_REPORTSとデータを繋げるために、gbrs_paired_asmも取得する
PREFIX asm: <http://www.ncbi.nlm.nih.gov/assembly/> SELECT DISTINCT ?assembly_id ?tax_id ?bioproject_accession ?gbrs FROM <http://togogenome.org/graph/assembly_report> { ?assembly asm:assembly_id ?assembly_id ; asm:tax_id ?tax_id ; asm:bioproject_accession ?bioproject_accession ; asm:gbrs_paired_asm ?gbrs ; asm:version_status "latest" ; asm:assembly_level ?level . FILTER(CONTAINS(?level, "Chromosome")) } ORDER BY ?tax_id ?bioproject_accession
個別のTaxとProjectIDに対するRefseqのNucleotide sequenceのタイプとIDを取得するSPARQL
PREFIX asm: <http://www.ncbi.nlm.nih.gov/assembly/> SELECT DISTINCT ?replicon_type ?seq_id FROM <http://togogenome.org/graph/assembly_report> { ?assembly asm:assembly_id "GCF_000009705.1" ; asm:tax_id "103690" ; asm:bioproject_accession "PRJNA57803" ; asm:sequence ?seq . ?seq asm:assigned_molecule_location_type ?replicon_type ; asm:sequence_role "assembled-molecule" ; asm:refseq_accession ?seq_id . } ORDER BY ?replicon_type ?seq_id
なお、上記二つは一つのクエリで書く事も可能だが、GROUP_CONCATを使う場合の文字列制限でおこられる様子。
"Virtuoso 22026 Error SR319: Max row length is exceeded when trying to store a string of 6934 chars into a temp col"
PREFIX asm: <http://www.ncbi.nlm.nih.gov/assembly/> SELECT DISTINCT ?tax_id ?bioproject_accession ?gbrs ?replicon_type (GROUP_CONCAT(?refseq, ',') AS ?sequences) FROM <http://togogenome.org/graph/assembly_report> { ?assembly asm:tax_id ?tax_id ; asm:bioproject_accession ?bioproject_accession ; asm:gbrs_paired_asm ?gbrs ; asm:version_status "latest" ; asm:assembly_level ?level ; asm:sequence ?seq . ?seq asm:assigned_molecule_location_type ?replicon_type ; asm:refseq_accession ?refseq . FILTER(CONTAINS(?level, "Chromosome") AND ?replicon_type IN("Chromosome", "Plasmid")) } GROUP BY ?tax_id ?bioproject_accession ?gbrs ?replicon_type ORDER BY ?tax_id ?bioproject_accession
以下の選定条件は、TaxIDに対してProjectIDを一つだけ選定するもの。ひとつのTaxIDに複数のProjectIDを登録してもいいことになったため、以降の選定基準は不要。
選定基準3. refseqのcategoryで優先順位を決定する
latestで複数のProjectIDがある場合には(複数の機関のProjectIDがあるケース等)、categoryの一番高いものを優先する。
categoryのリストは以下の通り。
PREFIX asm: <http://www.ncbi.nlm.nih.gov/assembly/> SELECT ?category (COUNT(?assembly) AS ?count) FROM <http://togogenome.org/graph/assembly_report> { ?assembly asm:refseq_category ?category . } GROUP BY ?category ORDER BY DESC (?count)
"na" 22478 "representative-genome" 3492 "reference-genome" 98
論文によるとcategoryによるクオリティの優先度は次のようになる
"reference-genome"> "representative-genome" > "na"
選定基準4. release_dateで優先順位を決定する
categoryでもProjectIDが一意に決まらない場合には、release_dateが新しいものを選択する。
選定基準5. それでも決まらない場合
TogoGenomeのロード対象外とする
このケースは現在一例のみで、Isolateだけが違うProjectIDが3件登録されている。
http://www.ncbi.nlm.nih.gov/assembly/?term=txid1074919
4.ASSEMBLY_REPORTSにないシーケンスデータの一覧を取得する(廃止)
真核生物のうち、人のミトコンドリア等のAssemblyがほぼ発生しないものについては、Assemblyのレポートには記載されていないため、漏れる事がある
それらのBioProjectを取得するには個別対応となる。漏れている可能性があるものは「GENOME_REPORTS/eukaryotes.txt」のOrganellaの欄に数値があるものでリストアップして個別対応する。
→ 手順2のassembly_reports.ttlからミトコンドリア等のシーケンス番号が取得できたため、この手順は不要
5.TogoWSでGenBANK形式を取得する
対象としたTaxIDとBioProjectIDを元にTogoWSからGenBANK形式のデータを取得する
スクリプト
課題:togowsから取得できなかったnucleotide(502 Proxy Error ← Timeout?)
http://togows.dbcls.jp/entry/nucleotide/NC_008801 http://togows.dbcls.jp/entry/nucleotide/NC_008802 http://togows.dbcls.jp/entry/nucleotide/NC_008803 http://togows.dbcls.jp/entry/nucleotide/NC_008804
6.GenBANK形式をRDFに変換する
- 課題:Chromosome,Plasmid以外のMolecule typeについて
これまでの微生物だけの場合にはMolecule typeは"Chromosome(SO:0000340)", "Plasmid(SO:0000155)"だけで登録していたが、assembly reportsから真核含めたデータを取得するとこれ以外のtypeも含まれていた(例:Mitochondrion、Linkage Group、Chloroplast等)これらの値に割り当てるSOのIDが必要になる
Typeと出現個数("全seqのタイプと個数"シート)
ChromosomeとPlasmid以外のリスト("登録対象seqでChromosomeとPlasmid以外のリスト"シート)
解決策:insdc2ttl.rb側で"Linkage Group"等の新しいタイプへのSO IDの割り当てを行った。