Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [chemclipse-dev] Help: display chromatogram during acquisition

Trig,

I'll have a look at it.

Could you send me a test *.tms file which fails to be displayed.

Best,
Philip


Am 01.09.2016 2:34 nachm. schrieb Trig Chen <trigchen@xxxxxxxxx>:
The MSD and MSDWriter:
org.eclipse.chemclipse.msd.model.implementation.ChromatogramMSD.ChromatogramMSD
org.eclipse.chemclipse.msd.converter.supplier.chemclipse.io.ChromatogramWriterMSD

Yes. I've gotten reply from Jan. He creates a new View Part org.chromulan.system.control.ui.chromatogram.ChromatogramViewer to show the new scan of chromatogram. In ChromatogramViewer, class org.chromulan.system.control.ui.chromatogram.ChromatogramOverviewUI does the graphical work.
When acquisition done, open the ChromatogramEditorCSD manually. He also recorded a video to show the steps:  http://leteckaposta.cz/131205367
It is helpful although  it is not the exact way I want. 
I'm still struggling on it. 


Best regards,

Trig

2016-09-01 19:18 GMT+08:00 Philip Wenig <philip.wenig@openchrom.net>:
Which "ChromatogramWriterMSD" do you use?
Did you get a feedback from Jan (the CHROMuLAN developer) already?


Best,
Philip


Am 01.09.2016 um 09:34 schrieb Trig Chen:
Sorry for codes missing.

final File file = new File("C:\\Temp\\blank.ocb");
final IChromatogramMSD msd = new ChromatogramMSD();
final ChromatogramWriterMSD writer = new ChromatogramWriterMSD();
try {
writer.writeChromatogram(file, msd, new NullProgressMonitor());
} catch(final Exception e2) {
// TODO: handle exception
}


Best regards,

Trig

2016-09-01 15:00 GMT+08:00 Trig Chen <trigchen@gmail.com>:
I used the following code to generate a blank ChromatogramMSD file, and then opened it in OpenChrom. The Editor part just displayed problem information but not an empty and blank chromatogram figure.

In my data acquisition case, I press the acquisition button and new a blank ChromatogramMSD object. If I immediately open a new ChromatogramMSD Editor with this chromatogram object held, what will hapen? If I update this object with one scan adding, what wil happen to the Editor?


Best regards,

Trig

2016-08-31 22:16 GMT+08:00 Trig Chen <trigchen@gmail.com>:
In Editor Area, the left part is create by pressing "Start Acquire" button in control pane, the right part is created by opening the file acquired and saved to disk. 
There were many "Given range is invalid" errors printed in Console View:
java.lang.IllegalArgumentException: Given range is invalid
at org.swtchart.internal.axis.Axis.setRange(Axis.java:190)
at org.swtchart.internal.axis.Axis.setRange(Axis.java:156)
at org.eclipse.chemclipse.swt.ui.support.ChartUtil.checkAndSetRange(ChartUtil.java:92)
at org.eclipse.chemclipse.msd.swt.ui.components.AbstractBarSeriesUI.redraw(AbstractBarSeriesUI.java:292)
at org.eclipse.chemclipse.thirdpartylibraries.swtchart.ext.InteractiveChartExtended.handleEvent(InteractiveChartExtended.java:83)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

It seems the problem of no acquired chromatogram displayed is caused by the "Given range is invalid" errors.

