Title: Automated Kymograph Track Filtering & Lake File Generation (kymograph轨迹自动过滤与Lake文件生成流程)
Step 1 – Track Filtering with 1_filter_track.py
(用1_filter_track.py进行轨迹过滤) 运行命令:
python 1_filter_track.py
核心思路:对每个原始*_blue.csv轨迹文件,根据位置和寿命(lifetime)进行过滤,将保留的轨迹和被剔除的轨迹分别存放于两个目录:
- filtered/ → 通过过滤条件保留下来的轨迹
- separated/ → 不满足过滤条件被剔除的轨迹 共有74个原始*_blue.csv文件。 确保对每个原始blue文件,针对每种过滤条件输出对应文件:
- 有轨迹通过过滤时,生成正常的filtered CSV(含数据行)
- 无轨迹通过过滤时,生成占位placeholder文件,格式正确,仅含header和注释,无数据 此设计确保后续2_update_lakes.py能正常读取,并判定该条件下无轨迹,保证流水线完整一致。
Step 2 – Organize filtered CSVs and Fix p940 Naming Bug
(整理过滤结果CSV,修正文件名命名错误) 创建文件夹:
mkdir filtered_blue_position filtered_blue_position_1s filtered_blue_position_5s filtered_blue_lifetime_5s_only
移动对应过滤文件:
1) 绑定位置2.2–3.8 µm
mv filtered/*_blue_position.csv filtered_blue_position
2) 绑定位置且寿命≥1s
mv filtered/*_blue_position_1s.csv filtered_blue_position_1s
3) 绑定位置且寿命≥5s
mv filtered/*_blue_position_5s.csv filtered_blue_position_5s
4) 寿命≥5s不限制位置
mv filtered/*_blue_lifetime_5s_only.csv filtered_blue_lifetime_5s_only
每个目录保留74个CSV文件(包含真实轨迹和header-only占位符)。 修正p940命名bug(文件名中p940与lake文件中940不匹配),统一去除多余的p:
find filtered_blue_position -type f -name 'p*_p[0-9][0-9][0-9]_*.csv' -exec rename 's/_p([0-9]{3})/_$1/' {} +
(同理在其它三个目录执行相同命令)
保证轨迹CSV名与lake文件中kymograph名称一一对应。
Step 3 – Write filtered tracks back to lake files
(把过滤后轨迹写回lake文件) 运行命令更新lake文件(每组过滤条件对应一组输出目录):
python 2_update_lakes.py --merged_lake_folder lakes_raw --filtered_folder filtered_blue_position --output_folder lakes_blue_position_2.2-3.8 | tee blue_position_2.2-3.8.LOG
python 2_update_lakes.py --merged_lake_folder lakes_raw --filtered_folder filtered_blue_position_1s --output_folder lakes_blue_position_2.2-3.8_length_min_1s | tee blue_position_2.2-3.8_length_min_1s.LOG
python 2_update_lakes.py --merged_lake_folder lakes_raw --filtered_folder filtered_blue_position_5s --output_folder lakes_blue_position_2.2-3.8_length_min_5s | tee blue_position_2.2-3.8_length_min_5s.LOG
python 2_update_lakes.py --merged_lake_folder lakes_raw --filtered_folder filtered_blue_lifetime_5s_only --output_folder lakes_blue_length_min_5s | tee blue_length_min_5s.LOG
处理逻辑:
- 通过kymograph名称匹配filtered_*目录对应CSV
- 根据CSV内容重建blue轨迹文本,写回lake JSON
- 分类日志输出三种情况:
- Updated:找到CSV且≥1条轨迹,更新保存轨迹
- CSV存在但无轨迹或读取失败,移除kymograph及关联H5链接
- 无匹配CSV,移除kymograph及H5链接
- 日志统计统计各case数量、CSV总数、未使用“孤儿”CSV
最终实现每个replicate拥有多组更新的lake文件,各文件中kymographs、experiments[…].dataset、file_viewer的H5链接一致对应,确保完整性和可追踪性。
此流程自动化实现kymograph轨迹质量控制与lake文件二次生成,支持多样过滤条件,保证下游数据分析准确可靠。