13.2.6. 设置日志记录 MDAnalysis.lib.log

配置MDAnalysis的日志记录。如果需要在应用程序代码中记录日志,请导入此模块。

登录到文件,并默认设置控制台,如中所述 logging to multiple destinations

库的顶级记录器名为 MDAnalysis 按照惯例,可以使用 create() 功能。这只是必须要做的 once 。为方便起见,可以使用以下命令创建默认的MDAnalysis记录器 MDAnalysis.start_logging() ::

import MDAnalysis
MDAnalysis.start_logging()

完成此操作后,MDAnalysis会将消息写入日志文件(名为 MDAnalysis.log 默认情况下,但可以使用可选参数更改为 start_logging() )。

任何代码都可以使用以下命令记录到MDAnalysis记录器::

import logging
logger = logging.getLogger('MDAnalysis.MODULENAME')

# use the logger, for example at info level:
logger.info("Starting task ...")

重要的一点是,记录器的名称以“MDAnalys.”开头。

备注

这个 logging 标准库中的模块包含有关使用日志记录的详细文档。

13.2.6.1. 便利函数

顶层的两个方便功能使您可以轻松启动和停止默认设置 MDAnalysis 伐木者。

MDAnalysis.start_logging(logfile='MDAnalysis.log', version='2.6.1')[源代码]

开始将消息记录到文件和控制台。

默认日志文件名为 MDAnalysis.log 并使用标记记录消息 MDAnalysis

MDAnalysis.stop_logging()[源代码]

停止记录到日志文件和控制台。

13.2.6.2. 用于日志记录的其他函数和类

在 2.0.0 版本发生变更: 已弃用 MDAnalysis.lib.log.ProgressMeter 现已被移除。

class MDAnalysis.lib.log.NullHandler(level=0)[源代码]

沉默的操控者。

作为默认设置有用::

h = NullHandler()
logging.getLogger("MDAnalysis").addHandler(h)
del h

请参阅有关http://docs.python.org/library/logging.html?#configuring-logging-for-a-library中的日志记录和库的建议

初始化实例-基本上将格式化程序设置为None,并将筛选器列表设置为空。

emit(record)[源代码]

不惜一切代价实际记录指定的日志记录。

此版本旨在由子类实现,因此会引发NotImplementedError。

class MDAnalysis.lib.log.ProgressBar(*_, **__)[源代码]

显示直观的进度条和时间估计。

这个 ProgressBar 修饰一个可迭代对象,返回一个迭代器,该迭代器的作用与原始的迭代器完全相同,但每次请求一个值时都会打印一个动态更新的进度条。请参见下面的示例,了解如何在迭代轨迹的帧时使用它。