When I double clicked on the figure of right part, the chromatogram displayed as a red rectangle. 
Even I right clicked on the figure and select "Reset 1:1", the rectangle stayed with no change. :(. 
There were no more error printed as I right clicked or double clicked.


Best regards,

Trig

2016-08-31 21:40 GMT+08:00 Trig Chen <trigchen@gmail.com>:
Following is my open/create EditorMSD code:

=====================================================================
final TideMSChromatogram tideMSChromatogram = new TideMSChromatogram();
tideMSChromatogram.setFile(saveFile);
final ZipBufferWriter writer = new ZipBufferWriter(saveFile);
// ****
openMSDEditor(tideMSChromatogram); 
//***
for(int i = 0; i < usbDevice.getSpectraNumber(); i++) {
usbDevice.acquireMassSpectrum(tideMSChromatogram, writer, i);
}
writer.writeOverviewFolder(tideMSChromatogram);

=====================================================================
private void openMSDEditor(final IChromatogram chromatogram) {

new UIJob("Open MSD Editor") {

@Override
public IStatus runInUIThread(final IProgressMonitor monitor) {

MPart editor = findMSDEditor(chromatogram);
if(editor == null) {
editor = createMSDEditor(chromatogram);
} else {
editor.setObject(chromatogram);
partService.showPart(editor, PartState.ACTIVATE);
}
return Status.OK_STATUS;
}
}.schedule();
}

=====================================================================
private MPart findMSDEditor(final IChromatogram chromatogram) {

final Iterator<MPart> it = partService.getParts().iterator();
while(it.hasNext()) {
final MPart part = it.next();
if(ChromatogramEditorMSD.CONTRIBUTION_URI.equals(part.getContributionURI())) {
final Object obj = part.getObject();
if(obj instanceof IChromatogram) {
final File file1 = ((IChromatogram)obj).getFile();
final File file2 = chromatogram.getFile();
if((file1 != null) && (file2 != null) && file1.getAbsolutePath().equals(file2.getAbsolutePath())) {
return part;
}
}
}
}
return null;
}

=====================================================================

Best regards,

Trig

2016-08-31 21:34 GMT+08:00 Trig Chen <trigchen@gmail.com>:

2016-08-31 14:53 GMT+08:00 Philip Wenig <philip.wenig@openchrom.net>:
When recording the chromatogram, you could use your chromatogram object to display the data and fire the updates, see how the chromatogram editor is created. It requires a file or an IChromatogramMSD instance:

org.eclipse.chemclipse.ux.extension.msd.ui.editors.ChromatogramEditorMSD

    private void loadChromatogram() {

        try {
            /*
             * Import the chromatogram without showing it on the gui. The GUI
             * will take care itself of this action.
             */
            Object object = part.getObject();
            if(object instanceof String) {
                /*
                 * Try to load the chromatogram from file.
                 */
                File file = new File((String)object);
                importChromatogram(file);
            } else if(object instanceof IChromatogramMSD) {
                IChromatogramMSD chromatogram = (IChromatogramMSD)object;
                chromatogramSelection = new ChromatogramSelectionMSD(chromatogram);
It seems the chromatogramSelection field is very important and should not be absent.
 I created an EditorMSD and set it's object to chromatogram. But I don't know how to create a chromatogramSelection for the EditorMSD. There is not a setter method to set chromatogramSelection. :(.

                chromatogramFile = null;  
Why set chromatogramFile to null?
 
            }
        } catch(Exception e) {
            logger.warn(e);
        }
    }

Have a look at the convenient class that helps to open a chromatogram from file or from instance:

org.eclipse.chemclipse.ux.extension.msd.ui.support.ChromatogramEditorSupport

public void openEditor(IChromatogram chromatogram, EModelService modelService, MApplication application, EPartService partService) {
...

Please also check, that the retention time (in milliseconds) is set in each scan of your chromatogram.


Best,
Philip









_______________________________________________
chemclipse-dev mailing list
chemclipse-dev@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/chemclipse-dev

-- 
~~~~~~~~~~~~~~~~~~~~~~~~
OpenChrom - the open source alternative for chromatography / mass spectrometry
Dr. Philip Wenig » Founder » philip.wenig@openchrom.net » http://www.openchrom.net
~~~~~~~~~~~~~~~~~~~~~~~~

_______________________________________________
chemclipse-dev mailing list
chemclipse-dev@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/chemclipse-dev




Back to the top