glycoinfo / GlycanBuilder2

7 stars 5 forks source link

SNFG with linkage placement notation #41

Open e15d5605 opened 2 years ago

e15d5605 commented 2 years ago

GlycanBuilder2にはCFG with linkage placement notationという表示モードが実装されている\ このモードは単糖シンボルと結合情報の表記をCFG、単糖の結合位置をUOXFに準拠した複合表記方である\ 現在はCFGシンボルだけに対応しており、SNFGでは同様の表示モードを扱うことができないため追加を検討する

e15d5605 commented 2 years ago

作業方針

GlycanBuilder2の表示形式を管理するGraphicOptionsでは、上記の表示形式をcfglinkというパラメータで扱っていることからsnfglinkというパラメータを追加する

結合情報のラインを描画する際にLinkageStyleというクラスから結合情報の詳細情報を参照する\ ここではユーザーが選択した表示形式に応じた結合位置の情報を辞書形式で管理している\ 対応している結合位置の辞書情報は以下の通りである

Style Dictionary
CFG linkage_styles_cfg
CFG with linkage placement notation linkage_styles_cfglink
SNFG linkage_styles_snfg
UOXF linkage_styles_uoxf

linkage_styles_cfglinkは以下のように記載されている

%regex      dashed  shape   info [0-never, 1-always, 2-when known, 3-when unknown]
!cs     0   line    000
1       0   line    023

cfglinkに倣いlinkage_styles_snfglinkというファイルを追加することで実装可能と考えられる\ UIの変更に関してはViewタブのNotationの選択項目にSNFG with linkage placement notationを追加する必要がある\ Viewタブの項目はCanvasActionのcreateViewActionで以下のように定義しているため、こちらに新しく項目を追加する

a_oActionManager.add("notation=" + GraphicOptions.NOTATION_CFG, themeManager.getResizableIcon("CFG_color", defaultMenuIconSize), "CFG notation", KeyEvent.VK_C, "", a_oListener);
a_oActionManager.add("notation=" + GraphicOptions.NOTATION_CFGBW, themeManager.getResizableIcon("CFG_greyscale", defaultMenuIconSize), "CFG black and white notation", KeyEvent.VK_B, "", a_oListener);
a_oActionManager.add("notation=" + GraphicOptions.NOTATION_CFGLINK, themeManager.getResizableIcon("CFG_linkage", defaultMenuIconSize), "CFG with linkage placement notation", KeyEvent.VK_L, "", a_oListener);
a_oActionManager.add("notation=" + GraphicOptions.NOTATION_UOXF, themeManager.getResizableIcon("uoxf", defaultMenuIconSize), "UOXF notation", KeyEvent.VK_O, "", a_oListener);
a_oActionManager.add("notation=" + GraphicOptions.NOTATION_UOXFCOL, themeManager.getResizableIcon("uoxfcol", defaultMenuIconSize), "UOXFCOL notation", KeyEvent.VK_O, "", a_oListener);
a_oActionManager.add("notation=" + GraphicOptions.NOTATION_TEXT, themeManager.getResizableIcon("text", defaultMenuIconSize), "Text only notation", KeyEvent.VK_T, "", a_oListener);
a_oActionManager.add("notation=" + GraphicOptions.NOTATION_SNFG, themeManager.getResizableIcon("", defaultMenuIconSize), "SNFG notation", KeyEvent.VK_S, "", a_oListener);

DictionaryConfigurationとBuilderWorkspaceの更新も必要