按 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
,也不至于踩这个莫名其妙的坑,浪费青春浪费心情浪费头发。我是有多走运才连续穿透这块瑞士奶酪模型上竖直对齐的三个孔洞啊。