news 2026/4/18 10:12:47

SelectExamples 根据类名和语言寻找某一个类的示例代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SelectExamples 根据类名和语言寻找某一个类的示例代码

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①根据类名寻找示例代码


二:代码及注释

#!/usr/bin/env python3 import json import os import random import tempfile from datetime import datetime from operator import itemgetter from pathlib import Path from urllib.error import HTTPError from urllib.request import urlretrieve def get_program_parameters(): import argparse description = 'Get examples that use a particular VTK class for a given language.' epilogue = ''' The JSON file needed by this script is obtained from the gh-pages branch of the vtk-examples GitHub site. It is stored in your tempfile directory. If you change the URL to the JSON file, remember that there is a ten minute wait before you can overwrite the last downloaded file. To force the download specify -o on the command line. Here is the URL for an alternative site for testing: "https://raw.githubusercontent.com/ajpmaclean/web-test/gh-pages/src/Coverage/vtk_vtk-examples_xref.json" ''' parser = argparse.ArgumentParser(description=description, epilog=epilogue, formatter_class=argparse.RawTextHelpFormatter) # parser.add_argument('vtk_class', default="vtkFiltersSources",help='The desired VTK class.') # parser.add_argument('language', default="Python",help='The desired language, one of: CSharp, Cxx, Java, Python.') parser.add_argument('-a', '--all_values', action="store_true", help='All examples (Warning: Can be a very long list).') parser.add_argument('-n', '--number', type=int, default=5, help='The maximum number of examples.') parser.add_argument('-m', '--md', action='store_true', help='Display links in markdown inline format e.g. [label](URL).') parser.add_argument('-j', '--json_xref_url', default='https://raw.githubusercontent.com/Kitware/vtk-examples/gh-pages/src/Coverage/vtk_vtk-examples_xref.json', help='The URL for the JSON cross-reference file.') parser.add_argument('-o', '--overwrite', action="store_true", help='Force an initial download of the JSON cross-reference file.') args = parser.parse_args() return args.all_values, args.md, args.number, args.json_xref_url, args.overwrite def download_file(dl_path, dl_url, overwrite=False): """ Use the URL to get a file. :param dl_path: The path to download the file to. :param dl_url: The URL of the file. :param overwrite: If true, do a download even if the file exists. :return: The path to the file as a pathlib Path. """ file_name = dl_url.split('/')[-1] # Create necessary subdirectories in the dl_path # (if they don't exist). Path(dl_path).mkdir(parents=True, exist_ok=True) # Download if it doesn't exist in the directory overriding if overwrite is True. path = Path(dl_path, file_name) if not path.is_file() or overwrite: try: urlretrieve(dl_url, path) except HTTPError as e: raise RuntimeError(f'Failed to download {dl_url}. {e.reason}') return path def get_examples(d, vtk_class, lang, all_values=False, number=5, md_fmt=False): """ For the VTK Class and language return the total number of examples and a list of examples. :param d: The dictionary. :param vtk_class: The VTK Class e.g. vtkActor. :param lang: The language, e.g. Cxx. :param all_values: True if all examples are needed. :param number: The number of values. :param md_fmt: Use Markdown format with label and URL defined together. :return: Total number of examples and a list of examples. """ try: kv = d[vtk_class][lang].items() except KeyError: return None, None if len(kv) > number: if all_values: samples = list(kv) else: samples = random.sample(list(kv), number) else: samples = kv if md_fmt: links = [f'[{s.rsplit("/", 1)[1]}]({s})' for s in sorted(map(itemgetter(1), samples))] else: links = sorted(map(itemgetter(1), samples)) return len(links), links def get_crossref_dict(ref_dir, xref_url, overwrite=False): """ Download and return the json cross-reference file. This function ensures that the dictionary is recent. :param ref_dir: The directory where the file will be downloaded. :param xref_url: The URL for the JSON cross-reference file. :param overwrite: If true, do a download even if the file exists. :return: The dictionary cross-referencing vtk classes to examples. """ path = download_file(ref_dir, xref_url, overwrite=overwrite) if not path.is_file(): print(f'The path: {str(path)} does not exist.') return None dt = datetime.today().timestamp() - os.path.getmtime(path) # Force a new download if the time difference is > 10 minutes. if dt > 600: path = download_file(ref_dir, xref_url, overwrite=True) with open(path) as json_file: return json.load(json_file) def main(): all_values, md, number, xref_url, overwrite = get_program_parameters() vtk_class = "vtkNamedColors" language = "Python" language = language.lower() available_languages = {k.lower(): k for k in ['CSharp', 'Cxx', 'Java', 'Python', 'PythonicAPI']} available_languages.update({'cpp': 'Cxx', 'c++': 'Cxx', 'c#': 'CSharp'}) if language not in available_languages: print(f'The language: {language} is not available.') tmp = ', '.join(sorted([lang for lang in set(available_languages.values())])) print(f'Choose one of these: {tmp}.') return else: language = available_languages[language] xref_dict = get_crossref_dict(tempfile.gettempdir(), xref_url, overwrite) if xref_dict is None: print('The dictionary cross-referencing vtk classes to examples was not downloaded.') return total_number, examples = get_examples(xref_dict, vtk_class, language, all_values=all_values, number=number, md_fmt=md) if examples: if total_number <= number or all_values: print(f'VTK Class: {vtk_class}, language: {language}\n' f'Number of example(s): {total_number}.') else: print(f'VTK Class: {vtk_class}, language: {language}\n' f'Number of example(s): {total_number} with {number} random sample(s) shown.') print('\n'.join(examples)) else: print(f'No examples for the VTK Class: {vtk_class} and language: {language}') if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/4 1:44:41

