Releases: PalmSens/palmsens-sdk
Release list
PyPalmSens 1.10.1
PyPalmSens 1.10.1 is now available on PyPi.
To upgrade: pip install pypalmsens -U.
This release fixes a crash in 1.10 when importing PyPalmSens.
What's changed
- Add templates to MANIFEST.in (#403)
Full Changelog: python-1.10...python-1.10.1
PyPalmSens 1.10.0
Important
This version missed package data so that it fails to import. This has been fixed in 1.10.1.
PyPalmSens 1.10 is now available on PyPi.
To upgrade: pip install pypalmsens -U.
For more information, see the documentation
Support Python 3.14
This release of PyPalmSens supports Python 3.14, thanks to the release of pythonnet 3.1.0.
Add experimental energy submodule
We added 3 new methods for energy and battery research:
- ps.energy.experimental_BatteryCycling (CC-CV-CC)
- ps.energy.experimental_ConstantPower (Discharge at constant power)
- ps.energy.experimental_ConstantResistance (Discharge at constant resistance)
These classes are implemented in MethodSCRIPT. This is a new way of adding methods to PyPalmSens that we are experimenting with.
Therefore these classes are experimental (hence the experimental_ prefix). This means we're still working on them and trying to understand how to best incorporate them in the code.
That means these classes may change in the future. If you use these methods, we welcome any feedback and suggestions before making them a permanent part of PyPalmSens.
See the documentation for more information.
Add streaming data
With this release, PyPalmSens can auto-save all data directly to a file. This is helpful for:
- Streaming data to other processes
- Data recovery
- Tracking Long-running measurements
To make use of this feature, pass a file name to the measure function:
import pypalmsens as ps
ps.measure(ps.CyclicVoltammetry(), stream='data.jsonl')See the documentation for more information
This required a big refactor of the callback system. We intend to expand this feature in a future release.
Nexus support on Mac and Linux
PyPalmSens 1.8.0 added support for Nexus over TCP/IP using the from_ip method, but for Windows only. This release extends support for Mac and Linux.
What's changed
- Add support for cell on (#371)
- Raise Attribute error for module
__getattr__(#377) - Add method to serialize method parameters (#378)
- Add literal scan/frequency types (#380)
- Add support for Python 3.14 (#381)
- Add experimental BatteryCycling technique (#379)
- Update types and type checking (#383)
- Add linux support for connecting over TCP\IP (#388)
- Fix double newlines in serialize to
.psmethod(#389) - Update Python version in test workfrow to 3.14 (#390)
- Add streaming data for live measurements (#386)
- Add missing fields for the GEIS technique (#393)
- Add ConstantPower and ConstantResistance methods (#394)
Full Changelog: python-1.9.0...python-1.10
PyPalmSens 1.9.0
PyPalmSens python-1.9.0 is now available on PyPi.
To upgrade: pip install pypalmsens -U.
For more information, see the documentation.
Corrosion methods
This release adds support for corrosion methods to PyPalmSens. This is mostly a compatibilitey update, so that corrosion data can be read into PyPalmSens. Functionally these methods are exactly the same as the corresponding regular classes. See the documentation for more information.
pypalmsens.corrosion.CorrosionPotentialpypalmsens.corrosion.CyclicPolarizationpypalmsens.corrosion.Galvanostaticpypalmsens.corrosion.LinearPolarizationpypalmsens.corrosion.Potentiostaticpypalmsens.corrosion.ElectrochemicalImpedanceSpectroscopy
Capabilities
You can now retrieve instrument capabilities using InstrumentManager.capabilities.
This provides information on device features, firmware versions, supported current and potential ranges, and other information.
>>> import pypalmsens as ps
>>> with ps.connect() as manager:
... capabilities = manager.capabilities
>>> capabilities
Capabilities(device_type='EmStat4LR', firmware_version=1.5, ...)Estimated duration
Get the estimated measurement duration using InstrumentManager.get_estimated_duration():
>>> import pypalmsens as ps
>>> method = ps.CyclicVoltammetry()
>>> with ps.connect() as manager:
... print(manager.get_estimated_duration(method))
2.099Mixed Mode API changes
This release makes a few changes to the API for Mixed Mode.
pypalmsens.mixed_mode.MixedModeis available from the root level (pypalmsens.MixedMode) for consistency with other techniques. Stages are available frompypalmsens.stages.
import pypalmsens as ps
# old
ps.mixed_mode.MixedMode(stages=[ps.mixed_mode.ConstantE()])
# new
ps.MixedMode(stages=[ps.stages.ConstantE()])See https://dev.palmsens.com/python/latest/_attachments/reference/methods/mixed_mode/
The old paths now emit DeprecationWarnings. They will be removed in a later version.
What's changed
- Add wrappers for corrosion methods (#341)
- Move
get_estimated_durationto instrument manager (#342) - Add support for capabilities (#346)
- Use EILevel for MSP methods (#351)
- Min sampling time must be greater than 0 for Impedance (#354)
- Add
__getitem__and__contains__magic methods to pool (#355) - Move converters and types to root module (#356)
- Update user API (types and mixed mode) (#357)
- Update mixed mode method listing in documentation (#360)
- Add
status()method forIntrumentPool(#361)
Full Changelog: python-1.8.1...python-1.9.0
PyPalmSens 1.8.1
PyPalmSens 1.8.1 is now available on PyPi.
To upgrade: pip install pypalmsens -U.
This is a small bugfix release.
What's Changed
- Add retry function to
pool.connect()by @stefsmeets in #334 - Fix
DataSet.to_dict()crash for datasets with no current by @stefsmeets in #338
PyPalmSens 1.8.0
PyPalmSens 1.8.0 is now available on PyPi.
To upgrade: pip install pypalmsens -U.
This is a relatively small release that adds support for the PalmSens Nexus. This release also updates the PalmSens dotnet libraries to 5.13.011, which brings a bunch of small fixes and improvements.
Nexus support
If you are using a Nexus, you can now connect to it via TCP/IP:
>>> import pypalmsens as ps
>>> instrument = ps.Instrument.from_ip('192.168.1.123')
>>> instrument
Instrument(name='192.168.1.123', interface='tcp')
>>> with ps.connect(instrument) as manager:
... print(manager.get_instrument_serial())
NEXUS24C0029For more information, see the documentation.
What's Changed
- Update PalmSens.Core libraries to 5.13.011 by @stefsmeets in #281
- Fix rare crash when deleting Zone.Identifier by @stefsmeets in #309
- Add generic structure/unstructure using type adapter by @stefsmeets in #303
- Add seperate dependencies for assemblies by @stefsmeets in #308
- Add Nexus support by @stefsmeets in #328
Full Changelog: python-1.7.1...python-1.8.0
PyPalmSens 1.7.1
PyPalmSens 1.7.1 is now available on PyPi.
To upgrade: pip install pypalmsens -U.
This is a small release that adds a way to connect to a serial port directly, see the docs for more information.
import pypalmsens as ps
instrument = ps.Instrument.from_port('COM4')
ps.measure(ps.CyclicVoltammetry(), instrument=instrument)What's Changed
- Add AllowedMethods literal string by @stefsmeets in #291
- Refactor and add method to connect to comport by @stefsmeets in #298
Full Changelog: python-1.7.0...python-1.7.1
PyPalmSens 1.7.0
PyPalmSens 1.7.0 is now available on PyPi.
To upgrade: pip install pypalmsens -U.
Current and potential readings
This release revises how to access current reading and potential reading data (#279).
It exposes the data in the concrete values in the underlying DataArray by adding 2 new derived classes derived from ps.data.DataArray:
These arrays have methods to get the current / potential reading data directly, e.g. for current readings:
current = measurement.dataset['Current']
current.current()
current.current_range()
current.current_in_range()
current.timing_status()
current.reading_status()
current.current_readings()
current.to_dict()And for potential readings:
potential = measurement.dataset['Potential']
potential.potential()
potential.potential_range()
potential.potential_in_range()
potential.timing_status()
potential.reading_status()
potential.potential_reading()
potential.to_dict()See the documentation for more information.
Supported methods and current ranges
New methods on InstrumentManager(Async) to get the supported methods and current ranges (#279). See the docs for more information.
>>> import pypalmsens as ps
>>> manager = ps.connect()
>>> manager.supported_methods()
['lsv', 'dpv', 'swv', ..., 'mm', 'ms', 'pot']
>>> manager.supported_current_ranges()
['100nA', '1uA', '10uA', '100uA', '1mA', '10mA', '100mA']
>>> manager.supported_potential_ranges()
['50mV', '100mV', '200mV', '500mV', '1V']
>>> manager.supported_applied_current_ranges()
['1uA', '100uA', '10mA', '100mA']
>>> manager.supported_bipot_ranges()
[]Multichannel improvements
If you have a multichannel instrument, this release has 2 important changes.
- We added support for hardware sync with MethodScript (#283). PyPalmSens will now recognize if you have set
set_channel_sync 1in your script, and set up the main/follower channels. - More callbacks!
InstrumentPool.measure()/InstrumentPoolAsync.measure()now supports passing a list of callbacks, so you can call a different function for every channel (#271). See this link for an example.
What's Changed
- Add supported methods/ranges to instrument manager by @stefsmeets in #265
- Add methods to read/write methodscript file by @stefsmeets in #266
- Fix mistake in circuit fitting docs by @stefsmeets in #275
- Fix lost datapoints in CalbackData.new_datapoints()` by @stefsmeets in #278
- Revise access to CurrentReading/PotentialReading data by @stefsmeets in #279
- Refactor ArrayType -> Literal and remove accessors from Dataset by @stefsmeets in #280
- Add support for hardware sync with MethodScript by @stefsmeets in #283
- Specify callback per channel in instrument pool by @stefsmeets in #271
Full Changelog: python-1.6.1...python-1.7.0
PyPalmSens 1.6.1
PyPalmSens 1.6.1 is now available on PyPi.
To upgrade: pip install pypalmsens -U.
This is a patch release that adds support for setting measurement triggers for Mixed Mode measurements.
The API for setting measurement triggers for stages is the same as for methods:
import pypalmsens as ps
method = ps.mixed_mode.MixedMode(
stages = [{
'stage_type': 'ConstantE',
'measurement_triggers': {'d0': True, 'd1': True}
}]
)What's Changed
- Support digital triggers in MixedMode by @stefsmeets in #259
Full Changelog: python1.6.0...python-1.6.1
PalmSens LabView SDK 1.1.1
This release of the labview SDK fixes a regression in 1.1.0 that prevented PalmSens.Core.Simplified.LabVIEW assembly to work with 64 bit installations of LabView.
This release updates the DLL to version 5.12.1624 and supports both (32 bit and 64 bit) versions of LabView again.
What's Changed
- #254 Updated LabVIEW SDK to dll that supports both x86/x64 LabVIEW versions by @ThierryPalmSens in #257
Full Changelog: labview-1.1.0...labview-1.1.1
PalmSens LabView SDK 1.1.0
With this LabVIEW SDK you can control your PalmSens instrument directly from LabVIEW.
This release updates the PalmSens.Core DLL to 5.12.1624 (32 bit) and fixes issues with Mux and GEIS support.
For more information, see the documentation.
What's Changed
- Add Geis support in labview and update DLL to 5.12.1624 by @ThierryPalmSens in #224
- Add labview mux example by @stefsmeets in #181
Full Changelog: labview-1.0.0...labview-1.1.0