TreeMix运行抛出std::logic_error错误终止问题求助
TreeMix报错
basic_string::_M_construct null not valid的解决方案 - 优先排查文件格式兼容问题
该报错本质是软件读入文件时识别到空字符触发的逻辑错误,首先做格式校验:- 转换换行符格式,删除空行:Windows系统生成的文件换行符为
\r\n,TreeMix无法识别会读到空值,执行dos2unix data.p.treemix.gz(或先解压后转换明文文件),再执行sed -i '/^$/d' data.p.treemix删除所有空行 - 排查缺失值填充是否合规:TreeMix要求每行的等位基因计数项数量必须和第一行的群体数完全一致,缺失位点不能留空,必须填充为
0,0,不能出现连续空格、制表符和空格混用的情况 - 排除压缩文件损坏问题:先解压gz文件为明文,直接调用明文文件运行测试:
gzip -d data.p.treemix.gz treemix -i data.p.treemix -o test_output - 转换换行符格式,删除空行:Windows系统生成的文件换行符为
- 解决2个群体的边界兼容问题
TreeMix原生逻辑默认适配≥3个群体的分析场景,仅输入2个群体时会触发边界判断错误,可通过以下两种方式处理:- 新增一个虚拟外类群:在第一行群体名末尾加
OUT,每一行的计数末尾加1,1,凑齐3个群体后运行,分析时忽略外类群的分支即可 - 运行时明确指定迁移事件数为0:添加参数
-m 0关闭迁移事件预测,避免软件计算迁移事件时对群体数的校验报错:
treemix -i data.p.treemix.gz -o output -m 0 - 新增一个虚拟外类群:在第一行群体名末尾加
- 最小数据集定位问题
先构造仅含2个有效位点、无缺失的极小测试文件,确认可正常运行后,逐步增加位点、引入缺失值,定位具体异常的行位点,删除格式异常的行即可正常运行。
内容的提问来源于stack exchange,提问作者hemr3
相关产品推荐
相关产品推荐