Conda环境变量设置:指定CUDA_VISIBLE_DEVICES控制GPU使用

Conda环境变量设置&#xff1a;指定CUDA_VISIBLE_DEVICES控制GPU使用 在现代深度学习开发中&#xff0c;我们经常面对这样一个现实&#xff1a;服务器上插着四块A100显卡&#xff0c;但你只想用其中一块跑实验&#xff0c;而同事正占用另一张卡训练大模型。如果程序一启动就抢占…

作者头像 李华
网站建设 2026/4/17 12:40:03

PyTorch混合精度训练AMP:节省显存并加快收敛速度

PyTorch混合精度训练AMP&#xff1a;节省显存并加快收敛速度 在大模型时代&#xff0c;显存瓶颈成了每个深度学习工程师绕不开的难题。你是否也经历过这样的场景&#xff1a;满怀期待地启动一个Transformer模型训练任务&#xff0c;结果刚进入第一个epoch就收到“CUDA out of m…

作者头像 李华
网站建设 2026/4/18 8:35:52

YOLOv11模型训练实战:基于PyTorch-CUDA-v2.8的高性能实现

YOLOv11模型训练实战&#xff1a;基于PyTorch-CUDA-v2.8的高性能实现 在当前AI驱动的视觉应用浪潮中&#xff0c;实时目标检测正成为自动驾驶、智能监控和工业质检等场景的核心能力。面对日益增长的精度与速度需求&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;系…

作者头像 李华
网站建设 2026/4/18 8:18:25

Markdown绘制流程图:说明PyTorch模型训练架构

PyTorch-CUDA 镜像实战指南&#xff1a;构建高效深度学习训练环境 在现代 AI 开发中&#xff0c;一个常见的痛点是——“代码写完了&#xff0c;环境却配不起来”。你可能在本地调试顺利的模型&#xff0c;换到服务器上就报错 CUDA not available&#xff1b;或者因为 PyTorch …

作者头像 李华
网站建设 2026/4/17 18:35:59

PyTorch安装教程GPU版:CentOS系统适配指南

PyTorch安装教程GPU版&#xff1a;CentOS系统适配指南 在企业级AI开发中&#xff0c;一个常见的场景是&#xff1a;团队刚采购了一批搭载NVIDIA A100显卡的服务器&#xff0c;操作系统统一为CentOS 7.9&#xff0c;但当研究员开始配置PyTorch环境时&#xff0c;却发现pip insta…

作者头像 李华
网站建设 2026/4/18 8:05:53

GitHub仓库结构设计:组织PyTorch项目代码的最佳方式

GitHub仓库结构设计&#xff1a;组织PyTorch项目代码的最佳方式 在深度学习项目开发中&#xff0c;你是否曾遇到这样的场景&#xff1f;新成员加入团队后&#xff0c;花了整整两天才配好环境&#xff1b;某次实验结果无法复现&#xff0c;排查半天发现是CUDA版本不一致&#x…

作者头像 李华