参数:
  • iterable (iterable, optional) -- 可用进度条装饰。保留为空可手动管理更新。

  • verbose (bool, optional) -- If True (the default) then show the progress bar, unless the disable keyword is set to True (disable takes precedence over verbose). If verbose is set to None then the progress bar is displayed (like True), unless this is a non-TTY output device (see disable).

  • desc (str, optional) -- 进度栏的前缀。

  • total (int or float, optional) -- 预期迭代次数。如果未指定, len(iterable) 在可能的情况下使用。如果 float("inf") 或者,作为最后的手段,只显示基本的进度统计信息(没有预计时间,没有进度条)。

  • leave (bool, optional) -- 如果 [default: True] ,在迭代终止时保留进度条的所有痕迹。如果 None ,只有在以下情况下才会离开 position 是0。

  • file (io.TextIOWrapper or io.StringIO, optional) -- 指定输出进度消息的位置(默认: sys.stderr )。用途 file.write()file.flush() 方法:研究方法。有关编码,请参见 write_bytes

  • ncols (int, optional) -- 整个输出消息的宽度。如果指定,则动态调整进度条的大小以保持在此范围内。如果未指定,则尝试使用环境宽度。退路的宽度为10米,对计数器和统计数据没有限制。如果为0,则不打印任何仪表(仅打印统计数据)。

  • mininterval (float, optional) -- 最小进度显示更新间隔 [默认:0.1] 几秒钟。

  • maxinterval (float, optional) -- 最大进度显示更新间隔 [默认:10] 几秒钟。自动调整 miniters 对应于… mininterval 在长时间显示更新延迟之后。只有在以下情况下才有效 dynamic_miniters 或启用监视器线程。

  • miniters (int or float, optional) -- 最小进度显示更新间隔,以迭代为单位。如果为0且 dynamic_miniters ,将自动调整为等于 mininterval (CPU效率更高,适合紧凑型循环)。如果>0,将跳过指定迭代次数的显示。调整此选项,然后 mininterval 以获得非常有效的循环。如果快速迭代和慢速迭代(网络、跳过项目等)的进度都不稳定,则应该将miniters设置为1。

  • ascii (bool or str, optional) -- 如果未指定或 False ,使用Unicode(平滑块)填充仪表。备用方法是使用ASCII字符“123456789#”。

  • disable (bool, optional) -- 是否禁用整个进度栏包装 [default: False] 。如果设置为无,则在非TTY上禁用。

  • unit (str, optional) -- 将用于定义每次迭代的单位的字符串 [默认:IT] 。

  • unit_scale (bool or int or float, optional) -- 如果为1或True,则迭代次数将自动减少/缩放,并添加遵循国际单位制标准的公制前缀(千、兆等) [default: False] 。如果有任何其他非零数,将按比例 totaln

  • dynamic_ncols (bool, optional) -- 如果设置,则会不断更改 ncolsnrows 到环境中(允许调整窗口大小) [default: False] 。

  • smoothing (float, optional) -- 用于速度估计的指数移动平均平滑系数(在图形用户界面模式中忽略)。范围从0(平均速度)到1(当前/瞬时速度) [默认:0.3] 。

  • bar_format (str, optional) -- 指定自定义条形字符串格式。可能会影响性能。 [default: '{{l_bar}}{{bar}}{{r_bar}}'] ,在哪里 l_bar='{{desc}}: {{percentage:3.0f}}%|'r_bar='| {{n_fmt}}/{{total_fmt}} [{{elapsed}}<{{remaining}}, {{rate_fmt}}{{postfix}}]' 可能的变量:l_bar、bar、r_bar、n、n_fmt、Total、Total_fmt、百分比、已用时间、参数、nrow、desc、单位、rate、rate_noinv、rate_noinv_fmt、rate_inv、rate_inv_fmt、后缀、单位除数、剩余、剩余。请注意,如果后一项为空,则在{desc}之后自动删除尾随的“:”。

  • initial (int or float, optional) -- 初始计数器值。在重新启动进度条时很有用 [默认值:0] 。如果使用 float ,请考虑指定 {{n:.3f}} 或类似于 bar_format ,或指定 unit_scale

  • position (int, optional) -- 如果未指定,请指定自动打印此条形图的线偏移量(从0开始)。对于一次管理多个栏很有用(例如,从线程)。

  • postfix (dict or *, optional) -- 指定要在条形图末尾显示的其他统计信息。打电话 set_postfix(**postfix) 如果可能的话 (dict )。

  • unit_divisor (float, optional) -- [默认:1000] ,被忽略,除非 unit_scaleTrue

  • write_bytes (bool, optional) -- If(默认为: None )和 file 未指定,则将使用Python2写入字节。如果 True 还将写入字节。在所有其他情况下,将默认为Unicode。

  • lock_args (tuple, optional) -- 已传递给 refresh 用于中间输出(初始化、迭代和更新)。

  • nrows (int, optional) -- 屏幕高度。如果指定,则隐藏此边界之外的嵌套条。如果未指定,则尝试使用环境高度。退路是20。

返回:

out

返回类型:

decorated iterator.

示例

要在分析轨迹时获得进度条,请执行以下操作:

from MDAnalysis.lib.log import ProgressBar

...

for ts in ProgressBar(u.trajectory):
   # perform analysis

将产生类似于:

30%|███████████                       | 3/10 [00:13<00:30,  4.42s/it]

在终端或Jupyter笔记本中。

参见

这个 ProgressBar 是从 tqdm.auto.tqdm ;请参阅 tqdm documentation 以了解有关如何使用它的更多详细信息。

MDAnalysis.lib.log.clear_handlers(logger)[源代码]

清除库顶级记录器中的处理程序

(仅对重新加载/调试周期很重要...)

MDAnalysis.lib.log.create(logger_name='MDAnalysis', logfile='MDAnalysis.log')[源代码]

创建顶级记录器。

  • 文件记录器记录所有内容(包括调试)。

  • 控制台记录器只记录信息和更高版本。

登录到文件和控制台,如中所述 logging to multiple destinations

MDAnalysis的顶级记录器名为 MDAnalysis 。请注意,我们正在使用控制台输出配置此记录器。如果根记录器也这样做,那么我们将获得控制台的两个输出行。

MDAnalysis.lib.log.start_logging(logfile='MDAnalysis.log', version='2.6.1')[源代码]

开始将消息记录到文件和控制台。

默认日志文件名为 MDAnalysis.log 并使用标记记录消息 MDAnalysis

MDAnalysis.lib.log.stop_logging()[源代码]

停止记录到日志文件和控制台。