【踩坑】使用 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,也不至於踩這個莫名其妙的坑,浪費青春浪費心情浪費頭髮。我是有多走運才連續穿透這塊瑞士奶酪模型上豎直對齊的三個孔洞啊。

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