Version 3.0.23 |
This topic contains the following sections:
Version 3.0.23 introduces a considerable amount of breaking changes to the RelaxIS SDK.
The changes aim at modernizing and streamlining the plugin interfaces, thus reducing barriers of entry for writing plugins are other SDK functions. We chose to implement breaking changes for the lesser used plugin types instead of duplicating new versions of the classes as duplicates to avoid future confusion about which classes to use. However, to improve backwards compatibility some plugin types were reimplemented with a -2 suffix. In these cases, old plugins will continue to function, but it is recommended to use the new types in the future.
Classes that need manual updating:
Caution |
---|
If a plugin assembly contains one or more of the above types, the whole assembly will not be loadable by RelaxIS and none of the contained plugins will be available until the implementations have been updated! |
Classes that received new base classes but will continue to function:
RelaxISPlugin_DataManipulation2
Caution: The legacy RelaxISPlugin_DataManipulation plugin type does not support individually active datapoints! Please review the linked article.
Important |
---|
If a plugin uses RelaxIS WCF Link features (e.g. via RelaxISWCFInterface) these call need to be updated! Please refer to: Updating WCF Link functions |
This section contains notes about changes to the interface that affect multiple functions, such as the rework of the ImpedanceSpectrum class, and it also contains notes on how to update each of the plugin types to port them to the new interface.
The aim is to help you adjust existing plugins quickly and easily to match the new plugin types.
This help file includes detailed description for each plugin type and the WCF Link functions that needs updating. In case a plugin type is not shown here, any changes to it are backwards compatible and the plugin should still load as before. Please refer to the links at the bottom of this document to jump directly to the specific topic after reading the general instructions in this topic.
In various APIs some properties, mainly collections, have been changed to being read-only. In these cases, instead of setting the property value to a new object, add items directly to the collection or change the properties of the sub-type. All such properties are automatically initialized to default values and will not be null.
Classes no longer contain properties with "bare" list or array types. Instead, dedicated Collection classes are used. These often contain specialized functions for dealing with common tasks related to the collection. For example, the EISDatapointCollection contains function for selecting a specific part of the data or simplified methods to add objects.
Likewise, some function APIs were changed to use these dedicated collections. However, in some cases the original API has been retained for compatibility.
Prior versions of the SDK contained multiple ImpedanceSpectrum classes that inherited from one another and added functionality for various use cases.
The new version of the SDK contains only the ImpedanceSpectrum class, which is used by all functions that need to use an impedance spectrum. The new class contains various properties that bundle relevant properties for e.g. analysis or data import to improve clarity. The changes in detail are listed below.
The ImpedanceSpectrum contains a new GUID property. This property is used as a unique identifier of a spectrum and usually doesn't need to be set manually. It is used by RelaxIS for example when executing RelaxISPlugin_DataManipulation2 plugins to syncronize the outgoing and incoming list of spectra. There is no need to manually manipulate the value of this property.
The Data property replaces the previous individual lists of frequencies, real and imaginary parts. The EISDatapoint now have the new flag Active, that determines whether the point is active or not. This replaces the previous method of using an upper and lower frequency limit to specify active and inactive data.
This allows the user to deactivate intermediate points in the spectra, e.g. due to noise without fully deleting them.
To construct and add a point to the list, various overloads are available as seen below. Note the additional parameter Active on the EISDatapoint objects, that determines whether a point is active or not.
var spectrum = new ImpedanceSpectrum(); spectrum.Data.Add(new EISDatapoint(1000, 123, 324)); spectrum.Data.Add(new EISDatapoint(new EISValue(750, 312, 512), false)); spectrum.Data.Add(512, 75, 128, true); var activePoints = spectrum.Data.GetPart(EISDataPart.Active);
All data regarding analysis properties have been moved to the AnalysisInfo class, accessible via the Analysis property.
That contains the model string, fit parameter list and other fit-related properties found in RelaxIS.
Fitparameter objects now store their limits in a dedicated Limits object instead of distinct properties.
var spectrum = new ImpedanceSpectrum(); spectrum.Analysis.Model = "R-(R)(C)"; spectrum.Analysis.Fitparameters.Add(new Fitparameter("R_el", false, 150, 0, 0.1, 1E5)); spectrum.Analysis.Fitparameters.Add(new Fitparameter("R_ct", false, 650, 0, 0.1, 1E5)); spectrum.Analysis.Fitparameters.Add(new Fitparameter("C_dl", false, 2E-6, 0, 1E-10, 1E-1)); spectrum.Analysis.IsFitUpToDate = false;
The properties of the dedicated FileFormat spectrum were removed from the ImpedanceSpectrum class and transferred to the EISRawData class. This is further described in the details for the breaking changes to the RelaxISPlugin_FileFormat class, found here.