特許庁由来データの整理 エントリ単位の整理


 * 特許庁由来データの整理

方針
1. 以下のようなテーブル(Table-A)を作成する.


 * このテーブルは、JPO形式のエントリ、に関するテーブルである.
 * ID列について
 * エントリは、(directory, file_name, PN(patent number), AC (accession number), 配列) の組によって一意性を見る. (identifier=(directory, file_name, PN,AC,SQ))
 * したがって、文字列上はまったく同じjpoエントリであっても、置いてあるディレクトリやファイルが違うと、違うオブジェクトであると解釈されることになる.
 * このテーブルの母集団は、 「JPO形式ファイル全てのうち内容が異なるファイル一式」 の中に含まれる全JPOエントリである.

2. Table-Aから、以下のようなテーブル (Table-B)を作成する.

Table-Aから重複を取り除く. 文字列上同じjpo形式エントリがあったら、タイムスタンプがもっとも古いものをとる. いきなりTable-Bを作らないのはMD5, SHA1が期待通りの機能をするかどうかの確認のためである.


 * このテーブルは、JPO形式のエントリ、に関するテーブルである.
 * ID列について
 * エントリは、(jpo_md5, jpo_sha1) の組によって一意性を見る. (identifier=(jpo_md5, jpo_sha1))
 * したがって、jpo形式エントリが文字列上異なれば違うオブジェクトであると解釈されることになる.
 * このテーブルの母集団は、 「JPO形式ファイル全てのうち内容が異なるファイル一式」 の中に含まれる全JPOエントリである.

3. Table-Bから以下のようなテーブル（Table-C)を作成する.

ID列についてはTable Bと同じ.

rel88_AC	rel88_PN_check	rel88_AC_check	rel88_sq_checkについて
 * rel88_AC: rel88のAccession numberのリストを作成し、これと、Table-BのAC列との間で左外部結合を行う. これによりrel.88にAC列の値があるかどうかを表す列が作られる.
 * rel88_PN_check: PNがrel88の記載とあっているかどうかを表す列
 * rel88_sq_check: 配列がrel88の記載と一致しているかどうかを表す列.

4. Table Cから以下のようなテーブル(Table D)を作る.

ID列についてはTable-Bと同じ.

この方針でいいことの説明

 * jpo_entryとrel88_entryの間で対応がつかない場合
 * jpoにあってrel88に無い => suppress or 何かの間違い. (getentryで履歴を探せばよい）
 * rel88にあってjpoに無い (これはこのテーブルでは分からない）=> ファイルが足りない（紛失 or 取りこぼし) => 探す？
 * jpo_entryとrel88_entryの間で対応がつく場合、
 * new_tool_entryとrel88_entryの間に違いがあれば、以下のいずれか.
 * 手作業の結果
 * 古いツールの変換ミス
 * jpo_entryのaccessionがおかしい
 * 違いが無ければ、問題無し.

作業
sqlite3でリレーショナルデータベースを作成する.

解凍してできるファイル名が*[an]a.seqであるファイルをリレーショナルデータベースに読み込む. OS行のないエントリーは変換ツールで変換できないので、os_existにOS行のあるエントリーは1、ないエントリーは0を入れておく.

import_jpo_data.pl

jpo_data.dbのテーブルtable_Aに、ファイル名が*[an]a.seqであるファイル中のエントリーごとにdirectory, file_name, time_stamp, PN, AC, SQ, jpo_entry, jpo_md5, jpo_sha1を入れていく.
 * 1) file_list.txtに処理されたファイルのディレクトリ、ファイル名、タイムスタンプが書き出される.

例外ファイル名のファイルをリストアップし、同様の処理を行う.

