Giter Club home page Giter Club logo

openchrom's Introduction

OpenChrom® Analytics Edition

OpenChrom® is an Open Source tool for the analysis and visualization of mass spectrometric and chromatographic data developed by Lablicate GmbH.

It is based on ChemClipse but offers additional features that cannot be part of the ChemClipse project due to licencing constrains. This is the free base version provided to the community. It does not contain vendor specific file format converters nor commercial extensions.


Please see our Code of Conduct for rules on how to interact on this site.

If you would like to contribute to this project, please have a look at the guideline.

For user- and developer documentation, have a look at our wiki.

Builds for Windows, macOS and Linux can be downloaded including proprietary converter bundles.


YourKit Logo

Performance measurements provided by the YourKit Java Profiler

openchrom's People

Contributors

alexstark4 avatar egonw avatar eselmeister avatar holyjan3 avatar kerner1000 avatar laeubi avatar lorenzgerber avatar mailaender avatar walterhw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

openchrom's Issues

Parse large NetCDF files

Problems could occur when trying to parse large CDF files > 1 GB. The current implementation shall be optimized to parse the data in forced nominal modus.

Signals Extractor - crash on empty MSD scans

The ion signals extractor crashes, when the extracted chromatogram range contains empty scans. Empty scans means, that no m/z value is stored, e.g. when the detector is turned to off.

A filter is available "Remove Empty Scans". This should be used in case one assumes that empty scans are contained.

Anyways, the signal extractor shall be fixed.

Adding reference chromatograms in the Chromatogram Editor

Selecting a reference chromatogram is done by its filename.
The resulting entries in the drop down menu in the Chromatogram Editor are showing the data name. This is a bit confusing.

Interestingly, the data name is not present in OpenChrom anywhere else as far I can see.
Looking in the header data by toggling the overview mode shows the Data Name in raw files from Chemstation files, but not in .odb files.
Also the date (of measurement) is the date of creating the file in .odb header data.

Identifier NIST-DB issue

Everything appears to run OK connecting with the NIST DB as I have highlighted peaks in my peak list and run the identifier command. I get a message with a green status bar that it may take a few minutes. No errors are thrown. However the targets view doesn't get populated with any compound ids.

Also it looks like some .HLM files are generated in the NIST directory when I run the program.

image

image

image

I'm using OpenChrom Community Edition OpenChrom Community Edition (Dalton) 1.3.0.201808081331

And NIST version 2.3

Any ideas what I am missing?

Chromatogram Export "Template Chromatogram Report" loses peak entries

It is a very nice feature to combine peaks with the same name or CAS.

But this does not seems to be for peaks with close retention times only.
It also combines peaks with the same name, retention time difference of more than 4 minutes and with other peaks in between.
This leads to loosing peaks, since all peaks with sooner retention time are not present in the exported list.

Profile PDF Report

A profile PDF report to list the substances and Area% values shall be added.

Template Peak Detector - Defaults are empty

The template peak detector is broken under Linux currently. The service is null:

` public static Collection<TemplatePeakDetector<?>> getDetectors() {

	ProcessorFactory service = serviceTracker.getService();
	if(service != null) {
		return service.getProcessors(ProcessorFactory.genericClass(TemplatePeakDetector.class), (always, ever) -> true);
	}
	return Collections.emptyList();
}`

Some errors occur on the comand line:

`!ENTRY org.apache.felix.scr 4 0 2020-02-10 14:16:40.931
!MESSAGE Circular reference detected trying to get service {org.eclipse.chemclipse.processing.ProcessorFactory}={service.id=218, service.bundleid=422, service.scope=bundle, component.name=org.eclipse.chemclipse.processing.internal.OSGiFilterFactory, component.id=171}
stack of references: ServiceReference: {org.eclipse.chemclipse.processing.ProcessorFactory}={service.id=218, service.bundleid=422, service.scope=bundle, component.name=org.eclipse.chemclipse.processing.internal.OSGiFilterFactory, component.id=171}
ServiceReference: {org.eclipse.chemclipse.msd.model.detector.TemplatePeakDetector, org.eclipse.chemclipse.processing.detector.Detector, org.eclipse.chemclipse.processing.Processor}={service.id=71, service.bundleid=177, service.scope=bundle, component.name=net.openchrom.xxd.process.supplier.templates.detector.DefaultTemplatePeakDetector, component.id=22}

!STACK 0
java.lang.Exception: stack trace
at org.apache.felix.scr.impl.ComponentRegistry.enterCreate(ComponentRegistry.java:467)
at org.apache.felix.scr.impl.BundleComponentActivator.enterCreate(BundleComponentActivator.java:809)
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:806)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111)
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:524)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461)
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624)
at org.osgi.util.tracker.ServiceTracker.addingService(ServiceTracker.java:416)
at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:943)
at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:321)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:264)
at net.openchrom.xxd.process.supplier.templates.Activator.start(Activator.java:43)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:779)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:772)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:729)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1002)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:354)
at org.eclipse.osgi.container.Module.doStart(Module.java:581)
at org.eclipse.osgi.container.Module.start(Module.java:449)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:468)
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:114)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:505)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:328)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:392)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:470)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:419)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:411)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:609)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.initDependencyManagers(AbstractComponentManager.java:992)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1019)
at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:860)
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:824)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111)
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:524)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461)
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624)
at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:72)
at org.apache.felix.scr.impl.inject.BindMethod.getServiceObject(BindMethod.java:651)
at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2206)
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.prebind(DependencyManager.java:403)
at org.apache.felix.scr.impl.manager.DependencyManager.prebind(DependencyManager.java:1520)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1022)
at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:860)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:755)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430)
at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657)
at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341)
at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:387)
at org.apache.felix.scr.impl.Activator.access$200(Activator.java:52)
at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:262)
at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196)
at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169)
at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:139)
at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:49)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:230)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:137)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:129)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:191)
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
at org.eclipse.osgi.container.Module.start(Module.java:467)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1682)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1661)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1624)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1555)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)`

