快速上手

程序安装

此软件包核心只依赖 python3.8+ 环境和 numpy/scipy 库, 我们可以通过 pip 直接安装所需要的库:

$ pip install teflow

确保网络连接正常,依赖的库会自动安装。 再或者,我们也可以选择从源码安装,预览新功能。 源码发布在 Github / Gitee 上。

注意

python3.7 已经在 2023 年 6 月停止了维护更新, 我们的程序也都是在 python3.8 的环境下开发和测试, 虽然部分功能在更低的版本上可能可以运行, 但我们并不打算保证低版本的兼容性,或修复由此导致的问题。 而且,在测试中我们发现相比 python3.6, 我们的程序包 在 python3.8 中可以提速 2 ~ 5 倍, 因此我们强烈建议用户放弃在低版本 python 上使用该程序的计划。

命令行操作

在正确安装之后,我们可以通过命令行来使用 TEflow 程序(缩写为 tef )。 在 Linux 系统下进行命令操作一个非常自然的事情, 在 Windows 或其它平台下,需要首先进入终端,然后进行命令操作。 一般地,我们可以通过 -h (或 –help) 选项来显示帮助信息。 如果 TEflow 成功安装的话, 当我们运行 tef -h 之后,应该会获得类似下面的显示信息 (后续随着软件发展可能显示内容可能会有不同):

$ tef -h

      ________  ________
     |        \|        \     ,...  ,,
      \$$$$$$$$| $$$$$$$$   .d' ""`7MM
        | $$   | $$__       dM`     MM
        | $$   | $$  \     mMMmm    MM  ,pW"Wq.`7M'    ,A    `MF'
        | $$   | $$$$$      MM      MM 6W'   `Wb VA   ,VAA   ,V
        | $$   | $$_____    MM      MM 8M     M8  VA ,V  VA ,V
        | $$   | $$     \   MM      MM YA.   ,A9   VVV    VVV
         \$$    \$$$$$$$$ .JMML.  .JMML.`Ybmd9'     W      W

                         (v0.0.1a3, Copyright 2023 Jianbo ZHU)
______________________________________________________________________
>>> Streamline your thermoelectric workflow from materials to devices

Usage: tef-subcommand [-h] ...

Subcommands:
    format  Format thermoelectric properties data
      band  Insight carriar transport with band models
     ztdev  Calculate ZTdev of thermoelectric generator
    interp  Data interpolation and extrapolation
    mixing  Mixing the datafile with same array-shape
    refine  Remove redundant & extract the concerned data
    cutoff  Cut-off data at the threshold temperature

我们可以通过 tef-xxxxxx -h 来详细查看子命令 xxxxxx 的用法和支持选项。 比如:

$ tef-ztdev -h
usage: tef-ztdev [-h] [-b] [-y] [-s SUFFIX] INPUTFILE [OUTPUTFILE]

Calculate ZTdev of thermoelectric generator - TEflow(0.0.1a3)

  >>> Prepare a data file with columns in the following order: T, C, S, and
  K. Alternatively, you can format the data file with Tc, Th, and a pre-
  calculated Yita; in this case, include the -y (or --yita) option to
  indicate the use of this format.

positional arguments:
  INPUTFILE             Input file name (must be provided)
  OUTPUTFILE            Output file name (optional, auto-generated if omitted)

optional arguments:
  -h, --help            show this help message and exit
  -b, --bare            Output data without header
  -y, --yita            Use this option when the input file is formatted with
                        columns Tc, Th, Yita
  -s SUFFIX, --suffix SUFFIX
                        Suffix for generating the output file name (default: ztdev)

为了计算热电材料的工程 ZT 值,我们需要准备一个输入文件, 里面包含 4 列材料属性数据,依次是温度 (K),电导率 (S/cm), 塞贝克系数 (uV/K),和热导率 (W/(m.K))。 在 Github / Gitee 仓库的 examples/ZTdev 文件中有更详细的描述。 然后,我们运行如下命令就可以进行计算 (假设数据文件名为 data.txt):

$ tef-ztdev data.txt

参照屏幕显示,输出结果会被保存在文件 data_ztdev.txt 。 当然,按照前面显示的帮助信息,我们可以自己指定输出文件名。 比如我们希望结果保存在 ZTdev-S1.txt, 我们可以运行如下命令:

$ tef-ztdev data.txt ZTdev-S1.txt

我们可以进一步利用其它的选项做更加复杂的事情。

用作第三方库

如果你需要集成 TEflow 程序包的功能到你自己的程序, 比如批量化或者流程化数据处理时, 最直接的方式就是调用 valuate() 方法。 对于绝大多数子模块或者类,我们一般会提供一个名为 valuate() 的函数或者方法,它会在通用的默认参数下调用相关的计算。 比如,我们想计算一系列材料的工程 ZT 值,准备了相应的数据文件, 文件名为 data-S1.txt, data-S2.txt, …, data-S10.txt , 我们可以通过下面的方式来直接计算所有数据:

>>> import numpy as np
>>> from teflow import ztdev
>>>
>>> for i in range(10):
...     data = np.loadtxt(f'data-S{i+1}.txt', unpack=True)
...     rst = ztdev.valuate(data)
...     output = np.c_[rst['Tc'], rst['Th'],rst['Yita'],rst['ZTdev']]
...     np.savetxt(f'output-S{i+1}.txt', output)
...
>>>

在这个代码片段中,我们采用了 numpy.loadtxt() 方法来读取数据 (这里 unpack=True 是非常重要的,它确保数据的每一列被单独的存储; 而 i+1 被使用是由于 python 的索引是 0 开始的), 然后调用 ztdev.valuate() 方法进行计算, 计算结果以字典形式保存, 最后我们整理格式并保存到相应的文件。

在程序包中,我们还提供了其它更多的功能,比如热电势的计算等。 我们为每一个函数和类都写了详细的文档,可以直接查看源码, 也可以查看本文档的 API 参考 章节。