# Tutorials Learning examples for the [Guan package](https://py.guanjihuan.com), extracted from the blog post [Guan软件包学习示例](https://www.guanjihuan.com/archives/38367). One example per file. Each file is a self-contained script that you can run directly, or copy the functions you need into your own project. ## Installation ```bash pip install --upgrade guan ``` ```python import guan ``` ## Run the examples ```bash python tutorials/daily_scenarios/01_ai_chat.py python tutorials/physics_scenarios/03_band_structure.py ``` ## Directory ``` tutorials/ ├── 00_test.py # package self test ├── daily_scenarios/ # 一、日常场景 │ ├── 01_ai_chat.py │ ├── 02_timing_log.py │ ├── 03_function_timer.py │ ├── 04_try_except.py │ ├── 05_dump_and_load_data.py │ ├── 06_print_array.py │ ├── 07_matrix_in_file.py │ ├── 08_parallel_calculation.py │ ├── 09_loop_calculation.py │ ├── 10_is_hermitian.py │ └── 11_split_parameters.py └── physics_scenarios/ # 二、物理场景 ├── 01_pauli_matrices.py ├── 02_real_space_hamiltonian.py ├── 03_band_structure.py ├── 04_chern_number_and_wilson_loop.py ├── 05_density_of_states_with_green_function.py ├── 06_conductance_and_scattering_matrix.py └── 07_wavefunction_gauge.py ``` ## 一、日常场景 / Daily scenarios | File | 说明 | Requirements | | --- | --- | --- | | `00_test.py` | 软件包自检 `guan.test()` | - | | `01_ai_chat.py` | AI 对话:内置模型、OpenAI 兼容接口、LangChain、Ollama、llama.cpp、ModelScope | OpenAI 接口需要 API Key;Ollama / llama.cpp / ModelScope 需要本地模型 | | `02_timing_log.py` | 带日期和时间的运行日志 `guan.logging_with_day_and_time` | - | | `03_function_timer.py` | 函数计时器:`@guan.timer_decorator` 与 `guan.timer` | - | | `04_try_except.py` | try except 简写:`@guan.try_decorator` 与 `guan.try_except` | - | | `05_dump_and_load_data.py` | 变量写入文件并读回 | numpy | | `06_print_array.py` | 打印数组 | numpy | | `07_matrix_in_file.py` | 矩阵写入 Markdown / LaTeX 格式文件后查看 | numpy | | `08_parallel_calculation.py` | 多进程并行计算 | - | | `09_loop_calculation.py` | 循环参数计算(一、二、三个参数)与作图 | numpy, matplotlib | | `10_is_hermitian.py` | 检查是否为厄米矩阵(相对误差 1e-5) | numpy | | `11_split_parameters.py` | 数组分割,为并行计算准备参数 | numpy | ## 二、物理场景 / Physics scenarios | File | 说明 | Requirements | | --- | --- | --- | | `01_pauli_matrices.py` | 泡利矩阵 | numpy | | `02_real_space_hamiltonian.py` | 一维 / 二维方格 / 三维立方格的实空间哈密顿量 | numpy | | `03_band_structure.py` | 能带图计算:一维链、方格带、石墨烯锯齿形带 | numpy, matplotlib | | `04_chern_number_and_wilson_loop.py` | 陈数与 Wilson loop 计算 | numpy | | `05_density_of_states_with_green_function.py` | 用格林函数计算态密度(方格与立方格,局域态密度) | numpy, matplotlib | | `06_conductance_and_scattering_matrix.py` | 电导与散射矩阵的计算 | numpy, matplotlib | | `07_wavefunction_gauge.py` | 波函数规范(fixed gauge)的选取 | numpy | ## 说明 / Notes + Some examples need an API Key, a local Ollama/llama.cpp/ModelScope model, or a specific model path. Edit the paths in the scripts before running them. + `04_try_except.py` contains a deliberate `bug_code` call to demonstrate the exception handling. + Figures are saved to the current working directory when the plotting functions are used. ## License / 许可 The source post is published under [CC BY](https://www.guanjihuan.com), by [Ji-Huan Guan](https://www.guanjihuan.com/about). Please cite the source when quoting: https://www.guanjihuan.com/archives/38367