hmmer hits with infinite mlog.evalue

Issue #410 resolved
Lars Skjærven created an issue
> 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)

  1. Xinqiu Yao

    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 in blast.pdb/get.blast, which directly uses -log(1e-308).

  2. Xinqiu Yao

    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)
    
  3. Log in to comment