hmmer hits with infinite mlog.evalue
Issue #410
resolved
> aa = get.seq("2rh1_A")
> hmm = hmmer(aa)
> head(hmm$hit.tbl$mlog.evalue)
[1] Inf Inf Inf Inf Inf Inf
> head(hmm$hit.tbl$evalue)
[1] 0 0 0 0 0 0
> plot(hmm)
Error in hclust(dist(x$mlog.evalue)) :
NA/NaN/Inf in foreign function call (arg 11)
# does not occur with blast
> blast = blast.pdb(aa)
> head(blast$hit.tbl$mlog.evalue)
[1] 709.1962 709.1962 709.1962 709.1962 709.1962 709.1962
What's the best way to handle this? set those Inf values to the highest not-Inf hit + 100 ?
Comments (5)
-
-
reporter the evalue from the hmmer site is 0 (evalue="0.0e+00") :(
-
Couldn't following steps solve the problem?
data$mlog.evalue <- -log(data$evalue) data$mlog.evalue[is.infinite(data$mlog.evalue)] <- -log(.Machine$double.xmin)
-
reporter excellent. thanks xinqiu! fixed with commit cfb2f54
-
reporter - changed status to resolved
- Log in to comment
What about using the
-log(.Machine$double.xmin)
? The system variable gives the smallest non-zero number that the machine can display (normally ~10^-308). Similar idea used inblast.pdb/get.blast
, which directly uses-log(1e-308)
.