Setup and configuration#

To get the most out of cellpy it is to best to set it up properly.

To help with this, you can use the setup command. If you include the -i option, the setup will be done interactively, and you will be prompted for your preferred location for the different folders and directories cellpy uses:

cellpy setup -i

This creates the cellpy configuration file .cellpy_prms_USERNAME.conf in your home directory (USERNAME = your user name), or update it if it exists, and try to create the following directory structure:

batchfiles/
cellpyfiles/
db/
examples/
instruments/
logs/
notebooks/
out/
raw/
templates/

It also creates a .env_cellpy file (most likely in the same directory as the configuration file, depending on if you have a configuration from before and how your system behaves). You need to edit this file to be able to utilize “automatic” loading of files through ssh connections.

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

You can always edit your configurations directly in the cellpy configuration file .cellpy_prms_USER.conf. This file should be located inside your home directory, /. in posix and c:usersUSERNAME in not-too-old windows.

To check, where your configuration file is actually located, you can run:

cellpy info --configloc
[cellpy] -> C:\Users\jepe\.cellpy_prms_jepe.conf

To get the filepath to your config file AND other cellpy info, run:

cellpy info -l

Note

It is recommended to re-run setup each time you update cellpy.

The configuration file#

The paths to raw data, the cellpy database file, file locations etc. are set in the .cellpy_prms_USER.conf file that is located in your home directory. cellpy tries to read this .conf file when imported the first time, and looks in your user directory after files named .cellpy_prms_SOMENAME.conf. (If you have run cellpy setup, the configuration file will be placed in the appropriate place with the appropriate filename.)

The configuration file is a YAML-file and it is reasonably easy to read and edit in a text editor (remember that YAML is rather strict with regards to spaces and indentations).

Within the config file, the paths are the most important parts that need to be set up correctly. This tells cellpy where to find (and save) different files, such as the database file and raw data.

Furthermore, the config file contains details about the database-file (see below _Cellpy_Database_File) to be used for cell info and metadata (i.e. type and structure of the database file such as column headers etc.).

Configuration file - example#

As an example, here are the first lines from one of the authors’ configuration file:

---
Paths:
    outdatadir: C:\scripts\cellpy_data\out
    rawdatadir: I:\Org\MPT-BAT-LAB\Arbin-data
    cellpydatadir: C:\scripts\cellpy_data\cellpyfiles
    db_path: C:\scripts\cellpy_data\db
    filelogdir: C:\scripts\cellpy_data\logs
    examplesdir: C:\scripts\cellpy_data\examples
    notebookdir: C:\scripts\cellpy_data\notebooks
    templatedir: C:\scripting\cellpy_data\templates
    batchfiledir: C:\scripts\cellpy_data\batchfiles
    instrumentfiledir: C:\scripts\cellpy_data\instruments
    db_filename: cellpy_db.xlsx
    env_file: .env_cellpy


FileNames:
    file_name_format: YYYYMMDD_[NAME]EEE_CC_TT_RR
    raw_extension: res
    reg_exp:
    sub_folders:
    file_list_location:
    file_list_type:
    file_list_name:
    cellpy_file_extension: h5

The first part contains definitions of the different paths, files and file-patterns that cellpy will use. This is the place where you most likely will have to do some edits sometime.

The next part contains definitions required when using a database:

# settings related to the db used in the batch routine
Db:
    db_type: simple_excel_reader
    db_table_name: db_table
    db_header_row: 0
    db_unit_row: 1
    db_data_start_row: 2
    db_search_start_row: 2
    db_search_end_row: -1

# definitions of headers for the simple_excel_reader
DbCols:
    id:
    - id
    - int
    exists:
    - exists
    - bol
    batch:
    - batch
    - str
    sub_batch_01:
    - b01
    - str
    .
    .

This part is rather long (since it needs to define the column names used in the db excel sheet).

The next part contains settings regarding your cell/dataset and the cellreader, as well as for the different instruments. At the bottom you will find the settings for the batch utility.

# settings related to your cell
CellInfo:
    voltage_lim_low: 0.0
    voltage_lim_high: 1.0
    active_electrode_area: 1.0
    active_electrode_thickness: 1.0
    electrolyte_volume: 1.0
    electrolyte_type: standard
    active_electrode_type: standard
    counter_electrode_type: standard
    reference_electrode_type: standard
    experiment_type: cycling
    cell_type: standard
    separator_type: standard
    active_electrode_current_collector: standard
    reference_electrode_current_collector: standard
    comment:

# settings related to the reader
Reader:
    Reader:
        diagnostics: false
        filestatuschecker: size
        force_step_table_creation: true
        force_all: false
        sep: ;
        cycle_mode: anode
        sorted_data: true
        select_minimal: false
        limit_loaded_cycles:
        ensure_step_table: false
        ensure_summary_table: false
        voltage_interpolation_step: 0.01
        time_interpolation_step: 10.0
        capacity_interpolation_step: 2.0
        use_cellpy_stat_file: false
        auto_dirs: true

# settings related to the instrument loader
# (each instrument can have its own set of settings)
Instruments:
    tester: arbin_res
    custom_instrument_definitions_file:
    Arbin:
        max_res_filesize: 150000000
        chunk_size:
        max_chunks:
        use_subprocess: false
        detect_subprocess_need: false
        sub_process_path:
        office_version: 64bit
        SQL_server: localhost
        SQL_UID:
        SQL_PWD:
        SQL_Driver: ODBC Driver 17 for SQL Server
        odbc_driver:
    Maccor:
        default_model: one
    Neware:
        default_model: one

# settings related to running the batch procedure
Batch:
    auto_use_file_list: false
    template: standard
    fig_extension: png
    backend: matplotlib
    notebook: true
    dpi: 300
    markersize: 4
    symbol_label: simple
    color_style_label: seaborn-deep
    figure_type: unlimited
    summary_plot_width: 900
    summary_plot_height: 800
    summary_plot_height_fractions:
    - 0.2
    - 0.5
    - 0.3
...

The ‘database’ file#

The database file should contain information (cell name, type, mass loading etc.) on your cells (as specified in the config file), so that cellpy can find and link the test data to the provided metadata.

Currently, cellpy ships with a very simple database solution that hardly justifies its name as a database. It reads an excel-file where the first row acts as column headers, the second provides the type (e.g. string, bool, etc), and the rest provides the necessary information for each of the cells (one row pr. cell).

The database file is especially useful when working with the cellpy batch routine. A sample excel-file (“db-file”) is included as part of the example on the usage of the cellpy batch utility (see examples folder on GitHub, or corresponding tutorial here).

How the configuration parameters are set and read#

When cellpy is imported, a default set of parameters is set. Then it tries to read the parameters from your .conf file (located in your user directory). If successful, the parameters set in your .conf file will over-ride the default.

The parameters are stored in the module cellpy.parameters.prms.

If you would like to change some of the settings during your script (or in your jupyter notebook), e.g. if you want to use the cycle_mode option “cathode” instead of the default “anode”, then import the prms class and set new values:

from cellpy import parameters.prms

# Changing cycle_mode to cathode
prms.Reader.cycle_mode = 'cathode'

# Changing delimiter to  ',' (used when saving .csv files)
prms.Reader.sep = ','

# Changing the default folder for processed (output) data
prms.Paths.outdatadir = 'experiment01/processed_data'