45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
# -*- 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)
|