Skip to main content

Thales-Remote-Python

Thales-Remote-Python is a Python extension which uses the Zahner Remote2 to control Zahner ZENNIUM Potentiostats.
It was developed to easily integrate Zahner ZENNIUM Potentiostats into Python scripts for more complex measurement tasks and for automation purposes.

The measurement methods Impedance Spectroscopy (EIS), Cyclic Voltammetry (CV), Current–Voltage characteristic (IE),and DC sequences are supported. Also constant current or constant voltage can be output and current and voltage can be measured. Single frequency impedance measurement is also possible. Other supported functions are the remote control of the BC-MUX and the import of ism files in Python.

📚 Documentation

The complete documentation of the individual functions can be found on the API documentation website.

🔧 Installation

The package can be installed via pip.

pip install thales_remote

⚠️ Since v1.1.1 works only with Thales ≥ 5.8.6. For previous versions of Thales Software, please download an older version of the package.

For example: pip install thales_remote==1.0.1

The class BCMuxInterface to control the BC-MUX is located in the Python file BCMuxInterface.py, from this file the class can be imported.

🔬 Measurement Data Analysis

There is a separate Python package on GitHub and PyPI/pip for analyzing measurement data.

In this repository there are examples of how to fit equivalent electrical circuit models to electrochemical impedance spectra, also known as EIS equivalent circuit fitting. The model parameters can be further processed after the fit with Python, for example for the comparison of serial measurements.

🔨 Basic Usage

The Jupyter notebook BasicIntroduction.ipynb explains the fundamentals of using the library.

"""
Connect to the Zahner Zennium Potentiostat
"""
zenniumConnection = ThalesRemoteConnection()
zenniumConnection.connectToTerm("localhost", "ScriptRemote")
zahnerZennium = ThalesRemoteScriptWrapper(zenniumConnection)
zahnerZennium.forceThalesIntoRemoteScript()

"""
Read the measured voltage and current.
"""
print("Potential: " + str(zahnerZennium.getPotential()))
print("Current: " + str(zahnerZennium.getCurrent()))


"""
Single frequency impedance measurement at 1 V DC and 2 kHz
with 10mV amplitude for 3 periods.
"""
zahnerZennium.setPotentiostatMode(PotentiostatMode.POTMODE_POTENTIOSTATIC)
zahnerZennium.setPotential(1)

zahnerZennium.enablePotentiostat()
    
zahnerZennium.setFrequency(2000)
zahnerZennium.setAmplitude(10e-3)
zahnerZennium.setNumberOfPeriods(3)

zahnerZennium.getImpedance()

zahnerZennium.disablePotentiostat()
zenniumConnection.disconnectFromTerm()

📖 Examples

There is at least one example for each possible electrochemical method that can be controlled remotely.

BasicIntroduction.ipynb is the most basic introduction, which describes the connection setup in detail. For each example there is a Jupyter notebook which explains the example code in detail. For the user there is a Python script for each example which contains the pure Python code so that Jupyter does not need to be installed.

In the examples only one method is explained and parameterized at a time for better comprehension. But the methods can also be combined flexibly in a Python script, for example a CV measurement followed by an EIS measurement.

BasicIntroduction.ipynb

  • Basic introduction to remote control
  • Switch potentiostat on or off
  • Setting potentiostat potentiostatic or galvanostatic
  • Setting output potential or current
  • Read potential and current
  • Single frequency impedance measurement

EISImportPlot.ipynb

  • Measurement of an impedance spectrum - EIS
  • Importing the measurement results from the ism file into Python
  • Plotting the spectrum in bode and nyquist representation with the matplotlib library

EISPad4.ipynb

  • Measurement of an impedance spectrum on a stack with single cells connected to the PAD4 card
  • DC measurement using PAD4 as ACQ channel
  • Single frequency impedance measurement with PAD4 channels

DynamicDCSequenceEIS.ipynb

  • Zahner DC Sequencer measurement
  • Sequencer file generation with Jinja2 template engine
  • Measurements at different current strengths or current densities
  • EIS measurement

FileExchangeEIS.ipynb

  • Measurement of an impedance spectrum - EIS
  • Importing the measurement results from the ism file into Python
  • Acquiring the measurement files with Python via network

