Open e15d5605 opened 2 years ago
AbstractGlycanRenderer
に繰り返し構造のサブグラフを描画するpaintBracket
という関数が実装されている。その中で結合情報のラインを描画するために以下の処理を行なっているが、Compositionやコア側の結合情報を持たないルートノードの結合を描画しないという条件に該当している。
if (!_glycan.isComposition() && !link.getChildResidue().getParentsOfFragment().isEmpty()) {
theLinkageRenderer.paintEdge(paintable, link, selected, node_bbox, node_bbox, child_bbox, child_border_bbox);
}
WURCSから糖鎖フラグメントを読み込む処理では、コア側の結合が見られない場合に全てのコアの単糖と結合するよう補正を行なっていたが、それ以外の形式では補正が行われないため後者の条件に当てはまってしまったと考えられる。また、後者の処理はisComposition
を実装していなかった頃の名残だったと記憶しているため、糖鎖フラグメントを扱う上では必要な判定ではないように感じられる。Compositon_with/without_linkageの描画なども合わせて、継ぎ足しで開発を行なっていたため整理が必要である。
また、試しに後者の!link.getChildResidue().getParentsOfFragment().isEmpty()
をコメントアウトした状態で以下のGWSを入力すると結合ラインが描画されていることを確認した。
freeEnd--?a1D-Glc,p--4a1D-Glc,p}--4a1D-Gal,p$MONO,perMe,Na,0,freeEnd
糖鎖フラグメントとCompositionの結合情報を描画する際に、条件を明確に分けることが適切と考えられる。
Compositionでない場合は結合情報のラインを描画する。
if (!_glycan.isComposition()) {
theLinkageRenderer.paintEdge(paintable, link, selected, node_bbox, node_bbox, child_bbox, child_border_bbox);
}
Compositionで結合情報を持つ(with_linkage)の構造の結合ラインを描画する。
if (_glycan.isComposition() && !link.getChildResidue().getParentsOfFragment().isEmpty()) {
theLinkageRenderer.paintEdge(paintable, link, selected, node_bbox, node_bbox, child_bbox, child_border_bbox);
}
以下のGWSを入力
Linkageのラインは
LinkageRender
で描画しているため、そこでルートノードを確認する際の処理に問題があると考えられる。\ TODO: LinkageRenderの調査を行い、問題点を追記する