The getting started with cellpy tutorial (opinionated version)

This tutorial will help you getting started with cellpy and tries to give you a step-by-step recipe. The information in this tutorial can also (most likely) be found elsewhere. For the novice users, jump directly to chapter 1.2.

How to install cellpy - the minimalistic explanation

If you know what you are doing, and only need the most basic features of cellpy, you should be able to get things up and running by issuing a simple

pip install cellpy

It is recommended that you use a Python environment (or conda environment) and give it a easy to remember name e.g. cellpy.

You also need the typical scientific python pack, including numpy, scipy, and pandas. It is recommended that you at least install scipy before you install cellpy (the main benefit being that you can use conda so that you don’t have to hassle with missing C-compilers if you are on an Windows machine).

Install a couple of other dependencies

You should also install some additional dependencies:

pytables is needed for working with the hdf5 files (the cellpy-files):

conda install -c conda-forge pytables

If you would like to use some of the fitting routines in cellpy, you will need to install lmfit:

conda install -c conda-forge lmfit

Another tool that is really handy is Jupyter. And the plotting library bundle holoviz. You might already have them installed. If not, I recommend that you look at their documentation (google it) and install them. You can most likely use the same method as for pytables etc.

Note! In addition to the requirements set in the setup.py file, you will also need a Python ODBC bridge for loading .res-files from Arbin testers. And possible also other ‘too-be-implemented’ file formats. I recommend pyodbc that can be installed from conda forge or using pip.

conda install -c conda-forge pyodbc

For reading .res-files (which actually are in a Microsoft Access format) you also need a driver or similar to help your ODBC bridge accessing it. A small hint for Windows users: if you don’t have one of the most recent Office version, you might not be allowed to install a driver of different bit than your office version is using (the installers can be found here). Also remark that the driver needs to be of the same bit as your Python (so, if you are using 32 bit Python, you will need the 32 bit driver).

For POSIX systems, I have not found any suitable drivers. Instead, cellpy will try to use mdbtoolsto first export the data to temporary csv-files, and then import from those csv-file (using the pandas library). You can install mdbtools using your systems preferred package manager (e.g. apt-get install mdbtools).

The tea spoon explanation

If you are used to installing stuff from the command line (or shell), then things might very well run smoothly. However, a considerable percentage of us don’t feel exceedingly comfortable installing things by writing commands inside a small black window. Let’s face it; we belong to the point-and-click (or double-click) generation, not the write-cryptic-commands generation. So, hopefully without insulting the savvy, here is a “tea-spoon explanation”

Install a scientific stack of python 3.x

If the words “virtual environment” or “miniconda” don’t ring any bells, you should install the Anaconda scientific Python distribution. Go to www.anaconda.com and select the Anaconda distribution (press the Download Now button). And no, don´t select python 2.7. Use at least python 3.6. And select the 64 bit version (if you fail at installing the 64 bit version, then you can try the weaker 32 bit version). Download it and let it install.

Create a virtual environment

This step can be omitted (but its not necessary very smart to do so). Create a virtual conda environment called my_cellpy (the name is not important, but it should be a name you are able to remember).

Open up a command window (you can find a command window on Windows by e.g pressing the Windows button + r and typing cmd.exe), or even better, open up “anaconda prompt”. Then type

conda create -n my_cellpy

Then activate your environment:

conda activate my_cellpy

If you get an error message, then it could be that your Python version is not available for you (maybe you installed as root?). If you were using the command window on windows, try to locate the “anaconda prompt” program and run that instead.

Install cellpy

conda install -c conda-forge cellpy

Note that the bin version matters some times, so try to make a mental note of what you selected (for example, if you plan to use the Microsoft Access odbc driver, and it is 32-bit, you probably should chose to install an 32-bit python version (see next sub-chapter)).

If you don’t have the newest office suit, you might need to install the Microsoft Access odbc driver which can be downloaded from this page

Check your installation

The easiest way to check if cellpy has been installed, is to issue the command for printing the version number to the screen

cellpy info --version

If the program prints the expected version number, you probably succeeded. If it crashes, then you will have to retrace your steps, redo stuff and hope for the best. If it prints an older (lower) version number than you expect, it is a big chance that you have installed it earlier, and what you would like to do is to do an upgrade instead of an install

pip install --upgrade cellpy