EIS.ipynb

  • Setting output file naming for impedance spectras
  • Parametrizing an impedance spectrum
  • Measurement with an external potentiostat (EPC-Device)

CyclicVoltammetry.ipynb

  • Measure cylic voltammetry measurement
  • Setting output file naming for CV measurements
  • Parametrizing an CV measurement
  • Importing the measurement results from the isc file into Python
  • Acquiring the measurement files with Python via network

CVImportPlot.ipynb

  • Measure cylic voltammetry measurement
  • Setting output file naming for CV measurements
  • Parametrizing an CV measurement
  • Importing the measurement results from the isc file into Python
  • Acquiring the measurement files with Python via network

CurrentVoltageCurve.ipynb

  • Setting output file naming for IE measurements
  • Parametrizing an IE measurement
  • Importing the measurement results from the iss file into Python

DCSequencer.ipynb

EISCVLaTeX.ipynb

  • Measure impedance specta and cyclic voltammetry
  • Plotting the measurement data.
  • Create a PDF with the measurement data using LaTeX

EISvsParameter.ipynb

  • Setting output file naming for impedance spectra
  • Measure impedance spectra with different DC parameters
  • Importing the measurement results from the ism file into Python
  • Display impedance and phase in contourplots with the matplotlib library

ExternalDeviceFRA.ipynb

  • Configure FRA Probe measurement
  • Measure EIS with FRA Probe

LoadWithExternalSource.ipynb

ImpedanceMultiCellCycle.ipynb

  • Multichannel operation with several external potentiostats, of the latest generation, type PP2x2, XPOT2 or EL1002
  • Shared Zennium series device for impedance measurements
  • Operation of the power potentiostats standalone without thales with the Python package zahner_potentiostat

ImpedanceRampHotSwap.ipynb

  • Switch between Thales/EPC and SCPI/standalone operation of the external potentiostats (PP2x2, XPOT2 or EL1002) without switching off the potentiostat
  • Shared Zennium series device for impedance measurements
  • Operation of the power potentiostats standalone without thales with the Python package zahner_potentiostat

LabVIEW.ipynb

BCMuxInterface.ipynb

  • Remote control of the BC-MUX
  • Class which realizes the remote control

📧 Having a question?

Send a mail to our support team.

⁉️ Found a bug or missing a specific feature?

Feel free to create a new issue with an appropriate title and description in the Thales-Remote-Python repository issue tracker. Or send a mail to our support team.
If you have already found a solution to your issue or feature, we would be happy to review your pull request!

✅ Requirements

Programming is done with the latest Python version at the time of commit.

For the thales_remote package only the Python standard library was used. If measurement data are imported and plotted, the package zahner_analysis is used.

For standalone communication without Thales with the PP2x2, XPOT2 or EL1002 devices the zahner_potentiostat package is used.

The packages matplotlib, SciPy and NumPy are used in some examples to display the measurement data graphically. Jupyter is not necessary, since each example is also available as a Python file.

Metadata

Release files for thales-remote 1.2.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for thales-remote 1.2.8
File Size Uploaded Provenance Actions
thales_remote-1.2.8.tar.gz 2.7 MB Without provenance Details for thales_remote-1.2.8.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for thales-remote 1.2.8
File Interpreter ABI Platform Actions
thales_remote-1.2.8-py3-none-any.whl Python 3 none any Details for thales_remote-1.2.8-py3-none-any.whl

Total release size: 2.7 MB

Release files / thales_remote-1.2.8.tar.gz

Download URL thales_remote-1.2.8.tar.gz
Size 2.7 MB
Tags Source
SHA-256 checksum
How to use checksums
db6fd2ecc69cfad79e881dc8e2a34e5d73cc56aa4885dcbbb25be67415b4dfa1
BLAKE2b-256 checksum
How to use checksums
48978a481be5a294384b2684b74504af117d612207091c33103519b2e7fcb5e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / thales_remote-1.2.8-py3-none-any.whl

Download URL thales_remote-1.2.8-py3-none-any.whl
Size 35.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f65af0c61cfd2f962ef846b0383bf2106c729671cd2c6d540d2e085e14fb24fa
BLAKE2b-256 checksum
How to use checksums
8a07330e1a767fae99fea20390479c814cf600b6b3443d62a37e86d071c369ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for thales-remote 1.2.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page