diff --git a/.gitignore b/.gitignore index 45c1e96..ba4e533 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ # Python __pycache__/ *.pyc +.venv/ # OS .DS_Store @@ -18,6 +19,7 @@ Thumbs.db # Flask .playwright-mcp/ +app/uploads/ # PyInstaller 打包产物 dist/ diff --git a/CLAUDE.md b/CLAUDE.md index 6c44a1f..e89ae8b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -8,30 +8,37 @@ ``` src/ -├── cDNA_segmentation.py ← 原版:完整处理流程 -└── cDNA_gridding_simple.py ← 简化版:仅划线,用于课堂讲解 ★ +├── segmentation.py ← 原版:完整处理流程 +└── gridding_simple.py ← 简化版:仅划线,用于课堂讲解 ★ -results/ ← 原版输出(6张图) -results_simple/ ← 简化版输出(1张图) +app/ ← Flask Web应用 +scripts/ ← 构建脚本 +data/ +├── input/ ← 输入图像 +└── output/ + ├── simple/ ← 简化版输出(6张图) + └── full/ ← 原版输出(6张图) -cDNA图像处理实例/数据/cDNA/ ← 输入图像 + MATLAB示例 -参考资料/NewGridAndCV/ ← MATLAB参考实现 +examples/数据/cDNA/ ← 课程原始数据 + MATLAB示例 +references/matlab/ ← MATLAB参考实现 +references/papers/ ← 论文PDF ``` ## 两个Python实现 -### 简化版 (`cDNA_gridding_simple.py`) — 课堂主讲 +### 简化版 (`src/gridding_simple.py`) — 课堂主讲 - 算法:投影求和 → (max-min)×10%阈值 → 过零点配对 → 划线 -- 约150行,带详细中文注释,适合课堂讲解 -- 输出:`results_simple/gridding_simple.png` +- 约370行,带详细中文注释,适合课堂讲解 +- 输出:`data/output/simple/` 下 6 张图 - **与原版网格线位置完全一致(误差0像素)** -### 原版 (`cDNA_segmentation.py`) — 完整实现 +### 原版 (`src/segmentation.py`) — 完整实现 - 网格划分:自相关+白顶帽+Otsu+质心(参照MATLAB `GriddingAndCV.m`) - 三种阈值分割:人工阈值、Otsu、迭代阈值 - TV去噪(Chambolle投影算法,参照 `tvdenoise.m`) +- 输出:`data/output/full/` 下 6 张图 ## 算法要点 @@ -44,6 +51,7 @@ cDNA图像处理实例/数据/cDNA/ ← 输入图像 + MATLAB示例 - `cDNA.png`:820×820 RGB,23×23斑点阵列,Cy3/Cy5双色荧光 - 斑点间距约35px,每斑点约18px宽 +- 输入路径:`data/input/cDNA.png` ## 编码规范 @@ -52,8 +60,10 @@ cDNA图像处理实例/数据/cDNA/ ← 输入图像 + MATLAB示例 ## 运行环境 -Python:`D:\ProgramData\anaconda3\envs\my_env` -依赖:numpy, scipy, scikit-image, matplotlib, Pillow +Python虚拟环境:项目根目录 `.venv/`(uv 创建,Python 3.13) +依赖:numpy, scipy, scikit-image, matplotlib, Pillow, flask + +安装:`uv pip install numpy scipy scikit-image matplotlib Pillow flask --python .venv/Scripts/python.exe` ## 仓库 diff --git a/README.md b/README.md index a149a8a..c5c4774 100644 --- a/README.md +++ b/README.md @@ -15,28 +15,38 @@ ``` cDNA微阵列图像处理作业/ ├── src/ -│ ├── cDNA_segmentation.py # 原版:网格划分 + 三种阈值分割 + TV去噪 -│ └── cDNA_gridding_simple.py # 简化版:仅网格划分,用于课堂讲解 +│ ├── segmentation.py # 原版:网格划分 + 三种阈值分割 + TV去噪 +│ └── gridding_simple.py # 简化版:仅网格划分,用于课堂讲解 │ -├── web/ # Flask Web 应用 -│ ├── app.py # Flask 主程序 -│ ├── launcher.py # PyInstaller 打包入口 -│ ├── templates/index.html # 前端页面 -│ └── static/style.css # 样式文件 +├── app/ # Flask Web 应用 +│ ├── main.py # Flask 主程序 +│ ├── launcher.py # PyInstaller 打包入口 +│ ├── templates/index.html # 前端页面 +│ └── static/style.css # 样式文件 │ -├── build_exe.py # PyInstaller 打包脚本 -├── cDNA_Analyzer.spec # PyInstaller spec 配置 -├── flowchart.drawio # 算法流程图(用 Draw.io 打开) +├── scripts/ +│ └── build.py # PyInstaller 打包脚本 +│ +├── data/ +│ ├── input/ # 输入图像 +│ │ └── cDNA.png +│ └── output/ # 生成结果 +│ ├── simple/ # 简化版输出(6张图) +│ └── full/ # 原版输出(6张图) +│ +├── examples/ # 课程示例数据(含 pptx + MATLAB demo) +├── references/ # 参考资料 +│ ├── papers/ # 论文 PDF +│ └── matlab/ # MATLAB 参考代码(NewGridAndCV) │ -├── results/ # 原版输出图像(6张) -├── results_simple/ # 简化版输出图像(6张) ├── docs/ # 技术文档 -│ ├── cDNA 微阵列网格划分.md # 算法详解 -│ ├── 两版差异说明.md # 简化版 vs 原版对比 -│ └── 依赖库清单.md # Python 依赖 +│ ├── cDNA 微阵列网格划分.md +│ ├── 两版差异说明.md +│ └── 依赖库清单.md │ -├── cDNA图像处理实例/ # 课程示例数据 -└── 参考资料/ # MATLAB 参考代码 + 论文 PDF +├── flowchart.drawio # 算法流程图 +├── README.md +└── CLAUDE.md ``` --- @@ -50,28 +60,33 @@ cDNA微阵列图像处理作业/ ### 方式二:Web 开发模式 ```bash -cd web -python app.py +# 首次使用需创建虚拟环境 +uv venv .venv --python <你的Python路径> +uv pip install numpy scipy scikit-image matplotlib Pillow flask --python .venv/Scripts/python.exe + +# 启动 +cd app +python main.py # 浏览器自动打开 http://localhost:5000 ``` ### 方式三:命令行脚本 ```bash -# 简化版(课堂主讲,约150行) -python src/cDNA_gridding_simple.py -# 输出:results_simple/ 下 6 张图 +# 简化版(课堂主讲,约370行) +python src/gridding_simple.py +# 输出:data/output/simple/ 下 6 张图 -# 原版(完整实现,430行) -python src/cDNA_segmentation.py -# 输出:results/ 下 6 张图 +# 原版(完整实现,约470行) +python src/segmentation.py +# 输出:data/output/full/ 下 6 张图 ``` --- ## 两种 Python 实现 -### 简化版 `cDNA_gridding_simple.py`(课堂主讲) +### 简化版 `src/gridding_simple.py`(课堂主讲) **算法思路**(初中学历即可理解): @@ -85,12 +100,12 @@ python src/cDNA_segmentation.py **特点**: -- 约 150 行代码,带详细中文注释 +- 约 370 行代码,带详细中文注释 - 核心逻辑仅 30 行 - 与原版网格线位置误差为 **0 像素** - 完全自动化,无需人工设定参数 -### 原版 `cDNA_segmentation.py`(完整实现) +### 原版 `src/segmentation.py`(完整实现) | 模块 | 算法 | 参照 | |------|------|------| @@ -128,7 +143,7 @@ python src/cDNA_segmentation.py 使用 PyInstaller 将 Web 应用打包为单个 exe 文件: ```bash -python build_exe.py +python scripts/build.py # 输出:dist/cDNA_Analyzer.exe(约 68MB) ``` @@ -138,7 +153,7 @@ python build_exe.py ## 运行环境 -- **Python**: `D:\ProgramData\anaconda3\envs\my_env` +- **Python**: 3.13(uv 虚拟环境 `.venv/`) - **依赖**: numpy, scipy, scikit-image, matplotlib, Pillow, Flask --- diff --git a/web/launcher.py b/app/launcher.py similarity index 96% rename from web/launcher.py rename to app/launcher.py index 9263ea6..04546c1 100644 --- a/web/launcher.py +++ b/app/launcher.py @@ -12,7 +12,7 @@ os.environ['TEMPLATE_DIR'] = os.path.join(base, 'templates') os.environ['STATIC_DIR'] = os.path.join(base, 'static') # 导入 Flask app -from app import app +from main import app def open_browser(): os.startfile('http://localhost:5000') diff --git a/web/app.py b/app/main.py similarity index 99% rename from web/app.py rename to app/main.py index 95e8909..2888db2 100644 --- a/web/app.py +++ b/app/main.py @@ -1,8 +1,8 @@ """ cDNA微阵列图像处理 - Web UI (Flask) ===================================== -启动:python web/app.py -打包:python build_exe.py +启动:python app/main.py +打包:python scripts/build.py 打开:http://localhost:5000 """ diff --git a/web/static/style.css b/app/static/style.css similarity index 100% rename from web/static/style.css rename to app/static/style.css diff --git a/web/templates/index.html b/app/templates/index.html similarity index 100% rename from web/templates/index.html rename to app/templates/index.html diff --git a/cDNA图像处理实例/数据/cDNA/cDNA.png b/data/input/cDNA.png similarity index 100% rename from cDNA图像处理实例/数据/cDNA/cDNA.png rename to data/input/cDNA.png diff --git a/results/result_I_bw.png b/data/output/full/result_I_bw.png similarity index 100% rename from results/result_I_bw.png rename to data/output/full/result_I_bw.png diff --git a/data/output/full/result_full_segmentation.png b/data/output/full/result_full_segmentation.png new file mode 100644 index 0000000..4c62af8 Binary files /dev/null and b/data/output/full/result_full_segmentation.png differ diff --git a/data/output/full/result_gridding.png b/data/output/full/result_gridding.png new file mode 100644 index 0000000..d4a6888 Binary files /dev/null and b/data/output/full/result_gridding.png differ diff --git a/results/result_gridding_overlay.png b/data/output/full/result_gridding_overlay.png similarity index 100% rename from results/result_gridding_overlay.png rename to data/output/full/result_gridding_overlay.png diff --git a/data/output/full/result_iterative_convergence.png b/data/output/full/result_iterative_convergence.png new file mode 100644 index 0000000..0b5a429 Binary files /dev/null and b/data/output/full/result_iterative_convergence.png differ diff --git a/data/output/full/result_threshold_compare.png b/data/output/full/result_threshold_compare.png new file mode 100644 index 0000000..060d94a Binary files /dev/null and b/data/output/full/result_threshold_compare.png differ diff --git a/data/output/simple/01_grid_overlay.png b/data/output/simple/01_grid_overlay.png new file mode 100644 index 0000000..13fc4a8 Binary files /dev/null and b/data/output/simple/01_grid_overlay.png differ diff --git a/data/output/simple/02_col_projection.png b/data/output/simple/02_col_projection.png new file mode 100644 index 0000000..bcfa1a0 Binary files /dev/null and b/data/output/simple/02_col_projection.png differ diff --git a/data/output/simple/03_row_projection.png b/data/output/simple/03_row_projection.png new file mode 100644 index 0000000..bd35634 Binary files /dev/null and b/data/output/simple/03_row_projection.png differ diff --git a/data/output/simple/04_histogram.png b/data/output/simple/04_histogram.png new file mode 100644 index 0000000..9ff924a Binary files /dev/null and b/data/output/simple/04_histogram.png differ diff --git a/data/output/simple/05_segmentation_raw.png b/data/output/simple/05_segmentation_raw.png new file mode 100644 index 0000000..e6eb315 Binary files /dev/null and b/data/output/simple/05_segmentation_raw.png differ diff --git a/data/output/simple/06_post_processed.png b/data/output/simple/06_post_processed.png new file mode 100644 index 0000000..ae0add2 Binary files /dev/null and b/data/output/simple/06_post_processed.png differ diff --git a/docs/cDNA 微阵列网格划分.md b/docs/cDNA 微阵列网格划分.md index ce68fa0..854f615 100644 --- a/docs/cDNA 微阵列网格划分.md +++ b/docs/cDNA 微阵列网格划分.md @@ -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),让学生看到阈值怎么影响结果 diff --git a/docs/两版差异说明.md b/docs/两版差异说明.md index 649ca63..c6f691b 100644 --- a/docs/两版差异说明.md +++ b/docs/两版差异说明.md @@ -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 行 | 函数 | 作用 | |------|------| diff --git a/docs/依赖库清单.md b/docs/依赖库清单.md index dfc9b53..5eb5485 100644 --- a/docs/依赖库清单.md +++ b/docs/依赖库清单.md @@ -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.10,Anaconda `my_env`)实测版本。 +以上版本为当前开发环境(Python 3.13,uv 虚拟环境 `.venv/`)实测版本。 其他相近版本通常兼容,无特殊版本锁定需求。 diff --git a/cDNA图像处理实例/图像处理实例.pptx b/examples/图像处理实例.pptx similarity index 100% rename from cDNA图像处理实例/图像处理实例.pptx rename to examples/图像处理实例.pptx diff --git a/cDNA图像处理实例/数据/cDNA/Demo_cdna.m b/examples/数据/cDNA/Demo_cdna.m similarity index 100% rename from cDNA图像处理实例/数据/cDNA/Demo_cdna.m rename to examples/数据/cDNA/Demo_cdna.m diff --git a/cDNA图像处理实例/数据/cDNA/I_bw.jpg b/examples/数据/cDNA/I_bw.jpg similarity index 100% rename from cDNA图像处理实例/数据/cDNA/I_bw.jpg rename to examples/数据/cDNA/I_bw.jpg diff --git a/参考资料/NewGridAndCV/cDNA.png b/examples/数据/cDNA/cDNA.png similarity index 100% rename from 参考资料/NewGridAndCV/cDNA.png rename to examples/数据/cDNA/cDNA.png diff --git a/参考资料/NewGridAndCV/GriddingAndCV.m b/references/matlab/GriddingAndCV.m similarity index 100% rename from 参考资料/NewGridAndCV/GriddingAndCV.m rename to references/matlab/GriddingAndCV.m diff --git a/参考资料/NewGridAndCV/Heaviside.m b/references/matlab/Heaviside.m similarity index 100% rename from 参考资料/NewGridAndCV/Heaviside.m rename to references/matlab/Heaviside.m diff --git a/参考资料/NewGridAndCV/MicroArraySlide.JPG b/references/matlab/MicroArraySlide.JPG similarity index 100% rename from 参考资料/NewGridAndCV/MicroArraySlide.JPG rename to references/matlab/MicroArraySlide.JPG diff --git a/参考资料/NewGridAndCV/R14_MicroarrayImage_CaseStudy.m b/references/matlab/R14_MicroarrayImage_CaseStudy.m similarity index 100% rename from 参考资料/NewGridAndCV/R14_MicroarrayImage_CaseStudy.m rename to references/matlab/R14_MicroarrayImage_CaseStudy.m diff --git a/references/matlab/cDNA.png b/references/matlab/cDNA.png new file mode 100644 index 0000000..494542a Binary files /dev/null and b/references/matlab/cDNA.png differ diff --git a/参考资料/NewGridAndCV/checkstop.m b/references/matlab/checkstop.m similarity index 100% rename from 参考资料/NewGridAndCV/checkstop.m rename to references/matlab/checkstop.m diff --git a/参考资料/NewGridAndCV/chenvese.m b/references/matlab/chenvese.m similarity index 100% rename from 参考资料/NewGridAndCV/chenvese.m rename to references/matlab/chenvese.m diff --git a/参考资料/NewGridAndCV/choice.m b/references/matlab/choice.m similarity index 100% rename from 参考资料/NewGridAndCV/choice.m rename to references/matlab/choice.m diff --git a/参考资料/NewGridAndCV/choosemaxobj.m b/references/matlab/choosemaxobj.m similarity index 100% rename from 参考资料/NewGridAndCV/choosemaxobj.m rename to references/matlab/choosemaxobj.m diff --git a/参考资料/NewGridAndCV/contour_bw.m b/references/matlab/contour_bw.m similarity index 100% rename from 参考资料/NewGridAndCV/contour_bw.m rename to references/matlab/contour_bw.m diff --git a/参考资料/NewGridAndCV/cvseg.m b/references/matlab/cvseg.m similarity index 100% rename from 参考资料/NewGridAndCV/cvseg.m rename to references/matlab/cvseg.m diff --git a/参考资料/NewGridAndCV/demo_GriddingAndCV.m b/references/matlab/demo_GriddingAndCV.m similarity index 100% rename from 参考资料/NewGridAndCV/demo_GriddingAndCV.m rename to references/matlab/demo_GriddingAndCV.m diff --git a/参考资料/NewGridAndCV/fillingholes.m b/references/matlab/fillingholes.m similarity index 100% rename from 参考资料/NewGridAndCV/fillingholes.m rename to references/matlab/fillingholes.m diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy.html b/references/matlab/html/R14_MicroarrayImage_CaseStudy.html similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy.html rename to references/matlab/html/R14_MicroarrayImage_CaseStudy.html diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_01.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_01.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_01.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_01.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_02.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_02.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_02.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_02.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_03.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_03.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_03.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_03.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_04.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_04.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_04.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_04.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_05.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_05.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_05.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_05.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_06.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_06.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_06.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_06.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_07.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_07.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_07.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_07.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_08.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_08.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_08.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_08.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_09.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_09.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_09.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_09.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_10.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_10.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_10.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_10.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_11.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_11.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_11.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_11.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_12.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_12.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_12.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_12.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_13.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_13.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_13.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_13.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_14.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_14.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_14.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_14.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_15.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_15.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_15.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_15.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_16.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_16.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_16.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_16.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_17.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_17.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_17.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_17.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_18.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_18.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_18.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_18.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_19.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_19.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_19.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_19.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_20.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_20.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_20.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_20.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_21.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_21.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_21.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_21.png diff --git a/参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_22.png b/references/matlab/html/R14_MicroarrayImage_CaseStudy_22.png similarity index 100% rename from 参考资料/NewGridAndCV/html/R14_MicroarrayImage_CaseStudy_22.png rename to references/matlab/html/R14_MicroarrayImage_CaseStudy_22.png diff --git a/参考资料/NewGridAndCV/kappa.m b/references/matlab/kappa.m similarity index 100% rename from 参考资料/NewGridAndCV/kappa.m rename to references/matlab/kappa.m diff --git a/参考资料/NewGridAndCV/limits.m b/references/matlab/limits.m similarity index 100% rename from 参考资料/NewGridAndCV/limits.m rename to references/matlab/limits.m diff --git a/参考资料/NewGridAndCV/maskcircle2.m b/references/matlab/maskcircle2.m similarity index 100% rename from 参考资料/NewGridAndCV/maskcircle2.m rename to references/matlab/maskcircle2.m diff --git a/参考资料/NewGridAndCV/microarray.xls b/references/matlab/microarray.xls similarity index 100% rename from 参考资料/NewGridAndCV/microarray.xls rename to references/matlab/microarray.xls diff --git a/参考资料/NewGridAndCV/range.m b/references/matlab/range.m similarity index 100% rename from 参考资料/NewGridAndCV/range.m rename to references/matlab/range.m diff --git a/参考资料/NewGridAndCV/redcolorcontour.m b/references/matlab/redcolorcontour.m similarity index 100% rename from 参考资料/NewGridAndCV/redcolorcontour.m rename to references/matlab/redcolorcontour.m diff --git a/参考资料/NewGridAndCV/rgblab.m b/references/matlab/rgblab.m similarity index 100% rename from 参考资料/NewGridAndCV/rgblab.m rename to references/matlab/rgblab.m diff --git a/参考资料/NewGridAndCV/showphi.m b/references/matlab/showphi.m similarity index 100% rename from 参考资料/NewGridAndCV/showphi.m rename to references/matlab/showphi.m diff --git a/参考资料/NewGridAndCV/tvdenoise.m b/references/matlab/tvdenoise.m similarity index 100% rename from 参考资料/NewGridAndCV/tvdenoise.m rename to references/matlab/tvdenoise.m diff --git a/参考资料/NewGridAndCV/低对比度cDNA图像分割的局部水平集方法_芦碧波_刘利群_张霄宏_林忠华.pdf b/references/matlab/低对比度cDNA图像分割的局部水平集方法_芦碧波_刘利群_张霄宏_林忠华.pdf similarity index 100% rename from 参考资料/NewGridAndCV/低对比度cDNA图像分割的局部水平集方法_芦碧波_刘利群_张霄宏_林忠华.pdf rename to references/matlab/低对比度cDNA图像分割的局部水平集方法_芦碧波_刘利群_张霄宏_林忠华.pdf diff --git a/参考资料/2019-3-高污染基因芯片图像的网格划分_芦碧波.pdf b/references/papers/2019-3-高污染基因芯片图像的网格划分_芦碧波.pdf similarity index 100% rename from 参考资料/2019-3-高污染基因芯片图像的网格划分_芦碧波.pdf rename to references/papers/2019-3-高污染基因芯片图像的网格划分_芦碧波.pdf diff --git a/参考资料/封面+低对比度cDNA图像分割的局部水平集方法_芦碧波.pdf b/references/papers/封面+低对比度cDNA图像分割的局部水平集方法_芦碧波.pdf similarity index 100% rename from 参考资料/封面+低对比度cDNA图像分割的局部水平集方法_芦碧波.pdf rename to references/papers/封面+低对比度cDNA图像分割的局部水平集方法_芦碧波.pdf diff --git a/参考资料/显微图像分割.pdf b/references/papers/显微图像分割.pdf similarity index 100% rename from 参考资料/显微图像分割.pdf rename to references/papers/显微图像分割.pdf diff --git a/results/result_full_segmentation.png b/results/result_full_segmentation.png deleted file mode 100644 index 40657af..0000000 Binary files a/results/result_full_segmentation.png and /dev/null differ diff --git a/results/result_gridding.png b/results/result_gridding.png deleted file mode 100644 index bac3ff5..0000000 Binary files a/results/result_gridding.png and /dev/null differ diff --git a/results/result_iterative_convergence.png b/results/result_iterative_convergence.png deleted file mode 100644 index 91b9992..0000000 Binary files a/results/result_iterative_convergence.png and /dev/null differ diff --git a/results/result_threshold_compare.png b/results/result_threshold_compare.png deleted file mode 100644 index 25eacfa..0000000 Binary files a/results/result_threshold_compare.png and /dev/null differ diff --git a/results_simple/01_grid_overlay.png b/results_simple/01_grid_overlay.png deleted file mode 100644 index 81d3168..0000000 Binary files a/results_simple/01_grid_overlay.png and /dev/null differ diff --git a/results_simple/02_col_projection.png b/results_simple/02_col_projection.png deleted file mode 100644 index ec94d4a..0000000 Binary files a/results_simple/02_col_projection.png and /dev/null differ diff --git a/results_simple/03_row_projection.png b/results_simple/03_row_projection.png deleted file mode 100644 index 37a39c6..0000000 Binary files a/results_simple/03_row_projection.png and /dev/null differ diff --git a/results_simple/04_histogram.png b/results_simple/04_histogram.png deleted file mode 100644 index be052dd..0000000 Binary files a/results_simple/04_histogram.png and /dev/null differ diff --git a/results_simple/05_segmentation_raw.png b/results_simple/05_segmentation_raw.png deleted file mode 100644 index 5c6a2f6..0000000 Binary files a/results_simple/05_segmentation_raw.png and /dev/null differ diff --git a/results_simple/06_post_processed.png b/results_simple/06_post_processed.png deleted file mode 100644 index 7737ed9..0000000 Binary files a/results_simple/06_post_processed.png and /dev/null differ diff --git a/results_simple/test001_01_grid.png b/results_simple/test001_01_grid.png deleted file mode 100644 index 6d49074..0000000 Binary files a/results_simple/test001_01_grid.png and /dev/null differ diff --git a/results_simple/test001_02_col.png b/results_simple/test001_02_col.png deleted file mode 100644 index ea0fc2e..0000000 Binary files a/results_simple/test001_02_col.png and /dev/null differ diff --git a/results_simple/test001_03_binary.png b/results_simple/test001_03_binary.png deleted file mode 100644 index e801249..0000000 Binary files a/results_simple/test001_03_binary.png and /dev/null differ diff --git a/results_simple/test_01_grid.png b/results_simple/test_01_grid.png deleted file mode 100644 index f723323..0000000 Binary files a/results_simple/test_01_grid.png and /dev/null differ diff --git a/results_simple/test_02_col.png b/results_simple/test_02_col.png deleted file mode 100644 index 5b84194..0000000 Binary files a/results_simple/test_02_col.png and /dev/null differ diff --git a/results_simple/test_03_binary.png b/results_simple/test_03_binary.png deleted file mode 100644 index d32bddd..0000000 Binary files a/results_simple/test_03_binary.png and /dev/null differ diff --git a/results_simple/test_03_row.png b/results_simple/test_03_row.png deleted file mode 100644 index 4aa753a..0000000 Binary files a/results_simple/test_03_row.png and /dev/null differ diff --git a/results_simple/test_04_hist.png b/results_simple/test_04_hist.png deleted file mode 100644 index 56aa591..0000000 Binary files a/results_simple/test_04_hist.png and /dev/null differ diff --git a/results_simple/test_05_seg.png b/results_simple/test_05_seg.png deleted file mode 100644 index 84a4157..0000000 Binary files a/results_simple/test_05_seg.png and /dev/null differ diff --git a/results_simple/test_06_clean.png b/results_simple/test_06_clean.png deleted file mode 100644 index f07701f..0000000 Binary files a/results_simple/test_06_clean.png and /dev/null differ diff --git a/build_exe.py b/scripts/build.py similarity index 87% rename from build_exe.py rename to scripts/build.py index 638b9b0..472f488 100644 --- a/build_exe.py +++ b/scripts/build.py @@ -1,6 +1,6 @@ """ PyInstaller打包脚本 -运行: python build_exe.py +运行: python scripts/build.py 输出: dist/cDNA_Analyzer.exe """ @@ -8,12 +8,12 @@ import PyInstaller.__main__ import os PyInstaller.__main__.run([ - 'web/launcher.py', + 'app/launcher.py', '--name=cDNA_Analyzer', '--onefile', '--noconsole', - '--add-data', f'web/templates;templates', - '--add-data', f'web/static;static', + '--add-data', f'app/templates;templates', + '--add-data', f'app/static;static', # 排除不相关的重量级包(环境里有torch/pandas等) '--exclude-module', 'torch', '--exclude-module', 'torchvision', diff --git a/src/cDNA_gridding_simple.py b/src/gridding_simple.py similarity index 98% rename from src/cDNA_gridding_simple.py rename to src/gridding_simple.py index 37813b5..cc48296 100644 --- a/src/cDNA_gridding_simple.py +++ b/src/gridding_simple.py @@ -2,7 +2,7 @@ cDNA微阵列图像处理 —— 简化版 ====================================== -D:\ProgramData\anaconda3\envs\my_env\python.exe src/cDNA_gridding_simple.py +.venv\Scripts\python.exe src/gridding_simple.py 一、算法流程总览 @@ -56,8 +56,8 @@ plt.rcParams['axes.unicode_minus'] = False # 路径设置(从脚本位置动态推导,禁止硬编码绝对路径) SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) BASE_DIR = os.path.dirname(SCRIPT_DIR) -DATA_DIR = os.path.join(BASE_DIR, 'cDNA图像处理实例', '数据', 'cDNA') -OUTPUT_DIR = os.path.join(BASE_DIR, 'results_simple') +DATA_DIR = os.path.join(BASE_DIR, 'data', 'input') +OUTPUT_DIR = os.path.join(BASE_DIR, 'data', 'output', 'simple') # ================================================================ diff --git a/src/cDNA_segmentation.py b/src/segmentation.py similarity index 99% rename from src/cDNA_segmentation.py rename to src/segmentation.py index c3b3860..d175bc6 100644 --- a/src/cDNA_segmentation.py +++ b/src/segmentation.py @@ -24,8 +24,8 @@ rcParams['axes.unicode_minus'] = False # 路径配置(使用脚本位置向上两级作为基准) _SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) _BASE_DIR = os.path.dirname(_SCRIPT_DIR) # 项目根目录 -DATA_DIR = os.path.join(_BASE_DIR, 'cDNA图像处理实例', '数据', 'cDNA') -OUTPUT_DIR = os.path.join(_BASE_DIR, 'results') +DATA_DIR = os.path.join(_BASE_DIR, 'data', 'input') +OUTPUT_DIR = os.path.join(_BASE_DIR, 'data', 'output', 'full') # ============================================================