Files
stt/demo/example_jupyter.py

170 lines
4.9 KiB
Python
Raw Normal View History

2025-11-27 15:06:01 +08:00
#!/usr/bin/env python3
"""
STT Jupyter Notebook使用示例
这个脚本展示了如何在Jupyter notebook中使用STT的Python绑定
包括进度条适配
"""
import pystt as stt
import sys
import os
def basic_jupyter_example():
"""Jupyter notebook基本使用示例"""
print("=== Jupyter Notebook基本示例 ===")
# 创建生成器
generator = stt.SttGenerator()
# 设置参数
generator.set_tree_depth(3, 6)
generator.set_reference_system("WGS84")
# 创建简单的进度回调
def simple_progress(description, percentage):
print(f"{description}: {percentage:.1f}%")
generator.set_progress_callback(simple_progress)
# 运行生成
result = generator.run("jupyter_output.msh")
print(f"生成结果: {'成功' if result == 0 else '失败'}")
print()
def tqdm_jupyter_example():
"""使用tqdm的Jupyter示例"""
print("=== 使用tqdm的Jupyter示例 ===")
if not stt.HAS_TQDM:
print("tqdm未安装使用简单进度条")
progress_cb = stt.create_simple_callback("STT生成")
else:
print("使用tqdm进度条")
progress_cb = stt.create_tqdm_callback("STT生成")
generator = stt.SttGenerator()
generator.set_progress_callback(progress_cb)
generator.set_tree_depth(2, 5)
generator.set_reference_system("Earth")
result = generator.run("tqdm_output.msh")
print(f"生成结果: {'成功' if result == 0 else '失败'}")
print()
def auto_progress_example():
"""自动选择最佳进度条"""
print("=== 自动选择进度条示例 ===")
# 自动创建最适合的进度回调
progress_cb = stt.create_progress_callback("自动进度")
generator = stt.SttGenerator()
generator.set_progress_callback(progress_cb)
generator.set_tree_depth(2, 4)
generator.set_reference_system("Moon")
result = generator.run("auto_output.msh")
print(f"生成结果: {'成功' if result == 0 else '失败'}")
print()
def advanced_jupyter_example():
"""高级Jupyter示例"""
print("=== 高级Jupyter示例 ===")
# 创建tqdm进度回调
if stt.HAS_TQDM:
progress_cb = stt.TqdmProgressCallback("高级STT生成")
else:
progress_cb = stt.SimpleProgressCallback("高级STT生成")
generator = stt.SttGenerator()
generator.set_progress_callback(progress_cb)
# 设置自定义参考系统
generator.set_pole_equator_radius(3396200.0, 3376200.0) # 火星
# 设置二十面体方向
generator.set_icosahedron_orient(0.0, 90.0)
# 使用完整参数
params = {
"output_msh": "mars_grid.msh",
"output_vertex": "mars_vertices.txt",
"output_triangle_center": "mars_centers.txt"
}
result = generator.run_full(params)
print(f"火星网格生成: {'成功' if result == 0 else '失败'}")
print()
def notebook_integration_demo():
"""Notebook集成演示"""
print("=== Notebook集成演示 ===")
# 检查是否在notebook环境中
try:
from IPython.display import display, HTML
in_notebook = True
except ImportError:
in_notebook = False
if in_notebook:
print("检测到Jupyter环境使用增强进度显示")
display(HTML("<h4>STT生成进度</h4>"))
def notebook_progress(description, percentage):
display(HTML(f"""
<div style='border: 1px solid #ccc; padding: 10px; margin: 5px;'>
<strong>{description}</strong>: {percentage:.1f}%
<div style='background: #f0f0f0; height: 20px; margin-top: 5px;'>
<div style='background: #4CAF50; height: 100%; width: {percentage}%;'></div>
</div>
</div>
"""))
generator = stt.SttGenerator()
generator.set_progress_callback(notebook_progress)
else:
print("普通Python环境使用标准进度条")
progress_cb = stt.create_progress_callback("Notebook演示")
generator = stt.SttGenerator()
generator.set_progress_callback(progress_cb)
generator.set_tree_depth(2, 4)
generator.set_reference_system("WGS84")
result = generator.run("notebook_output.msh")
print(f"生成结果: {'成功' if result == 0 else '失败'}")
print()
def main():
"""主函数"""
print("STT Jupyter Notebook使用示例")
print("=" * 40)
# 运行各种示例
try:
basic_jupyter_example()
tqdm_jupyter_example()
auto_progress_example()
advanced_jupyter_example()
notebook_integration_demo()
print("所有Jupyter示例运行完成")
print("检查生成的文件以查看结果。")
except Exception as e:
print(f"运行示例时出错: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()