refactor: 项目目录结构重组

- 中文目录名改为英文:cDNA图像处理实例→examples,参考资料→references
- web→app(Flask应用标准命名)
- 输出目录平移到 data/output/simple/ 和 data/output/full/
- 输入图像统一到 data/input/
- 构建脚本移到 scripts/
- 源码文件改用 snake_case 命名
- 更新所有文件路径引用和文档
This commit is contained in:
2026-07-16 20:59:58 +08:00
parent a720845948
commit 3ca079a980
100 changed files with 98 additions and 71 deletions
+7 -7
View File
@@ -102,9 +102,9 @@ plt.rcParams['axes.unicode_minus'] = False # 第 27 行
```python
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) # 第 30 行
BASE_DIR = os.path.dirname(SCRIPT_DIR) # 第 31 行
DATA_DIR = os.path.join(BASE_DIR, 'cDNA图像处理实例', # 第 32 行
DATA_DIR = os.path.join(BASE_DIR, 'data', 'input') # 第 32 行
'数据', 'cDNA')
OUTPUT_DIR = os.path.join(BASE_DIR, 'results_simple') # 第 33 行
OUTPUT_DIR = os.path.join(BASE_DIR, 'data', 'output', 'simple')
```
这 4 行在设置**相对路径常量**,保证脚本不管从哪个目录运行都能找到正确的文件。
@@ -116,14 +116,14 @@ OUTPUT_DIR = os.path.join(BASE_DIR, 'results_simple') # 第 33 行
| `os.path.dirname(...)` | 去掉文件名,只留目录 | `D:/.../src` |
| `SCRIPT_DIR` | 脚本所在目录 | `.../src` |
| `BASE_DIR` | 项目根目录(上级) | `.../cDNA微阵列图像处理作业` |
| `DATA_DIR` | 输入图像所在目录 | `.../cDNA图像处理实例/数据/cDNA` |
| `OUTPUT_DIR` | 输出图像保存目录 | `.../results_simple` |
| `DATA_DIR` | 输入图像所在目录 | `.../data/input` |
| `OUTPUT_DIR` | 输出图像保存目录 | `.../data/output/simple` |
| | | |
`os.sep.join(A, B, C)` 会把 A、B、C 用系统的路径分隔符(Windows 是 `\`)拼起来:
```
BASE_DIR + 'cDNA图像处理实例' + '数据' + 'cDNA'
→ '.../cDNA微阵列图像处理作业/cDNA图像处理实例/数据/cDNA'
BASE_DIR + 'data' + 'input'
→ '.../cDNA微阵列图像处理作业/data/input'
```
---
@@ -523,6 +523,6 @@ Python 的习惯写法。
## 课堂演示建议
1. 先在 PPT 上展示算法步骤的 6 步流程图
2. 投影曲线的图片可以直接从 `results_simple/gridding_simple.png` 截取
2. 投影曲线的图片可以直接从 `data/output/simple/01_grid_overlay.png` 截取
3. 重点讲清楚第 130~136 行"为什么从第一个 +→- 开始配对",这是最容易出错的地方
4. 如果有投影仪,可以现场改 `pct` 参数值(改成 0.05、0.20),让学生看到阈值怎么影响结果
+5 -5
View File
@@ -8,7 +8,7 @@
| | 功能 | 用途 |
|---|---|---|
| 简化版 | 只画网格线 | 课堂讲解 |
| 简化版 | 只画网格线+逐格分割 | 课堂讲解 |
| 原版 | 网格 + 去噪 + 分割 + 后处理 + 可视化 | 完整作业 |
---
@@ -17,7 +17,7 @@
### 1. TV全变分去噪
**位置**`cDNA_segmentation.py` 第 78-102 行,`tv_denoise()`
**位置**`src/segmentation.py` 第 78-102 行,`tv_denoise()`
**干什么**:对每个子块做 Chambolle 投影去噪,去除荧光噪点。简化版完全没有这一步。
@@ -25,7 +25,7 @@
### 2. 三种阈值分割
**位置**`cDNA_segmentation.py` 第 35-71 行
**位置**`src/segmentation.py` 第 35-71 行
| 函数 | 原理 |
|------|------|
@@ -37,7 +37,7 @@
### 3. 全图逐块分割
**位置**`cDNA_segmentation.py` 第 374-411 行
**位置**`src/segmentation.py` 第 397-434 行(逐块分割主循环)
**做什么**:对网格划分出的每个子块:
1. 如果太暗(均值<5或<30),先增强
@@ -50,7 +50,7 @@
### 4. 后处理
**位置**`cDNA_segmentation.py` 第 206-226
**位置**`src/segmentation.py` 第 206-249
| 函数 | 作用 |
|------|------|
+5 -5
View File
@@ -9,7 +9,7 @@
| **scikit-image** | 0.25.2 | `rgb2gray` 灰度转换、Otsu 阈值 | 全部 .py |
| **matplotlib** | 3.10.8 | 可视化绘图(投影曲线、直方图、结果图) | 全部 .py |
| **Pillow** | 12.1.1 | 读取图像文件(png/tif/jpg | 全部 .py |
| **Flask** | 3.1.2 | Web 后端 | web/app.py |
| **Flask** | 3.1.2 | Web 后端 | app/main.py |
## 仅打包时需要的额外依赖
@@ -20,17 +20,17 @@
## 安装命令
```bash
pip install numpy scipy scikit-image matplotlib Pillow flask
uv pip install numpy scipy scikit-image matplotlib Pillow flask --python .venv/Scripts/python.exe
```
如需打包:
```bash
pip install pyinstaller
python build_exe.py
uv pip install pyinstaller --python .venv/Scripts/python.exe
python scripts/build.py
```
## 版本兼容性
以上版本为当前开发环境(Python 3.10Anaconda `my_env`)实测版本。
以上版本为当前开发环境(Python 3.13uv 虚拟环境 `.venv/`)实测版本。
其他相近版本通常兼容,无特殊版本锁定需求。