It could also be that you want to install a pre-release (a version that is so bleeding edge that it ends with a alpha or beta release identification, e.g. ends with .b2). Then you will need to add the –pre modifier

pip install --pre cellpy

To run a more complete check of your installation, there exist a cellpy sub-command than can be helpful

cellpy info --check

The cellpy command to your rescue

To help installing and controlling your cellpy installation, a CLI is provided with four main commands, including info for getting information about your installation, and setup for helping you to set up your installation and writing a configuration file.

To get more information, you can issue

cellpy --help

This will out-put some (hopefully) helpful text

Usage: cellpy [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  edit   Edit your cellpy config file.
  info   This will give you some valuable information about your cellpy.
  new    Set up a batch experiment.
  pull   Download examples or tests from the big internet.
  run    Run a cellpy process.
  serve  Start a Jupyter server
  setup  This will help you to setup cellpy.

You can get information about the sub-commands by issuing –-help after them also. For example, issuing

cellpy info --help

gives

Usage: cellpy info [OPTIONS]

Options:
  -v, --version    Print version information.
  -l, --configloc  Print full path to the config file.
  -p, --params     Dump all parameters to screen.
  -c, --check      Do a sanity check to see if things works as they should.
  --help           Show this message and exit.

Using the cellpy command for your first time setup

After you have installed cellpy it is highly recommended that you create an appropriate configuration file and create folders for raw data, cellpy-files, logs, databases and output data (and inform cellpy about it)

cellpy setup -i

The -i option makes sure that the setup is done interactively. The program will ask you about where specific folders are, e.g. where you would like to put your outputs and where your cell data files are located. If the folders don’t exist, cellpy will try to create them.

If you want to specify a root folder different from the default (your HOME folder), you can use the -d option e.g. cellpy setup -i -d /Users/kingkong/cellpydir

Hint

If you don’t choose the -i option and goes for accepting all the defaults, you can always edit your configurations directly in the cellpy configuration file (that should be located inside your home directory, /~ in posix and c:usersNAME in not-too-old windows).

When you have answered all your questions, a configuration file will be made and saved to your home directory. You can always issue cellpy info -l to find out where your configuration file is located (it’s written in YAML format and it should be relatively easy to edit it in a text editor)

Running your first script

As with most software, you are encouraged to play a little with it. I hope there are some useful stuff in the code repository (for example in the examples folder).

Hint

The cellpy pull command can assist in downloading both examples and tests.

Let’s start by a trying to import cellpy in an interactive Python session. If you have an icon to press to start up the Python in interactive mode, do that (it could also be for example an ipython console or a Jupyter Notebook). You can also start an interactive Python session if you are in your terminal window of command window by just writing python and pressing enter.

Once inside Python, try issuing import cellpy. Hopefully you should not see any error-messages.

Python 3.9.9 | packaged by conda-forge | (main, Dec 20 2021, 02:36:06)
[MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cellpy
>>>

Nothing bad happened this time. If you got an error message, try to interpret it and check if you have skipped any steps in this tutorial. Maybe you are missing the box package? if so, go out of the Python interpreter if you started it in your command window, or open another command window and write

pip install python-box

and try again.

Now let’s try to be a bit more ambitious. Start up python again if you not still running it and try this:

>>> from cellpy import prmreader
>>> prmreader.info()

The prmreader.info() command should print out information about your cellpy settings. For example where you selected to look for your input raw files (prms.Paths.rawdatadir).

Try scrolling to find your own prms.Paths.rawdatadir. Does it look right? These settings can be changed by either re-running the cellpy setup -i command (not in Python, but in the command window / terminal window). You probably need to use the --reset flag this time since it is not your first time running it).

What next?

For example: If you want to use the highly popular (?) cellpy.utils.batch utility, you need to make (or copy from a friend) the “database” (an excel-file with appropriate headers in the first row) and make sure that all the paths are set up correctly in you cellpy configuration file.

Or, for example: If you would like to do some interactive plotting of your data, try to install holoviz and use Jupyter Lab to make some fancy plots and dash-boards.

And why not: make a script that goes through all your thousands of measured cells, extracts the life-time (e.g. number of cycles until the capacity has dropped below 80% of the average of the three first cycles), and plot this versus time the cell was put. And maybe color the data-points based on who was doing the experiment?