SPARQLthon26/TogoGenome

提供:TogoWiki

移動: 案内, 検索

目次

ゲノム RDF 真核対応

RDF取得フロー

1.NCBIからASSEMBLYのレポートを取得する

「GENOME_REPORTS/eukaryotes.txt」ではBioProjectIDが対応していないため、「ASSEMBLY_REPORTS/assembly_summary_refseq.txt」を使用する。
既存の「prokaryotes.txt」は使用せずに、「assembly_summary_refseq.txt」から原核真核含め全生物種を取得する。

ダウンロード済みファイル

2.ASSEMBLY_REPORTの情報をRDFに変換してインポートする


変換済みRDF

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が複数登録されていてもよいものとする


  • なお、データ更新することでバージョン(v61) から削除されるTaxIDは35件(理由は未調査) クエリ1 クエリ2
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文字必要だが)

現状では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の割り当てを行った。

関連情報

/mw/SPARQLthon26/TogoGenome」より作成