PageRenderTime 28ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/fingerprint/R/bitspec.R

http://github.com/rajarshi/cdkr
R | 22 lines | 20 code | 2 blank | 0 comment | 10 complexity | 0c94477e5334b69df55f95f0e5b86afc MD5 | raw file
  1. bit.spectrum <- function(fplist) {
  2. if (class(fplist) != 'list') stop("Must provide a list of fingerprint objects")
  3. if (any(unlist(lapply(fplist, class)) != 'fingerprint'))
  4. stop("Must provide a list of fingerprint objects");
  5. nbit <- length(fplist[[1]])
  6. spec <- numeric(nbit)
  7. for (i in 1:length(fplist)) {
  8. bits <- fplist[[i]]@bits
  9. spec[bits] <- spec[bits]+1
  10. }
  11. spec / length(fplist)
  12. }
  13. shannon <- function(fplist) {
  14. if (class(fplist) != 'list') stop("Must provide a list of fingerprint objects")
  15. if (any(unlist(lapply(fplist, class)) != 'fingerprint'))
  16. stop("Must provide a list of fingerprint objects");
  17. bs <- bit.spectrum(fplist)
  18. bs <- bs[ bs != 0 ]
  19. -1 * sum( bs * log2(bs) )
  20. }