1counter = 2function(max = 10) 3{ 4 counts = numeric() 5 numRecords = 0 6 7 read = function(txt) { 8 9 id = gsub("^>(.*) .*", "\\1", txt) 10 11 vals = table(id) 12 13 for(id in names(vals)) 14 counts[id] <<- ifelse(id %in% names(counts), counts[id], 0) + vals[id] 15 16 numRecords <<- numRecords + 1 17 18 if(numRecords >= max) { 19 msg = list(message = "Reached maximum count") 20 class(msg) = c("CountException", "error", "condition") 21 stop(msg) 22 } 23 24# sum(nchar(txt)) 25 } 26 27 list(read = read, counts = function() counts) 28} 29 30theCount = counter() 31f = chunk2LineReader(theCount$read) 32 33x = postForm("http://www.wormbase.org/db/searches/advanced/dumper", 34 species = "elegans", 35 list = "AC3.8 M7 X IV III:1000..4000", 36 feature = "BLASTX Hits", 37 DNA = "feature coordinates only", 38 flank5 = "0", 39 flank3 = "0", 40 relative = "Chromosome", 41 orientation = "Relative to feature", 42 dump = "Plain TEXT", 43 DUMP = "DUMP", 44 .cgifields = c("feature", "orientation", "dump", "relative", "DNA"), 45 .opts = list(writefunction = f$read)) 46 47nchar(x) 48 49 50 51 52 53# DNA = 'feature and flanking sequences', 54# DUMP = 'DUMP', 55 #species = 'elegans', 56 57x = postForm('http://www.wormbase.org/db/searches/advanced/dumper', 58 species="briggsae", 59 list="AC3.8 M7 X IV III:1000..4000", 60 flank3="0", 61 flank5="0", 62 feature="Gene Models", 63 dump = "Plain TEXT", 64 orientation = "Relative to feature", 65 relative = "Chromsome", 66 DNA ="flanking sequences only", 67 .cgifields = paste(c("feature", "orientation", "DNA", "dump", "relative"), collapse=", ")) 68 69print(x) 70