- [2023 年度仕様書](https://docs.google.com/document/d/13kE45FTGZBRfcFOGptQBUjA6soQloPLsngUBNKYSgzc/edit?usp=sharing)
- [2022 年度仕様書](https://docs.google.com/document/d/1gsnzoRIzsGJFKShmptgir_F2thqOHu7P/edit)
## 2024-07-22 16:00-
### リリースまでに対応する件
- LABEL2ID
- [x] 該当する ID が見つからなかったラベルの表示について
現状では表示されない。
見つからなかったラベルも表示できるようにしたい。Match type は "Unmatched" とする。
EXPLORE モードでのプレビューテーブルの All including unconverted IDs のように、Include unmatched labels のようなのを選択するラジオボタンを作り、切り替えられるようにする。
- [x] Match type が NCBI Gene Symbol の場合の Symbol 列
現在は空欄になっている。重複した情報にはなるが、Symbol で埋めておくようにする。
- [x] Copy to Search ボタンの名前と挙動について。
現状、ID が ID 入力欄にコピーされる。
ボタンの名前を Convert IDs にして、ボタンの挙動を
「ID を入力欄にコピーし、EXPLORE モードで、当該データセットが選択済みの状態にする」とする。
ただし現状では、MONDO の ID 表示が数字だけのものになっており、`MONDO:` か `MONDO_` を付けないと MONDO の ID として認識できない。そこで、次の項目を検討する。
- [x] 表示される ID の形式を、EXPLORE モードのテーブルと同様に選択可能にする

↑ これ。
**下記の、「その他 / prefix なしの用例が想定されないケースについての対応」と合わせて検討する。**
- [x] 結果のテーブルの維持
LABEL2ID の結果を表示してから、EXPLORE モードなどにタブを切り替えると、すぐに LABEL2ID に戻っても結果が消去されている。維持することは可能か?
- ラベル表示
- [x] (DBCLS) grasp のデータセット名を TogoID と揃える
- [x] UI でラベルを表示できるようにする
- [x] (新規) 入力 ID のラベルを知りたいだけの場合(= ID 変換が不要な場合)の UI
当初は別タブで分けていた機能。タブを分けるほどの機能ではなさそうなので、下図のような対応をしたい。

- 同一データセットペアに対する複数種類の関係の記述
- [x] uniprot -> glytoucan のような、逆向きの場合の変換の修正
現状では uniprot -> glytoucan で得られる 2 種類の結果がいずれも同じになっている。
- AWS
- [ ] RDS の Aurora アップグレード
バージョン 2 のサポートが 2024 年 10 月に終了予定。3 へのアップグレードが促されている。 https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.MajorVersionUpgrade.html#AuroraMySQL.upgrade-prechecks
- MySQL8.0系にしないと、12月から月5万円の延長サポート料がかかる計算です
方法1:クラスターごとバージョンアップする
→ 多分成功しますが、数十分-1時間程度のダウンタイムが発生すると思います。失敗した場合7日間取ってるスナップショットから復元作業することになります
→ テスト環境では 30 分程度。
新規バージョンデプロイの済んだあと、9 月の上旬辺りに、方法 1 での実行をする。(日程を決める。)
方法2:スナップショットから新たにMySQL8.0を立てて、差し替える
→ 安全ですが、インポートスクリプト、APIからの接続設定を変えたり、セキュリティグループの再設定などの手間がかかります
ダウンタイムを許容できて、インフォ・ラウンジでうまく検証できて大田さんがCloud Formationを実施できるなら1が良さそうです
慎重にやるなら方法2ですが、DBCLSのAWSコンソールを一緒に操作しながら実施する形となります
- その他
- [x] copy API URL
大量のデータがありテーブルの表示に時間がかかる場合において、テーブルを待たずに copy API URL などのボタンが表示されてほしい。
- [x] copy API CURL の挙動
コピーされるコマンドが POST になるようにする。
- [x] copy API CURL のボタン名
copy CURL にする。(GraphQL Playground に倣う)
- [x] prefix なしの用例が想定されないケースについての対応
例えば MONDO の場合。入力は `MONDO:0000001` または `MONDO_0000001` の形式しか想定していない (dataset.yaml の `regex`)。一方で、出力は prefix なしで `0000001` の形がデフォルトで、プレビューテーブルで適宜 prefix を選択するようになっている。prefix の選択肢は dataset.yaml の `format` にある値で、MONDO の場合 `["MONDO:%s","MONDO_%s"]`。当初は、prefix なしの用例があるデータセットの場合(HGNC など)は `"%s"` をこの配列の値に入れていたが、何か理由があって消して、常に prefix なしがデフォルトになるようにした。経緯を確認したい。
修正案: MONDO の場合は dataset.yaml は現状通り、HGNC の場合は現状の `["HGNC:%s","hgnc:%s"]` を `["%s","HGNC:%s","hgnc:%s"]` に変更して、デフォルトで表示されるのはこの配列の最初の値とし、`"%s"` がこの配列にない場合は prefix なしは表示しない、とする。API は現状通りで、フロントで対応?
→ HGNC の %s を足す(DBCLS)
- [x] (240815 新規) 以下のような変換で、is attached to の UniProt のプレビューを表示すると、一行しか表示されない。この現象は現行版でも発生している。
https://togoid.dbcls.jp.il3c.com/?route=glycomotif%2CTIO_000123%2Cglytoucan%2CTIO_000060%2Cuniprot&ids=G19619KS%2CG03277YI%2CG00037MO%2CG56478LD%2CG00061MO%2CG34881WK%2CG43191LZ%2CG31734OS%2CG98544DH%2CG46677TE%2CG54826OZ

最初の GlycoMotif -> GlyTouCan までのところでプレビューを見ると、入力 ID の一番上の G19619KS からつながっている GlyTouCan ID が 100 個以上存在するため、この段階のプレビューでは 1 列目が全て G19619KS となる。
以降のプレビューにおいては、この最初のプレビューで表示される 100 件に対応する行以外が含まれないらしい。このためここから UniProt への変換のプレビューが期待より少なくなる。
これはプレビューだけの問題であり、ダウンロードされるテーブルは問題ない。ただ、場合によってはプレビューが No Results となってしまう。この場合、テーブルのカラム名のスイッチも表示されないので、ダウンロード結果にラベルを含めることができない。
→ 抜本的な解決には大がかりな改修が必要になり難しい。今回のリリースでは修正を目指さない。
→ 修正できた。
- [x] (240815 新規) `uniprot-pdb` と `pdb-uniprot` のように両側から作っているペアが、UI 上で ERROR になっている。
アルファベット順で後ろになるほう(この場合は `uniprot-pdb`)がエラーになるらしい(pdb から uniprot への変換はできるが逆はできない)。
参照するテーブル名を指定する際に問題が起こっている?
「順方向のテーブルが存在するならばそれを使い、なければ逆向きを使う。」という現行版の仕様に合わせて修正したい。複数種類のリンクがある場合を考慮しても問題なく実現できるか?
## 2024-07-02 14:00-
### 2023 年度開発
#### 2.1.1 同一のデータセットペアに対し複数の関係を記述可能にする
#### 2.1.2 ラベルを ID に変換する機能の追加
- 該当する ID が見つからなかったラベルの表示について
現状では表示されない。
見つからなかったラベルも表示できるようにしたい。Match type は "Unmatched" とする。
EXPLORE モードでのプレビューテーブルの All including unconverted IDs のように、Include unmatched labels のようなのを選択するラジオボタンを作り、切り替えられるようにする。
- Match type が NCBI Gene Symbol の場合の Symbol 列
現在は空欄になっている。重複した情報にはなるが、Symbol で埋めておくようにする。
- レスポンス待ちのとき
PubDictionaries のレスポンスが遅いことがある。EXECUTE ボタンを押して待機中はぐるぐるを表示する。
→ ぐるぐるを表示しようとすると新しい仕組みが必要。EXPLORE モードでのロード待ちと同様、画面上部のプログレスバーを使うことで対応済み。
- threshold
NCBI Gene は threshold の指定がない。このような場合は PubDictionaries への問い合わせ時のパラメータ指定で常に threshold=1 とする。
(予期しないマッチを防ぐため。)
→ 対応済み。
#### show labels
- 表示できるデータセットを取得できるようにする
実際に入っているデータセットのリストを確認する
- Grasp での名前と togoid での名前を揃えて問題ないか調べる(DBCLS)
- rdf-config の仕様上は主語の変数名が小文字始まりなのは受け入れられない。rdf-config はそのままにして、.graphql ファイルを生成してから置換することで対応した。
### バグ
#### 新規
- URL パラメータによる ID 指定機能について
コロンなど、URL 中でパーセントエンコードが必要な記号が入力 ID に含まれているとき、再読み込み時にパーセントエンコードされたまま入力欄に入ってしまう。
→ 対応済み。
- copy API URL
大量のデータがありテーブルの表示に時間がかかる場合において、テーブルを待たずに copy API URL などのボタンが表示されてほしい。
curl の場合コピーされるコマンドが POST になるようにする。
## 2024-06-13 11:00-
### 2023 年度開発
#### 2.1.1 同一のデータセットペアに対し複数の関係を記述可能にする
UI 実装。
uniprot -> glytoucan のような、逆向きのときの API の処理が違っていたので修正する。
#### 2.1.2 ラベルを ID に変換する機能の追加
MONDO は動いていそう。
NCBI Gene は API 側の準備が完全でないため動いてないが、必要な辞書を揃えたら動くかも。DBCLS 側で作業を進める。
### バグ修正
#### count API の数字が実際の行数と異なる問題
テーブルの行数のカウントが当てにならないので、[wc 結果の tsv](https://github.com/togoid/togoid-config/blob/main/log/pair_count.tsv) を参照するように変更した。
#### URL が長すぎるときに 413 や 494 エラーが出る
対策は困難。ウェブアプリではなく、curl から POST を使うよう促す。
curl コマンドをコピーするようなボタンを追加する対応を行う。
### AWS の証明書更新
正確には認証局の更新。コンソールから更新作業を行った。次回は 40 年後。
## 2024-05-30 16:00-
### 循環検索の許可
循環検索できるようにしてみましたが、経路の数がO^2に比例するようになって組み合わせ爆発になりますね。4段でデフォルトのlimit 10000でも返ってくるかどうかギリギリです。
https://api.togoid.dbcls.jp.il3c.com/convert?route=uniprot,pdb,uniprot,pdb&ids=P00720&report=all&limit=10000
→ どこかで爆発して返ってこないのはこのサービスの性質上許容する。次回リリースに含める
### count APIの挙動調整
TIOへの対応に伴い、count APIの実装も調整が必要と気づき、調整を実施した
- (既存仕様) https://api.togoid.dbcls.jp.il3c.com/count/glytoucan-uniprot?ids=G00031MO
- (is attached to) https://api.togoid.dbcls.jp.il3c.com/count/glytoucan-uniprot?ids=G00031MO&link=TIO_000060 (池田さんいわく既存仕様と件数一緒のはず)
- (is processed by) https://api.togoid.dbcls.jp.il3c.com/count/glytoucan-uniprot?ids=G00031MO&link=TIO_000119
### 機能修正
- NAVIGATE モードでも変換過程の数字が出せるか。
複数経路を比較したいことがあるので、比較のための材料となるように、EXPLORE モードと同様の数字が表示されていたほうがよい。
パフォーマンスへの影響はあるか?ゴールの数字は出ているので、途中経路の数字を拾うようにするだけ?

- NAVIGATEモードでは最初と最後をつなぐ変換しかしていないので、途中の変換もAPI呼び出しをしてしまうとかなりのAPIコール数になってしまいそう→一旦見送り
- Results テーブルにおいて、Compact かつ Target IDs のときの挙動
現在、全ての変換結果 ID がスペース区切りで 1 行に表示される。
Source and Target IDs の結果の Target 列と同じものであるほうが自然そう。
- 大量変換時の挙動
山本さんから slack で報告されていた件
→ インフォ・ラウンジに調査
### 2.1.2 ラベルを ID に変換する機能の追加
- [仕様詳細説明](https://docs.google.com/presentation/d/1pR4dtC_LSedLRz_x_3QwAJUFM-FNsyldBcX6g74WLS0/edit?usp=sharing) (再掲)
- 例: https://pubdictionaries.org/find_ids.json?labels=ATP6|ATP8&dictionaries=togoid_ncbigene_symbol&verbose=true&tags=10090
- labels: 入力 ID のパイプ区切りリスト
- dictionaries: dataset.yaml で定義されている辞書名
- tags: 指定された生物種の taxonomy ID
- ncbigene の辞書については、取り急ぎ togoid_ncbigene_symbol だけ作ってある。
- この辞書もまだ一部生物種のみ。9606 (human) と 10090 (mouse) が入っている。
- TODO: 各辞書を追加 (池田)

- 説明文の表示
Threshold は i アイコンを置いておき、クリックすると説明文が出てくるイメージ。
- Species の選択の部分
"If you cannot find a species in the pulldown list, enter the [Taxonomy ID](https://www.ncbi.nlm.nih.gov/taxonomy) in the right text box."
- Threshold
"Threshold can be set to a value between 0.5 and 1. When this is set to 1, only exact matched labels are allowed, while lower values allow for less strict matches."
## 2024-05-09 16:00-
### APIで同一のデータセットペアに対する複数の関係に対応する
- アプリ側も、複数の関係があれば関係性のラベル文字列だけ変えて複数の変換候補を表示するようにする。添付画像赤枠の箇所が2つに増え、関係性のラベルが"is modified with"などに変わるイメージ

- データ更新用のS3に配置するファイル名の構造は
- tsv
├── glytoucan-uniprot-TIO_000060.tsv
├── glytoucan-uniprot-TIO_000119.tsv
└── ncbigene-ensembl_gene.tsv
### バグ
#### 新規
- All including unconverted IDs
- Preview テーブルにおいて、変換先が存在しないかどうかが、Preview の 100 行の中に存在するかどうかで判断されているらしい。
- ダウンロードされるテーブルは大丈夫
- 例: GlyTouCan の example IDs を使って UniProt に変換、All including unconverted IDs を選択した場合。10 個中 6 個は変換先が存在する。Preview の一番上に出てくる 4 個は、正しく変換先がない。Preview の一番下に 3 個の GlyTouCan ID が、変換先がないものとして現れているが、ダウンロードしたテーブルでは変換先が存在している。
- DATASETS タブのページ内リンク
- Color Legend の中から特定のカテゴリのラベルをクリックして絞り込んだ時に表示されるデータセットから LINK TO で示されるリンク先のデータセットをクリックすると、同じカテゴリにあるもの以外は、表示されていないので、何も起きない状態になる
- 対応案
- リンク先のデータセットをクリックした場合は絞り込みを解除する
- EXPLORE や NAVIGATE のタブでデータセットの i ボタンを押したときのようなモーダル表示にする
- ページ内リンクが URL パラメータになっているままなので、リロードすると ID 入力欄に含まれてしまう
- swagger
- not found https://togoid.dbcls.jp/apidoc/
#### 継続 (確認)
- PDB ID の大文字小文字対応 (2024-03-13)
> 小文字を入力した際、数字は出るがテーブルを表示しようとすると no result となり、結果を取得できない。
- DATASETS の LINK TO に表示されている数字が正しくない (2024-01-18, 2024-02-28)
- iPhone/iPad でアクセスするとメニューアイコンが小さくなってしまう問題 (2024-01-18)
- 同じデータセットに戻るような変換について (2024-01-18)
### 2023 年度開発
#### 2.1.1 同一のデータセットペアに対し複数の関係を記述可能にする
- API は実装
- https://github.com/togoid/togoid-api/pull/119
- フロントはまだ
- S3 へのアップロードの仕様の確認
- 現在
- togo-id-production バケットの tsv/ に source-target.tsv の形式でアップロード
- 今後
- 関係が複数存在しないものは今まで通り
- 関係が複数存在するものは glytoucan-uniprot-TIO_000060.tsv のファイル名
- TODO: 実データで試したいので渡す (池田)
#### 2.1.2 ラベルを ID に変換する機能の追加
PubDictionaries の API はバグがあり対応中。来週中を目処
### 2022 年度開発
#### ID に対するアノテーションを返す UI の開発 (ANNOTATE タブ)
GraphQL Endpoint https://rdfportal.org/grasp-togoid
> 別のタブとして他の機能から分けたが、変換結果テーブルにカラムとして追加できたほうが使いやすい?
### その他
- 保守
- 保守だけでの発注は DBCLS 側が難しい。
## 2024-04-12 15:00-
### 2023 年度開発
#### Staging
https://release-staging.dk3uz7vg1c486.amplifyapp.com/
- 2.1.4 DATASETS タブに表示するデータセット説明の記述方法の拡大
OK
- 2.1.5 更新情報の表示
OK
- 2.1.6 URL パラメータによる、ID を入力済みにする仕組み
ids=ID1,ID2 で ID 指定
API と同様に、`route` でルート指定
route がデータセット 1 つだけという場合は API にはなかったが、こちらでは先頭だけ選択された状態になる
- 2.1.7 NAVIGATE モードの変換先データセットの検索性の向上
OK
- バグ対応
- Chrome で %CPU が増える
#### 進行中
- 2.1.1 同一のデータセットペアに対し複数の関係を記述可能にする
- 2.1.2 ラベルを ID に変換する機能の追加
- PubDictionaries の API はあと 2 週間くらいかかるとのこと。
- Species の選択の部分に説明を書いておきたい。
"If you cannot find a species in the pulldown list, enter the [Taxonomy ID](https://www.ncbi.nlm.nih.gov/taxonomy) in the right text box."
- Threshold の説明も考える
- 2.1.3 データセット間関係の詳細説明を表示する機能の追加
### 2024 年度ぶん
#### 保守
盛り込む内容を DBCLS 側で固めて仕様書を作成
TogoID グループに IAM ユーザーを作成し、InfoLounge さんに権限を付与。現状のシステムをそちらに移す。
## 2024-03-28 16:00-
### 2.1.1 同一のデータセットペアに対し複数の関係を記述可能にする
- glytoucan-uniprot-TIO_000060, glytoucan-uniprot-TIO_000119という2つのテーブルにする場合のデメリット
- glytoucan-uniprot-TIO_000060, glytoucan-uniprot-TIO_000119をUNIONしてクエリしたいようなユースケースに対応するのが実装上難易度が高い
- 既存のglytoucan-uniprotテーブルにTIOカラムを足すほうが、上記のニーズに対応できて安心ではないか
- 一方、全てのテーブルにTIOカラムを追加しないとスキーマが揃わない。かつTIOがnot nullになるテーブルはごく一部
- 今回の改修においては、下記3つを併存させたい。
- glytoucan-uniprot
- glytoucan-uniprot-TIO_000060
- glytoucan-uniprot-TIO_000119
```json
[
{
"forward": {
"label": "TIO_000060",
"display_label": "is attached to"
},
"reverse": {
"label": "TIO_000061",
"display_label": "is modified with"
}
},
{
"forward": {
"label": "TIO_000119",
"display_label": "is processed by"
},
"reverse": {
"label": "TIO_000118",
"display_label": "processes"
}
}
]
```
## 2024-03-13 16:00-
### 2.1.1 同一のデータセットペアに対し複数の関係を記述可能にする
下記を元にシミュレーション
https://github.com/togoid/togoid-config/blob/multiple_relations/config/glytoucan-uniprot/config.yaml
- MySQLのテーブルとしては glytoucan-uniprot-TIO_000060, glytoucan-uniprot-TIO_000119の2つのテーブルに分割
- TIO_000061など、reverse用パラメータが指定されたときは、、
- 採用)forwardを指定されたときと同じ挙動とする
- 不採用)エラーにする?
- config.ymlに存在しないパラメータが指定されたときは、、
- エラーにする
- config.ymlにlinkキーが複数あるにもかかわらずTIOパラメータが与えられなかった
- エラーにする
- API利用者が使用できるTIOパラメータを知る方法は?
- /config/relation APIを呼び出してconfigを見てもらう
- <, >パラメータと併用されてしまったら?
- ユースケースとしては考えづらい
- テーブル名の指定としての<, >パラメータ処理→その後TIOパラメータを処理すれば良いので、仕様上の困難はなし
### バグ修正
#### 新規
- 入力窓の X ボタン
Examples を入力したときには表示される X ボタンが、本入力時には表示されない。
- 一度 Examples を入れて X を出した後は出たままになるらしい
- 最初から直接入力窓に手入力やペーストした場合は出ない

- → 開発環境では治っている。
- PDB ID の大文字小文字対応
小文字を入力した際、数字は出るがテーブルを表示しようとすると no result となり、結果を取得できない。

↓

小文字対応をやめてもよいが、技術的に問題なければ変換できるようにしたい。
- [Swagger](https://togoid.dbcls.jp/apidoc/) の Try の URL
- https://api.togoid.dbcls.jp/ ではなく api が抜けて https://togoid.dbcls.jp/ になっていて、エラーになる
## 2024-02-28
### UI バグ修正
- DATASETS の LINK TO に表示されている数字が正しくない
数値は変わっているが、やはり[最新の値](https://github.com/togoid/togoid-config/blob/main/log/pair_count.tsv)と少しズレがある

- Submit ボタンを押した時の挙動が変わっている
開発環境にて済
- Swagger のページが表示されない
済
- iPhone/iPad でアクセスするとメニューアイコンが小さくなってしまう問題(小野)
まだ
### 2023 年度開発
#### 2.1.2 ラベルを ID に変換する機能の追加
TODO: dataset.yaml の label_resolver の確認をする
→ 説明用スライドの内容が正しく、dataset.yaml の内容は古いままだったので、更新した。
### 2022 年度開発
### その他
- 新規
更新頻度や規模の観点から TogoID にはそぐわないデータセットについて、変換の仕組みだけ TogoID のものを利用できないか?という相談を受けた
→ 藤澤さんともう少し議論
## 2024-01-18
### UI 更新後の動作の問題点
- DATASETS の LINK TO に表示されている数字が正しくない
例えば PDB から Gene Ontology への数字が 1000000 になっているが、これは以前修正したので現在は 1685211 あるはず。
他も[最新の値](https://github.com/togoid/togoid-config/blob/main/log/pair_count.tsv)になっていない。
最近追加された ID も変換はできる(例: PRJNA1046695)ので、DB の更新が失敗しているわけではなさそう。古い数値を書き換えられていないのかもしれない。
- Submit ボタンを押した時の挙動が変わっている
ID を入力 → Submit を押す → 入力した ID のデータセットを選択
を一度行った後に、同じデータセットの他の ID を改めて入力窓に入れてから Submit すると、何も出ない状態になっている。
以前は直前の選択が維持されたはず。
- Swagger のページが表示されない
https://togoid.dbcls.jp/apidoc/
- iPhone/iPad でアクセスするとメニューアイコンが小さくなってしまう問題(小野)
- クリックはできて機能はしているのでアイコンの大きさだけ
- こちらは修正できますでしょうか。
- 
### 2023 年度開発
#### 2.1.1 同一のデータセットペアに対し複数の関係を記述可能にする
同じデータセットの組に対して tsv が複数存在しうることになるので、これまでの記法を変える必要がある箇所がある。
config.yaml の変更については前回記述した通り。
- アップロードされる tsv の置き方の変更
- 現在
S3 の togo-id-production バケットの tsv/ ディレクトリに glytoucan-uniprot.tsv のような名前で直接 tsv が置かれており、ファイル名から SQL のテーブル名を決めている
- 今後
- 変更案 1
データセットの組ごとにディレクトリを分け、その中で関係の TIO ごとに tsv ファイルが分けられる。
```
tsv
├── glytoucan-uniprot
│ ├── TIO_000060.tsv
│ └── TIO_000119.tsv
└── ncbigene-ensembl_gene
└── TIO_000001.tsv
```
- 変更案 2
ディレクトリはそのまま、tsv 名に TIO を付記する。
```
tsv
├── glytoucan-uniprot-TIO_000060.tsv
├── glytoucan-uniprot-TIO_000119.tsv
└── ncbigene-ensembl_gene-TIO_000001.tsv
```
- どちらでもよいが、ファイル名があまり長いのは好みでないので特になければ案 1 で
- API の変更
- 現在
`route=ncbigene,ensembl_gene,uniprot` のようにして route を指定する
例: https://api.togoid.dbcls.jp/convert?ids=5460,6657,9314,4609&route=ncbigene,ensembl_gene,uniprot&format=json
route の comma のあとに < とか > とか書くと、両側からペアが作られている場合に向きを指定できる。
- 変更案 1
route パラメータに記述するデータセット名の間に TIO の文字列が入っている場合はパス指定として処理する。
`route=ensembl_gene,uniprot,TIO_000060,glytoucan`
- △: データセット名と TIO ID が同じようにカンマ区切りで並んでいるのが気持ち悪い。
- TIO の前後の記号を別のものにすることで意味的に違うことを明示する?暫定的に '+' を使うことに。
- 2つのデータセットを指定したときに、そのデータセット間に定義されている関係全てを表示する API があるとよい。いちいち config.yaml を見に行くのは面倒なので。どちら向きでペアが作られているかの情報、及びそれぞれでペアがいくつ存在するかの情報も取れるとよい。
- TIO が指定されていない場合は全部取る。
- 変更案 2
link パラメータを新設。route パラメータに書かれたデータセット間の関係をカンマ区切りで羅列する。省略したら全部取る。
`route=ensembl_gene,uniprot,glytoucan&link=TIO_000025,TIO_000060`
(`TIO_000025` は省略可)
- △: どの TIO がどのデータセット間関係に対応しているのかがパッと見でわかりにくい。
- 大半の場合においてペアの関係は 1 通りしかないため、指定しなくてよい場合に面倒にならないようにしたい。
- いずれも、プロパティの向きに関する問題、というか気持ち悪さがある。上記 tsv の置き場所の変更案では、ファイル名かディレクトリ名に forward の TIO を使っており、glytoucan から uniprot の向きが TIO_000060 である。上記の route の例では uniprot から glytoucan への向きで変換しており、意味的には TIO_000061 が正しい。が、TIO_000061 をファイル名やディレクトリ名に使うのは長ったらしいし、これを知るために config.yaml まで見に行くのは面倒。
#### 2.1.2 ラベルを ID に変換する機能の追加
- おさらい
- (遺伝子の場合) 同じ文字列が、複数の生物種で遺伝子の名前(Symbol)として使われていることがある。目的の ID に変換するためには生物種まで指定する必要がある。
- 遺伝子の名前として使われる文字列には、メインに使われる Symbol の他に、認められているシノニムなどがある。
- 疾患名などの場合、名称の表記ゆれにも対応したい。
- ラベルを入力し ID を返す API は DBCLS のサービス PubDictionaries を使用。2 列のテーブルをアップロードして問い合わせできる。表記ゆれを許容して変換できる。
- [仕様詳細説明](https://docs.google.com/presentation/d/1pR4dtC_LSedLRz_x_3QwAJUFM-FNsyldBcX6g74WLS0/edit?usp=sharing)
#### 2.1.3 データセット間関係の詳細説明を表示する機能の追加
- [config.yaml に description 属性を作った](https://github.com/togoid/togoid-config/blob/multiple_relations/config/chembl_compound-chembl_target/config.yaml#L5)。この値がある場合はこれを表示する。
#### 2.1.4 DATASETS タブに表示するデータセット説明の記述方法の拡大
- [dataset.yaml に description 属性を作り](https://github.com/togoid/togoid-config/blob/main/config/dataset.yaml#L9)、その値として文字列でデータセットの説明を書くようにした。これがあるデータセットの場合はその値を参照するように変更。ない場合は今まで通り。
#### 2.1.5 更新情報の表示
- [文例](https://github.com/togoid/togoid-config/blob/main/docs/news.md)
### 2022 年度開発
#### 2.2 ID に対するアノテーションを返す UI の開発 (ANNOTATE タブ)
- GraphQL Endpoint https://rdfportal.org/grasp-togoid
- 状況確認?
- 別のタブとして他の機能から分けたが、変換結果テーブルにカラムとして追加できたほうが使いやすい?
- 追加する方針で。テーブルのデータセット名の横に display label みたいなチェックボックスを置き、オンにするとラベルが出てくる。ダウンロードやコピーは見えているテーブルの状態で。
### その他
- 同じデータセットに戻るような変換について
当初はこういうケースはないだろうということで、UI 上でできなくした。
しかし、glytoucan → uniprot → glytoucan のようにして、入力の糖鎖が付くタンパク質に他に何が付くのか知りたいということがある。
技術的に問題なければ解禁する。
## 2023-11-14
### 保守
AWSをTogoID用に切り出せた◯
AWS移行と保守を来年度頭にお願いする
参考:【AWS】IAM ユーザーに IP 制限 https://tech.kurojica.com/archives/43145/
アプリケーション保守は?
- 更新成否のモニター
- トラブル対応時のヘルプ
- 脆弱性対応のためのモジュール、ライブラリのアップデート
- 定常運用はDBCLS
### AWS 更新フロー動作異常? その後?
原因は不明だが、正常化
### 報告用アクセスログ(aw-stats) が2023年5月からとれてない問題
## 2023-10-27
### 2022 年度分開発
- 昨年度仕様書 https://docs.google.com/document/d/1gsnzoRIzsGJFKShmptgir_F2thqOHu7P/edit
- Annotate 機能(ラベル表示機能)をリリースするために、Grasp サーバーの https 対応が必要
- 現在暫定で動いている http://ep.dbcls.jp/grasp-togoid/ を https 対応させるのではなく、AWS 上で動かして https://togoid.dbcls.jp/grasp/ とかの URL で公開する方針になった。
- が、これを全く進められていないのでなるべく早く対応する必要がある。
- https://rdfportal.org 上で仮に使用できるようにして、テストを進める。
- RDF がないデータセットのラベル表示対応
- togoid-config で ID とラベルだけの turtle を出力する仕組みを作った。可能なものに関してはある程度揃ってきている。
- https://docs.google.com/spreadsheets/d/16I2HJCpDBeoencNmzfW576q73LIciTMZOCrD7PjtXS4/edit?pli=1#gid=1366832518
- もう少し進められるが、ここをネックとは考えなくてよさそう。
- [TODO]Annotateタブ以外の機能を本番環境にmergeしてもらう(インフォラウンジさん)
- DBの確認などが必要
### 2023 年度仕様補足
- [仕様書案](https://docs.google.com/document/d/13kE45FTGZBRfcFOGptQBUjA6soQloPLsngUBNKYSgzc/edit?usp=sharing)
#### 2.1.1 同一のデータセットペアに対し複数の関係を記述可能にする
- togoid-config レポジトリの config/ ディレクトリ以下の構成
config の各ディレクトリ
頻繁に出入りするので、これを glytoucan-TIO_000060-uniprot とかに変えるのは不便
config.yaml に複数の関係を記述するようにするのが一案
```yaml
- link:
forward: TIO_000060
reverse: TIO_000061
file: sample_TIO_000060.tsv
update:
frequency: threeTimesAYear
method: sparql_csv2tsv.sh query1.rq https://ts.glycosmos.org/sparql
- link:
forward: TIO_000160
reverse: TIO_000161
file: sample_TIO_000160.tsv
update:
frequency: threeTimesAYear
method: sparql_csv2tsv.sh query2.rq https://ts.glycosmos.org/sparql
```
- 出力される tsv や ttl の名前
- glytoucan-TIO_000060-uniprot.tsv などにする案
tsv の名前とディレクトリ名が一致しなくなる
長い
- ディレクトリ名で分ける案
`output/tsv/glytoucan-uniprot/TIO_000060/pair.tsv`
- より良い案?
- UI
- glytoucan-uniprot のような例(選択肢が 2 つ)では、従来の UI のまま各ルートがプロパティのラベルで区別されているだけでもよさそう。
- clinvar-medgen のような例(選択肢が 5 ~)も対応するなら、並べると数が増えるので、プロパティラベル部分をプルダウンメニューにしてチェックボックスで選ぶとか
- ui上はpredicateが選択できるようになるもしくは列挙するイメージ
- 列挙すると数が多い場合に膨らむが、パッと見で複数あることがわかりやすいし数の比較もできる
- API
#### 2.1.2 ラベルを ID に変換する機能の追加
- 遺伝子シンボルを ID に変換したいという要望が多いが、以下の理由により既存の仕組みでは対応できない
- 同一の文字列が複数の生物種でシンボルとして使われているため、生物種まで指定しないと目的の遺伝子 ID を一意に決められない
- シンボルは変更されることが多い。古いシンボルもデータベースは保持しているが、ユーザーは手持ちのシンボルのリストのうちどれが古いかわからない
参考: [Multi-symbol checker](https://www.genenames.org/tools/multi-symbol-checker/) (ヒト遺伝子のみだが、現行のシンボル、古いシンボル、その他シノニムとして認めているもの、を一括で検索して変換)
- シンボルのリスト、シンボルとエントリーの関係のリスト(現行のシンボル、シノニム)、生物種、を指定して、対応する ID を取ってくる SPARQList
- http://ep.dbcls.jp/togoid/sparqlist/label2id_ncbigene
- 同様の仕組みで、疾患名->疾患 ID の変換も行いたい。PubDictionaries を使えば表記ゆれにも対応できる。
- 例: https://pubdictionaries.org/find_ids?labels=uterine+cervi&threshold=0.5&verbose=true&dictionaries=UBERON-AE&commit=Submit
- 現状はUBERONが使える。それ以外はDBCLS側で用意する必要あり
dataset.yaml の変更案を考える(池田)
#### 2.1.5 更新情報の表示
- [TODO]デザインを考えるためにサンプルの文章をいくつか用意する(DBCLS)
#### 保守も盛り込むか
AWSをTogoID用に切り出せるか
### AWS 更新フロー動作異常?
通常 8 時間程度で終わっている AWS 上の更新フローが、今回は 4 日経って終わっていない。
直近の更新でテーブルの数は 8 個増えたが、ペア数が極端に増えたわけではないので、何か想定外のことが起きているかも
- インフォラウンジさん側ではAWSにアクセスできない
- 後日、大田さん交えて対応を協議する