【踩坑】使用 tximeta 导入 Salmon 输出文件提示 Error: lexical error: invalid char in json text.

按 Michael I. Love 的《Statistical Modeling of High Dimensional Counts》Chapter 1 Quantification 教程修改的代码。示例数据 oct4 能够用tximeta包顺利读取,但是换成自己的 Salmon 定量结果路径就是会报 Error: lexical error: invalid char in json text. 的错误。

字符串转义的锅?

我的文件路径 files 参数中除了./之外,特殊字符就只有下划线_了,然而示例数据oct4中同样是有下划线的:/home/xxx/R/x86_64-pc-linux-gnu-library/4.0/oct4/extdata/quants/SRX2236945/quant.sf.gz。打脸,不是。

cmd_info.json 是什么鬼?

为了不破坏原始数据进行 debug,复制了一份定量结果到个人项目根目录,路径变短以后,报错信息中初现端倪:

Error: lexical error: invalid char in json text.
                                       bug/SRR10435206/cmd_info.json
                     (right here) ------^

为什么好好的quant.sf.gz被替换为cmd_info.json?是否是tximeta产生的临时文件?
亲自到/home/xxx/R/x86_64-pc-linux-gnu-library/4.0/oct4/extdata/quants/SRX2236945/下查看,结果发现这个目录下不止一份quant.sf.gz那么简单,还有cmd_info.json等文件。

真相大白

我的 Salmon 定量结果是用 RNACocktail 产生的,其中run_rnacocktail.py quantify需要指定两个参数:--outdir--workdir--outdir指定的目录下只有<样本名>/quant.sf文件,而--outdir指定的目录下有更详细的 Salmon 运行记录,包含quan.sf.gz,也包含cmd_info.json
之所以出现 Error: lexical error: invalid char in json text. 这样的错误,是因为我在tximeta中指定的是--outdir下的文件,tximeta找不到cmd_info.json,并不是tximeta产生了一份临时的 json 文件,在将quant.sf路径字符串复制进去的时候混入了什么^M等看不见的特殊字符导致R语言的 json 包解析出错,也不是tximeta只认quant.sf.gz压缩包而不认quant.sf。构建coldata这个变量的时候,字段$files应该使用--workdir所指向的文件夹来构建。

后话

但凡报错信息打印得完整一点,但凡自己的项目路径短一点,但凡tximeta提示找不到cmd_info.json而不是提示lexical error,也不至于踩这个莫名其妙的坑,浪费青春浪费心情浪费头发。我是有多走运才连续穿透这块瑞士奶酪模型上竖直对齐的三个孔洞啊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章