Files
stt/demo/example_jupyter.py
2025-11-27 15:06:01 +08:00

170 lines
4.9 KiB
Python
Raw 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.

#!/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()