Files
screen/py/call_analyze.py
2025-12-07 13:56:33 +08:00

45 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
import argparse
import subprocess
def run_analysis_with_subprocess(cif_file, input_file, output_file, filters=None):
# 如果没有传递 filters则使用默认值
if filters is None:
filters = ["Ordered", "PropOxi", "VoroPerco", "Coulomb", "VoroBV", "VoroInfo", "MergeSite"]
# 构建命令行参数
command = ['python', '../tool/analyze_voronoi_nodes.py', cif_file, '-i', input_file, '-o', output_file, '-f'] + filters
# 调用 subprocess 执行命令
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 捕获标准输出和标准错误
stdout, stderr = process.communicate()
# Python 2.7 需要解码 stdout 和 stderr因为是 str 类型)
stdout = stdout.decode('utf-8') if isinstance(stdout, str) else stdout
stderr = stderr.decode('utf-8') if isinstance(stderr, str) else stderr
# 打印输出内容或记录到文件
print(stdout)
if stderr:
print(stderr)
if __name__ == "__main__":
# 设置命令行参数解析器
parser = argparse.ArgumentParser(description='Run Voronoi analysis using analyze.py script.')
parser.add_argument('cif_file', type=str, help='CIF file to analyze')
parser.add_argument('-i', '--input_file', type=str, help='Input YAML file', required=True)
parser.add_argument('-o', '--output_file', type=str, help='Output file to save the results', required=True)
parser.add_argument('-f', '--filters', nargs='+',
default=["Ordered", "PropOxi", "VoroPerco", "Coulomb", "VoroBV", "VoroInfo", "MergeSite"],
help='List of filters to apply (default is all filters)')
# 解析命令行参数
args = parser.parse_args()
# 调用分析函数
run_analysis_with_subprocess(args.cif_file, args.input_file, args.output_file, args.filters)