exceptional_file_name.txt /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/err/save/20020219.na.seq.err /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/err/save/20020801.na.seq.perr /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/err_newtool/20111004-001.aa.seq.failed /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/err_newtool/20111004-001.na.seq.failed /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/now_newtool/20120117-001.aa.seq.checked /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/now_newtool/20120117-001.na.seq.checked /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/now_newtool/20120118-001.aa.seq.checked /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/now_newtool/20120118-001.na.seq.checked /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/now_newtool/20120119-001.aa.seq.checked /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/now_newtool/20120119-001.na.seq.checked /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/server-bkp/db03/disk/release/mkrelease/jpo/data/err/save/20020219.na.seq.err /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/server-bkp/db03/disk/release/mkrelease/jpo/data/err/save/20020801.na.seq.perr /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/server-bkp/db03/disk/release/mkrelease/jpo/expand/data/err/save/20020219.na.seq.err /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/server-bkp/db03/disk/release/mkrelease/jpo/expand/data/err/save/20020801.na.seq.perr /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/modify_data/data56/old/org/20070502.na.seq.sythetase /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1994/JP_DNA94.DAT.Z /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1994/JP_PRT94.DAT /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1995/JP_DNA95.DAT.Z /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1995/JP_PRT95.DAT /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1996/JP_DNA96.DAT.Z /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1996/JP_PRT96.DAT /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1998/japio_E00001-E14010.dat.980515 /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1998/jp_dna.dat.980402 /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1998/jp_prt.dat /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1999/jp_dna.dat.990726 /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/1999/jp_prt.dat.990726 /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/2000/20000908.aa_final.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/2000/20000908.na_final.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/2000/jpoaa.20000908.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/JPO/jpo_update/2000/jpona.20000908.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/first_data/japio.dat.gz /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/modify_data/data76/2003.send_jpo.jpo.ff /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/tools/.old/work/t1.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/tools/.old/work/t2.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/tools/.old/work/t3.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/tools/.old/work/t2_aa.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/server-bkp/db03/disk/release/mkrelease/jpo/expand/tools/work/t1.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/server-bkp/db03/disk/release/mkrelease/jpo/expand/tools/work/t2.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/server-bkp/db03/disk/release/mkrelease/jpo/expand/tools/work/t2_aa.seq /home/o0gasawa/data/DDBJ/jpo/mkrelease/jpo/data/old_data_backup_at_horn/server-bkp/db03/disk/release/mkrelease/jpo/expand/tools/work/t3.seq

import_exceptional_jpo_data.pl

ファイルの連結が必要な1997年の特許庁送付ファイルについては、連結したファイルのファイル名は1997.aa.seqと1997.na.seqとし、タイムスタンプは先頭ファイルのタイムスタンプを使うこととする.

import_1997_jpo_data.pl

同一のmd5値で異なるエントリが存在するかどうかをチェックする.

check_md5_dup.pl

同一のmd5で異なるエントリーは存在しなかった.

table_Aからtable_Bを作る.

const_table_B.pl

DDBJ release88 + Patent amino acid sequence data for JPOからACCESSION, 特許番号/配列番号, 配列データ, 全エントリーをリレーショナルデータベースに入れる.

import_ddbj.pl

table_Bテーブルとddbj_dataテーブルから結合条件をtable_B.AC = ddbj_data.ddbjACで左外部結合し、table_Cを作成する.

const_table_C.pl

table_Cからjpo_md5, jpo_entryを書き出し、特許データ変換ツールでDDBJ FFを生成する.

split_jpo_db.pl

import_newff.pl

table_Cには同一md5だが別ファイル由来のエントリーが重複しているので、そこから作成されたnew_ffテーブルは一部エントリーが重複している.

const_table_D.pl

compare_FF_1.pl

改行位置のずれを吸収するため、LINE TYPEと改行を削除して比較する.

compare_FF_2_del_rel.pl

改行位置のずれを吸収するため、さらにスペースを削除して比較する.

compare_FF_3_del_space.pl

ddbjentryとnew_entryの間の差異を検出する.

compare_FF_4.pl

correct_step4.txtに書き出したmd5でtable_Dのnew_tool_comp_flagを更新する（4を入れる）.

update_flag_4.pl

ここまでの集計をする.

table_Dの内訳

※1:detected_error.txtにddbjentryとnew_entryの間の差異が出力されている.

※2:JPO送付ファイルのエントリーがDDBJ FFに変換された時に1. ACがDDBJ形式のprefixに変更、2. PNの配列番号の振り直し（特許データ更新履歴 2010/07/28）、3. 塩基配列の表記変更（大文字→小文字、u→t）のため対応が取れていない可能性が考えられる.

※3:JPOエントリーにOS行がない、または","から始まるPI行があるため変換ツールでエラーが発生し、new_entryが存在しない.

DDBJ release88から見た集計

count.pl

DDBJ release88とPatent amino acid sequence data for JPOの全エントリー9,327,094のうち8,449,334エントリーは新ツールで生成したFFと内容が同一で、832,900エントリーは異なる個所が検出された.

JPO送付ファイル中のエントリーと対応の取れていない、DDBJ release88の44,861エントリーは、JPO送付ファイル中のエントリーがDDBJ FFに変換された時の1. DDBJ形式のprefixのACに変更、2. PNの配列番号の振り直し（特許データ更新履歴 2010/07/28）、3. 塩基配列の表記変更（大文字→小文字、u→t）、4. 変換ツールのエラーによりDDBJ FFに変換されなかったエントリー、により対応が取れていない可能性が考えられる.