Upgrade to new EJML version

A new EJML version with package version 0.38.x is available we should check if we can upgrade the NMR module to use this version as it includes some bugfixes and improvements.

@alexstark4 please have a look at this @lorenzgerber might can help with question regarding changed class/package names.

Template Report

Create a template report. The template defines, which peaks shall be reported.

Peak Filter "Peak classifier" - feature request

Feature request for options to

  • classify peaks only if they donot have a classifier yet
  • override existing classifiers
  • classify peaks only if they have a name

Since in the current version .* leads to the behaviour of the latter request, these are all minor issues.

Targets View remains incomplete

After peak identification via NIST14, entries in the Targets View does not contain the Mol Weight which would be usefull with respect to the parent ion.

Also in some cases the CAS number is 0-00-0.
I guess this leads to no creation of SMILES code and therefore no molecule structure is shown.
Examples are:

  • Heneicosyl trifluoroacetate
  • E-15-Heptadecenal
  • Oxime-, methoxy-phenyl-_

Missing requirement: CDK Support 1.4.0.201909170105

I tried to export the OpenChrom .product file and I get:

 Cannot complete the install because one or more required items could not be found.
 Software being installed: OpenChrom Analytics Edition (Lawrence) 1.4.0.201910161021 (net.openchrom.rcp.compilation.community.product.id 1.4.0.201910161021)
 Missing requirement: CDK Support 1.4.0.201909170105 (net.openchrom.chromatogram.msd.identifier.supplier.cdk.feature.feature.group 1.4.0.201909170105) requires 'net.openchrom.thirdpartylibraries.cdk.feature.feature.group 0.0.0' but it could not be found
 Cannot satisfy dependency:
 Cannot satisfy dependency:

DNA Sequence Annotations

Put the DNA one letter code above the peak including quality metrics. Should be possible with the greatly enhanced SWT Chart library from the Eclipse Advanced Visualization Project.

Zoom in Comparison Scan mode cuts off masses

Zooming into m/z specta in the Comparison Scan Mode window may lead to loss of single mass bars.
It occures when the zoom does not include the maximum value of the mass bar. Then, the m/z value does not exist in the zoomed view anymore.

Molecule View and large molecules

Large molecule structures are cut-off.

Eicosane

Maximising the window loads to total crash of the Molecule View. No structures are printed until restart of the software.

Trying to get openchrom to run in eclipse

Hello, I have been trying to get openchrom running in Eclipse by following your DEV guidelines with no success. Latest issue I have is that it "Unable to locate installable unit net.openchrom.rcp.compilation.community.converter.feature.feature.group 0.0.0".
I'm really looking for the code that opens and converts an Agilent Data.Ms file - can you point me in right direction please.
Tx.

ProcessMethod: Data type selection

The three ticks for selection of data types are shuffling sometimes.
grafik
grafik

It also would be nice if the last selection e.g. (MSD) could be remembert for the session.

ProcessMethods: save as does not work

It is not possible to save a copy via "Save as" of process methods.
By clicking nothing happens.

The only way is to rename the process method in the file explorer.
Afterwards OpenChrom asks for a new saving location.

MoleculeView: wrong structures

There still seems to be some errors in plotting the molecule structures.

This is chemically unlikely:
grafik

This is wrong:
grafik

Maybe this is liked to #9

Views are not restored from last session

Views, like the Molecule View, have to be activated every time starting the software.
Saveing properties like order and width of columns in tables would be smooth, too.

Peak Detektor Templates should support an optional comment

currently one can supply start/stop and traces, bu especially with the UI- Part is would be very useful to have an optional "comment" that a user can provide and that is displayed, so it is easier to identify the peak that is currently reviewed

Results from new interactive subtract option for ms spectra

I do not get sufficient results by subtracting ms spectra. I'm going to show you with some screen shots, maybe it is just me...

This is what the advanced MCR-AR detector finds (but with no good matches):
grafik

This is what the first derivative detector finds:
grafik

Now, trying to subtract a background spectra just from the beginning of the peak.
grafik

selecting the spectra for subtraction:
grafik

And the result is:
grafik

It seems to me that the relevant m/z are subtracted rather than the background. Of cause, the peak identifier does not show up matches.

Just for comparison with Chemstation the same peak looks like this:
grafik

Selecting the background for subtraction:
grafik

And subtractiting the spectra leads to this with a quite good match:
grafik

What am I doing wrong or how can be subtract result be improved in OpenChrom?

Template Peakdetector constructs invalid Peaks

Applying the TPD to a file I see a lots of the following messages in the log:
WARN ModalContext support.PeakSupport.extractPeakByScanRange (PeakSupport.java:111) org.eclipse.chemclipse.model.exceptions.PeakException: There must be at least one intensity value stored with a relative intensity of IPeakIntensityValues.MAX_INTENSITY.

Comparison Scan Modus Window blocks right click in tables

If the Window for the comparison scan modus is activated it is refreshed every time when clicking in the peak list table or the targets table.
In case of right click in these tables the context menu disappears due to refreshing the comparison scan modus window.
Therefore, the context menu of right clicks are not available.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.