Closed e15d5605 closed 2 years ago
MassOptionで選択された情報は以下の流れでGlycan
へ反映される
GlycanCanvas.java@onMassOptionsStructures
public boolean onMassOptionsStructures(Collection<Glycan> structures) {
// open dialog
MassOptionsStructureDialog mdlg = new MassOptionsStructureDialog(
theParent, structures, theWorkspace.getDefaultMassOptions());
mdlg.pack();
mdlg.setVisible(true);
if (mdlg.getReturnStatus().equals("OK")) {
// set mass options for selected structures
theDoc.setMassOptions(structures, mdlg.getMassOptions());
// set default mass options
theWorkspace.getDefaultMassOptions().setValues(mdlg.getMassOptions());
// update view
this.respondToDocumentChange = true;
repaint();
return true;
}
return false;
}
GlycanDocument.java@setMassOption
public boolean setMassOptions(Collection<Glycan> structures,
MassOptions common_options) {
// set options for all structures
boolean changed = false;
for (Glycan structure : structures)
changed = changed | structure.setMassOptions(common_options);
if (changed) {
fireDocumentChanged();
}
return changed;
}
Glycan.java@setMassOptions
public boolean setMassOptions(Collection<Glycan> structures,
MassOptions common_options) {
// set options for all structures
boolean changed = false;
for (Glycan structure : structures)
changed = changed | structure.setMassOptions(common_options);
if (changed) {
fireDocumentChanged();
}
return changed;
}
Glycan.java@setReducingEndType
public boolean setReducingEndType(ResidueType new_type) {
Residue redend = getRoot();
if( redend!=null && redend.isReducingEnd() && !redend.isCleavage() && !redend.getTypeName().equals(new_type.getName()) ) {
redend.setType(new_type);
if(redend.getTypeName().equals("redEnd") || redend.getTypeName().equals("d")) {
redend.getChildAt(0).setAnomericState('?');
}
if(redend.getTypeName().equals("redEnd"))
redend.getChildAt(0).setAlditol(true);
return true;
}
return false;
}
setReducingEndType
でreducing endに応じてルートノードの構成を変更しているが、redEnd
以外の情報が選択された際にsetAlditol
の条件を変更していない\
これによりreducing endのシンボルが非表示のままになっていると考えられる
元々の処理を維持しつつredEnd
が選択された際の処理を変更する
public boolean setReducingEndType(ResidueType new_type) {
Residue redend = getRoot();
if( redend!=null && redend.isReducingEnd() && !redend.isCleavage() && !redend.getTypeName().equals(new_type.getName()) ) {
redend.setType(new_type);
//20211215, S.TSUCHIYA add
if (redend.getTypeName().equals("redEnd")) {
redend.getChildAt(0).setAlditol(true);
redend.getChildAt(0).setAnomericState('?');
redend.getChildAt(0).setRingSize('o');
}
if (redend.getTypeName().equals("d")) {
redend.getChildAt(0).setAnomericState('?');
}
if (!redend.getTypeName().equals("redEnd")) {
redend.getChildAt(0).setAlditol(false);
if (redend.getChildAt(0).getRingSize() == 'o') {
redend.getChildAt(0).setRingSize(redend.getChildAt(0).getType().getRingSize());
}
}
return true;
}
return false;
}
選択されたReducing endがredEnd
の場合はルートノードをアルジトールをtrue、アノマー情報を?
、リングサイズをo
に変更する
if (redend.getTypeName().equals("redEnd")) {
redend.getChildAt(0).setAlditol(true);
redend.getChildAt(0).setAnomericState('?');
redend.getChildAt(0).setRingSize('o');
}
選択されたReducing endがd
の場合はルートノードのアノマー情報を?
に変更する
if (redend.getTypeName().equals("d")) {
redend.getChildAt(0).setAnomericState('?');
}
選択されたReducing endがredEnd
以外だった場合はルートノードのアルジトールをfalseに変更する\
また、ルートノードが開環の場合はその単糖のデフォルトのリングサイズを割り当てる
if (!redend.getTypeName().equals("redEnd")) {
redend.getChildAt(0).setAlditol(false);
if (redend.getChildAt(0).getRingSize() == 'o') {
redend.getChildAt(0).setRingSize(redend.getChildAt(0).getType().getRingSize());
}
}
また、冒頭の条件式が冗長なので以下のように変更する
if( redend!=null && redend.isReducingEnd() && !redend.isCleavage() && !redend.getTypeName().equals(new_type.getName()) ) {
...
}
return false;
* 変更後
if (redend == null) return false; if (!redend.isReducingEnd()) return false; if (redend.isCleavage()) return false; if (redend.getTypeName().equals(new_type.getName())) return false;
freeEnd
の糖鎖構造をMass OptionsでredEnd
に変更し、その後別のreducing endに変更してどのように表示されるのかを確認した
freeEnd
redEnd
を選択した際にルートノードが開環構造に変更され、他のreducing endを選択するとそれが表示され、ルートノードは閉環構造に変更されていた\
開環構造のreducing endから閉環構造のreducing endに変更するとアノマー情報が?
になってしまうが、 任意のタイミングで変更が可能なので問題はないと思われる
20211216, ブランチにプッシュ済
Select a glycan (freeEnd)
Open the "Mass options of selected structures" menu
Select "redEnd"
Display a glycan having "redEnd"
Select "freeEnd"
"freeEnd" is not displayed