作業2
エラーでDDBJ FFに変換できなかったエントリーについて、OS行の追加、PI行の先頭の「,」をひとつ前のPI行の行末に移動、により変換ツールで変換して、できたDDBJ FFをtable_Dのnew_entryに入れる.

ddbj_entryとnew_entryを比較する.

table_Dに変換用のデータのカラムを追加したtable_Eを作成する.

塩基の表記にu, A, C, G, Tが使用されているエントリーのmd5, AC, SQをtable_Eから取り出す.

get_error_sq.pl

取り出した塩基配列の塩基を変換してSQcnvに入れる.

update_SQcnv.pl

update_PNcnv.pl

update_ACcnv3.pl

update_ACcnv.pl

const_table_E_step4.pl

compare_FF_5.pl

table_Eの内訳 ※1 rel88_AC_check=1 and rel88_PN_check=1 and rel88_SQ_check=1のレコードのみ比較しており、それ以外の2,500レコードはまだAC, PN, SQの置換による比較は行っていない.

new_tool_comp_flag is nullの内訳 DD272954 - DD278343 (2,439　ACCESSION): 配列番号にNが付いている. DD722821 - DD731081 (580　ACCESSION）: 公報番号が1年ずれている. DL232476 - DL233349 (874　ACCESSION）: 公報番号が1年ずれている. FW394993, FW394994, FW395092 E (12,507　ACCESSION）: 少なくとも一部はPN変換リストにあるのにPNcnvに正しい値が入っていない. この他に、特許庁送付ファイルにはあるがDDBJ release88には入っていないACCESSIONのエントリーが含まれる.

DDBJ release88から見た集計（上の行で集計されたACCESSIONは下の行では集計に入れない）

エラーの発生状況を調べる.

EMBL FFのDT行からcreated date, last updated dateを取り出す.

get_date.pl

EMBL FFから取り出したcreated date, last updated dateをddbj88.dｂのddbj_dataテーブルに入れる.

update_date.pl

new_tool_comp_flag=99で差異が検出されたLINE TYPEのcreated date（EMBLのデータより抽出）別集計 COMMENT-CC 1997	31 2002	955 2003	2 2005	16 2008	8 NO_DATA	1427

COMMENT-FH 2003	2

COMMENT-FT 1997	3 1999	1 2002	903 2003	7 2005	2 2011	49 NO_DATA	744

COMMENT-OC 1997	6545 1998	1244 1999	2251 NO_DATA	2131

COMMENT-OS 1997	6 2002	12049 2003	2487 2006	4 2009	2782 2011	8831 NO_DATA	17951

COMMENT-PA 2002	14

COMMENT-PD 2011	4646 NO_DATA	4208

COMMENT-PI 1997	1 2002	1123 2003	1440 2005	4569 2006	3767 2007	13 2008	61 2009	494 NO_DATA	9836

COMMENT-PR 2002	4896 2005	1620 2006	156 2007	19 2008	162 NO_DATA	3218

COMMENT-US 2005	1620 2006	156 2007	19 2008	162 NO_DATA	749

DEFINITION 1997	2 2002	1392 2005	70 2007	623 2008	110 2009	136 2010	21 2011	26 NO_DATA	601

FEATURES 2005	2 NO_DATA	2

FEATURES-source 1997	11 2002	107 2003	23 2005	94 2006	14 2007	8 2008	169 2009	91 2010	55 2011	246 NO_DATA	889

LOCUS 1997	11543 1998	1849 1999	3343 2002	101 NO_DATA	78879

ORIGIN 1997	7321 1998	1849 1999	3342 NO_DATA	4743

REFERENCE 1997	1 2002	104 2005	17 2008	3 2009	1 2010	27 2011	4 NO_DATA	387

REFERENCE-AUTHORS 1997	11538 1998	1849 1999	3343 2002	1410 2003	1439 2005	11767 2006	13580 2007	5148 2008	33924 2009	21958 2010	141 2011	62 NO_DATA	155594

REFERENCE-JOURNAL 1997	26 2002	2705 2003	1028 2004	1 2005	1496 2006	1474 2007	3672 2008	3753 2009	5634 2010	25756 2011	4703 NO_DATA	136720

REFERENCE-TITLE 1997	395 1998	96 1999	113 2002	3727 2003	5734 2005	31478 2006	12321 2007	38520 2008	231602 2009	14897 2010	8436 2011	2207 NO_DATA	117620

SOURCE 1997	12 1999	1 2002	4 2003	29 2005	110 2006	23 2007	14 2008	169 2009	112 2010	40 2011	243 NO_DATA	698

SOURCE-ORGANISM 1997	73 1998	6 1999	10 2002	135 2003	159 2005	425 2006	182 2007	88 2008	397 2009	538 2010	718 2011	979 NO_DATA	2872