glycoinfo / GlycanBuilder2

7 stars 5 forks source link

Same repetition counts is not select in the "Residue properties" . #48

Open e15d5605 opened 2 years ago

e15d5605 commented 2 years ago

GlycanBuilder2で繰り返し構造の繰り返し回数を設定する際に、以下のような条件を選択することができない。

image

選択した際にエラーメッセージなどが出力されることはないが、以下のように設定される。

image

SNFGで繰り返し回数が固定されている場合の条件は記載されていないのだが、少なくともGlycanBuilder2の現状の対応は適切ではないと言えるため対応を考える。

e15d5605 commented 2 years ago

検討事項

  1. SNFGに準拠した繰り返し構造の結合回数の表記法への移行
  2. 繰り返し回数のMinとMaxに同じ値を入力した際の表記方法

画像とは違うが繰り返し構造の回数が固定されているWURCSは、正規化の過程で繰り返し構造が展開された状態に置き換えられる。\ GlycanBuilder2では扱うことができない情報としてエラーを表示する?または、繰り返し構造ではなく展開された状態の糖鎖構造として置き換えるか?\

e15d5605 commented 2 years ago

この状態の繰り返し構造からWURCSの出力を試みた際にエラーが返されていた。GlycanからWURCSGraphへの変換過程で正しく構造を定義することができていないと考えられる。

image image
org.glycoinfo.WURCSFramework.util.exchange.WURCSExchangeException: Repeat linkage must have two edges.
    at org.glycoinfo.application.glycanbuilder.util.exchange.exporter.GlycanToWURCSGraph.start(GlycanToWURCSGraph.java:106)
    at org.glycoinfo.application.glycanbuilder.converterWURCS2.WURCS2Parser.writeGlycan(WURCS2Parser.java:26)
    at org.eurocarbdb.application.glycanbuilder.GlycanDocument.toString(GlycanDocument.java:1482)
    at org.eurocarbdb.application.glycanbuilder.GlycanDocument.toString(GlycanDocument.java:1461)
    at org.eurocarbdb.application.glycanbuilder.GlycanDocument.exportFromStructure(GlycanDocument.java:1296)
    at org.eurocarbdb.application.glycanbuilder.GlycanCanvas.onGetStringFromStructure(GlycanCanvas.java:3636)
    at org.eurocarbdb.application.glycanbuilder.GlycanCanvas.actionPerformed(GlycanCanvas.java:4177)
    at org.eurocarbdb.application.glycanbuilder.GlycanAction.actionPerformed(GlycanAction.java:229)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
    at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6636)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
    at java.desktop/java.awt.Component.processEvent(Component.java:6401)
    at java.desktop/java.awt.Container.processEvent(Container.java:2263)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

また、繰り返し構造のm/zは???となっているのだが、この状態だと1325.6196となっている。m/zが明確なことから6糖のManとして扱われていると判断し、確認のためにMan6の糖鎖構造を描画したがm/zは1293.6297となっていた。以上のことから、m/zの計算でも構造情報を正しく扱うことができてない疑いがある。

image

繰り返し構造のMinとMaxはEdgeに組み込まれているだけなので、m/zの計算処理に問題があると思われる。

もし、この問題を修正する場合... GlycanToWURCSGraphの繰り返し構造の変換処理とm/zの計算処理を確認する必要があるか。