生信的重新定义,生信学习入门常见错误可能的原因分类总结和求助指南
生信的重新定义,生信学习入门常见错误可能的原因分类总结和求助指南小技巧:搜索这个文件名(或文件名的一部分),通常可以快速定位到输出这个文件的步骤或代码部分。不太常见,通常为前面步骤运行出错导致的。需要打开文件看下,确认是否为空(最常见的可能性)还是有特殊格式(如#号开头或引号不对等),再继续向前翻看运行记录,看下是哪步出的错。排查思路:提问建议:如果自己按上面的排查,没发现问题,在群里提问时要注意 5 点:
生信学习学的是什么?常识!
学生信,不是贪多的,而是求精的!
为前文填坑,也希望能给后续答疑积累个素材,有问题先来查询再提问!
文件或目录找不到这是常见问题,常见提示有
- No such file or directory
- Error in file(file “rt”):无法打开链接
- Fatal error: Unable to open file for reading (seq/WT1_1.fq)
- Fatal error: Unable to read from file (C:Program file/Git/usearch/rdp_16s_v16_sp.fa)
- mv: cannot stat ‘circlize.pdf’: No such file or directory
排查思路:
- 如果提示中给了文件名,确认与提示名字完全一致的文件是否存在,并确认路径是否正确。如上面第 3 个提示,确认WT1_1.fq文件存在于当前工作路径的 seq 目录下。
- 如果未提示文件名,需要自己从命令行参数中找到文件名,再按第 1 条思路排查
- 不管是哪个情况,要坚信是自己提供的文件名字的问题或文件路径与自己的工作路径不匹配的问题。
提问建议:
如果自己按上面的排查,没发现问题,在群里提问时要注意 5 点:
- 注明:我知道这个是文件路径问题,但我查看了,文件路径和名字都没错。要不然得到的回答还是要你先排查这一步。
- 截图时完整的截取运行的命令和报错信息,不要只截取报错信息或只截取自己认为的核心报错信息。最简单的截图方式:截取满屏、标记重点。
- 同时也截取下对应目录的文件列表,方便他人一起看下是不是文件名中字符没分辨清楚,如1与l或空格等特殊字符的存在。如下面这个-在 R 中做了转换,致使匹配不上。
- 如果目录中文件太多,一定截取到最近的区域,如下面截图所示就是一个错误例子,没有到W部分不能判断文件是否存在。应该按名字排序截取到v w x开头的文件处。
- 提问不能太随意。
- 自己重视,别人才能重视。
不太常见,通常为前面步骤运行出错导致的。需要打开文件看下,确认是否为空(最常见的可能性)还是有特殊格式(如#号开头或引号不对等),再继续向前翻看运行记录,看下是哪步出的错。
小技巧:搜索这个文件名(或文件名的一部分),通常可以快速定位到输出这个文件的步骤或代码部分。
- Error in read.table(file = “result/alpha/otu_group_exist.txt” sep=”\t”: 输入中没有多出的行
导致下面的问题最常见的原因是:之前运行过命令,对应的图已经生成并且正处于打开状态,程序不能覆盖,一般只发生在Windows平台下。如果文件确实已打开,就关掉对应的PDF文件,再运行一次。
另外一种可能是:输出路径的目录没有创建,需要创建下。这时就是一层层目录去查看。
- Error in pdf(x …): 无法打开’result/beta/bray_curtiis.txt.pheatmap.pdf’文件
- Error in grDevices::pdf(file=filename) 无法打开result/alpha/alpha_boxplot_riichness.pdf文件
排查思路:
- 对应的软件没有安装。
- 软件安装后,没有放到环境变量中,具体见PATH和path,傻傻分不清。如果是conda安装,则查看是否在对应的
- 如果不确定是 1 还是 2 的问题,可使用locate或find命令查看命令是否已安装,具体见Linux下那些查找命令。
- 软件命令输入错误,如大小写混淆等。
- 软件和参数之间没有加空格。
- bash: SOAPdenovo: 未找到命令...
- -bash: ls-l: command not found
TAB填充是 Linux 下输入命令和文件名比较方便快速且不容易出错的快捷按键。TAB键会自动补全环境变量中的程序名字和作为参数时的文件和路径名。所以下面截图中,只输入文件名就按TAB键是没有反应的。
多行程序未能正确运行不少程序因为太长需要多行显示,在运行时最好是全选而非一句句的运行。单句一个个点运行时就容易出现下面的问题,多点了导致参数赋值出错。
更多的时候,会出现这样的错误,中间少点了某一句,致使程序一直未能如期运行。在Terminal运行处,出现了很多不结束的大于号(>)开头的行,很多命令都被卡住了,要么一直运行不了,要么运行报错。
这时,果断按下Ctrl C终止当前的输入,然后从最开始卡住处重新运行。
参数赋值问题参数和命令之间漏掉空格
- bash: cd/c/amplicon: No such file or directory
参数忘记赋值。一般出现在参数值以公共变量形式出现时,公共变量如wd或db等未初始化导致的。当然从这个截图我们看不出问题具体是什么,因为截图不完整,只能是猜测,或通过进一步与提问者沟通了解问题所在。
参数写错: 比如-l误看做-1,自己敲入命令时就会出错;或-c -C -p -P等大小写问题;或不同系统软件参数略有不同导致的。既然看到了illegal option,首先坚信是自己参数输入错了,然后查看下对应命令的帮助信息,看看最相近的参数名字是什么,按需要修改即可。
- cp: illegal option — 1
Error: unexpected numeric constant in:
"if (0 != 0){
data_m$0.2"
Execution halted
列名字不能为数字或者以数字开头
Error in read.table(file = "1509195237.txt" :
duplicate 'row.names' are not allowed
Execution halted
请对给定数据矩阵第一列的重复元素进行预处理 一般可以增加序号进行区分或重复的属性合并
Error in scan(file = file what = what sep = sep quote = quote dec = dec :
line 1 did not have 3 elements
Calls: read.table -> scan
Execution halted
请确认矩阵每一行列数是否相同 注意列分隔符是否为TAB键
Error in read.table(file = "/var/www/html/ImageGP/Public/source/lines/1510560834.txt" :
more columns than column names
Execution halted
请确认矩阵每一行列数是否相同 注意列分隔符是否为TAB键
Error in `$<-.data.frame`(`*tmp*` variable value = integer(0)) :
replacement has 0 rows data has 58
Calls: $<- -> $<-.data.frame
Execution halted
检查给定的变量名字(也就是列名字)是否存在
Error in `levels<-`(`*tmp*` value = if (nl == nL) as.character(labels) else paste0(labels :
factor level [4] is duplicated
Calls: factor
Execution halted
输入的variable order 有重复元素;variable order为对应列的唯一元素的有序排列
Warning message:
NAs introduced by coercion
Error: Discrete value supplied to continuous scale
Execution halted
数据是离散的(discrete 字符型)却选择了continuous类型 (数值型)
Error in Math.factor(data$GeneRatio) : 'log10' not meaningful for factors
Execution halted
请确认指定使用对数处理的列是不是只含有数字
Error in order(NULL c(6L 2L 2L 6L 7L 7L 6L 3L 5L 4L 1L 4L) :
argument 1 is not a vector
Calls: [ -> [.data.frame -> order -> do.call -> order
Execution halted
请提供合法的列名字
Error in log10(data$Pvalue) :
non-numeric argument to mathematical function
Execution halted
请确认给定的列为数值列
Error: unexpected symbol in "uwid = 70cm"
Execution halted
请不用填写单位
Error in fix.by(by.x x) : 'by' must specify a uniquely valid column
Calls: merge -> merge.data.frame -> fix.by
Execution halted
请检查输入数据格式
Error: object 'Value' not found
Execution halted
请提供数据中存在的列名字 注意大小写;特殊地 对线图 数值列的列名字必须是value
Error in order(data$term data$Ratio) : argument 1 is not a vector
Calls: [ -> [.data.frame -> order
Execution halted
请提供数据中存在的列名字 注意大小写;
Error in grDevices::col2rgb(colors alpha = alpha) :
invalid color name 'gree'
Calls: scale_colour_gradient ... seq_gradient_pal -> gradient_n_pal -> colour_ramp -> <Anonymous>
Execution halted
请提供正确的颜色名字 green不是gree
Error in colSums(temp_data) :
'x' must be an array of at least two dimensions
Calls: upset -> FindMostFreq -> colSums
Execution halted
UpSetView 需要至少3列 (Wide format)
Error in max(sapply(as.vector(unique(data_m$qvalue)) nchar)) :
invalid 'type' (list) of argument
Execution halted
请确认给定的列 (variable)是否正确。
Error in if (-90 ~ 90 != 0) { : argument is not interpretable as logical
In addition: Warning message:
In if (-90 ~ 90 != 0) { :
the condition has length > 1 and only the first element will be used
Execution halted
角度只需给一个数字就可以。没有参数接受一个范围值 范围只用于提示。
Error in hclust(d method = method) :
NA/NaN/Inf in foreign function call (arg 11)
Calls: pheatmap -> cluster_mat -> hclust
Execution halted
热图层级聚类分析时不允许NA值的存在。
Error: unexpected symbol in "ann_colors = list(Type=c(Pain and"
Execution halted
热图自定义注释颜色格式不对 请参照提示。
Error: cannot allocate vector of size 15.2 Gb
Execution halted
热图矩阵太大。
Error in cor(t(mat)) : 'x' must be numeric
Calls: pheatmap -> cluster_mat -> as.dist -> cor
Execution halted
热图必须是数值矩阵 除第一行和第一列 其它的元素都必须是数值。
遇到错误多调试,至少在初学时,坚信是自己的错,不是程序的错。