dfc19eb1a85b6d8ced6c39c94d2d7c60.png

最近因为疫情的原因一直呆在家里,然后突然一个师兄找我要了个bed文件,然后我就从服务器上down下来给了他。但很快师兄就反馈说这个bed文件加载不到IGV里面去。一直出现这个报错。

901e82455e2ccb63c146343ec0cbc590.png

然后我心里想,不应该啊,我之前明明从服务器上down到我的台式机上,然后成功用IGV加载了的,虽然里面的数据可能不太一样了,但应该都是一样的bed。为啥到他电脑就不行了,于是我强行启动我笔记本的IGV,结果也出现了报错。面对这种报错,我的第一反应是可能是IGV的版本不对,于是我重新下了最新的IGV,发现还是一样的错误。

然后我就懵逼了,只能去上网搜,网上只有有限几个类似的报错

  • BED Parsing errors are more cryptic than they should be

  • Error parsing line at byte position when uploading bed file

其中只有第二个是成功解决了的,他里面说

I figured out what was wrong. In one of the bed line, the address was written in scientific form. That's why IGV is throwing out an error.

对于 scientific form,我还是不太懂……所以我只能祭出最后一招,逐行逐行地去看bed文件(开玩笑的:))。我按顺序大块大块地部分复制了我原来那个bed文件,形成新的bed,载入IGV中,终于被我发现了有问题的那一行

Chr5 4e+05 400206 peak_19737 . .

然后终于跟之前对起来了,原来是科学计数法惹的祸。因为R会对一些大数字运用科学计数法,从而导致了40000变成了4e+05。而之前我一直没报错是因为我之前的bed文件很幸运地没有大的整数。

至于怎么解决这个问题,上网搜下就行。比如说你可以在输出bed的时候,设置下格式

write.table(format(merge_peak,scientific=FALSE),

file = "result/processed_result/merge_peak.bed",

quote = F,sep = "\t",

row.names = F,col.names = F,

)

也可以一开始就options下,比如说下面的意思就是在200个位以内不要使用科学计数法

options(scipen = 200)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