
0.123 - Add fitnoise.R
        Fix bug in annotation.Annotation.relative_to for strand==-1
        Report memory use in log files
        Fix to "power-variant-call:"
        Slightly reduced memory usage in igv-plots and filter 
          (changed iterator implementation in samconsensus.Depth)
        "storage" module added, provides convenient collections of memory mapped numpy arrays, not currently in use

0.122 - Revert back to starting new processes manually on posix systems (something seems to be broken).

0.121 - More Windows compatability:
        Default to using multiprocessing to start new processes.

0.120 - Use os.urandom rather than file /dev/urandom.
        Strip color escape codes on non-posix OS.
        Windows compatability fix for legion.py.

0.119 - Allow None as value in config.Section.

0.118 - Better text sizing in heatmaps.
        --three-prime option in igv-plots.
        R: fix read.grouped.table, don't treat # as comment in body of table

0.117 - Fix to R module: read.counts included locus_tag in genes information

0.116 - Add some newlines to R vector literals, to stop R barfing on huge values.
        Fix out-by-one in IGV plots of 5' and 3' ends.

0.115 - Unset DISPLAY variable when running SplitsTree (crashes if DISPLAY is present and invalid).
        Heatmap lists gene symbol before locus tag.

0.114 - Minor changes for the benefit of tail-tools.

0.113 - Add "glog:" tool.
        Small bugfix into sam file iterator.
        "collapse-features:" now only merges features of the same type.

0.112 - "similarity:" added to "analyse-expression:" workflow.
        "heatmap:" no longer dies if "gene" or "product" annotations are missing.
        Start adding .report(reporter) member-functions to tools.

0.111 - Add "similarity:" tool.

0.110 - "heatmap:" now has --select and --sort flags.
        "make-reference:" now checks for duplicate chromosome names.
        Invoke samtools sort with -@ option (requires samtools >= 0.1.19).
        Fixes to R routine read.grouped.table.
        Update "test-counts:" to work with (and require) latest edgeR (3.2.4)

0.109 - Empty sequence files are now acceptable as sequence files that must have qualities.
        Guessing of quality offset now copes with empty files.

0.108 - Added "norm-from-samples:".
        Use flag "--genotype-qualities" in "freebayes:", so that there's a GQ to overwrite in "vcf-filter:" (ugh).
        Fix test-analyse-samples.py test script, now up to date with nesoni and changed Entrez behaviour.

0.107 - New flag type yes/ifavailable/no,
          this will allow more features to be on by default, especially in pipelines.
        make-reference: defaults to building as much as it can with available installed software.
        Fix parsing of shift expressions in "modify-features:".

0.106 - "test-counts:" Output ambiguous-alignment and alignment-on-same-fragment info.
        csv.writer outputs '\r\n'. Do not want. Fixed.
        Fix bug in grouped_table_reader that could result in final column being ignored due to spurious '\r'.

0.105 - "modes:" resolve ties arbitrarily rather than outputting both nearby modes.

0.104 - Improvements to peak calling tools.

0.103 - "test-counts:" was incorrectly using Holm multiple testing correction rather than FDR in limma based analyses, fixed to use FDR
        "nmf:" was incorrectly using Holm multiple testing correction rather than FDR, fixed to use FDR
        Bugfix to "test-counts: --output-counts yes"

0.102 - Added "transcripts:".
        Option "--output-counts" added to "test-counts:".
        Setting environment variable NESONI_NOTITLE will supress
        showing the status in the terminal title.

0.101 - "test-counts:" now has "goseq:" section.

0.100 - Bugfix in "modify-features:".
        Improvements to "relate-features:".
        Large heatmaps now seriate using first principal component -- not ideal, but also not O(n^3)

0.99 - Bugfix in Configurable_section_list parsing.

0.98 - Added a "nesoni changes:" command to print out this change log
       Use generalised log transformation in "heatmap:" and "test-counts:".
       "test-counts:" 
       - INTERFACE CHANGE: now uses selection expression on tags, rather than regular expressions
       - modes "trend" and "common" now additionally use estimateGLMTagwiseDispersion
         (this doesn't do a great deal, as df.prior is fixed at 20)
       - added "nullglog" method, revised "nullvoom" method,
         both methods now use eBayes moderated variances
       New parameter type Configurable_section_list, will replace Grouped_configurable_section.
       "count:" no longer produces RPKMs.
       Added "merge-counts:".
       "analyse-sample:" now includes a "count:" step, and "analyse-expression:" uses "merge-counts:" rather than "count:".
       Added "peaks:".
       Added "modify-features:".
       Added "collapse-features:".
       Added "relate-features:".

0.97 - "analyse-variants:" now invokes "power-variant-call:"
       Easily modify configurables within in configurables from python using a__b=... syntax.
       Improved __doc__ text for configurables.
       "test-counts:" heatmap now sorted by fold-change not p-value, shows fold change
       "test-counts:" now has now "log" mode
       "heatmap:" now uses a slightly different log transformation
       When merging BAM files using Picard, use same temp dir as Python's tempfile module uses

0.96 - Include nesoni-r in distribution. Oops.
       "as-gff:" and "make-genome:" allow selection of features with selection expressions.
       "run-igv:" now uses a batch script rather than IGV command line options, can load multiple files.

0.95 - fix Configurable_section
       add "peaks:" tool (under development)

0.94 - use distribute, "nesoni" script is autogenerated by setup.py

0.93 - bowtie: add flag "--no-mixed" to suppress crazy mate pairing in output
       freebayes: bam files are depth-limited before being run through freebayes
       shrimp: guess quality for each (pair of) files

0.92 - "vcf-nway" can now run SplitsTree
       "count" now outputs in grouped csv format, with sample tags in header
       add "analyse-expression"
       add "--trim-to" and "--out-separate" flags to "clip:"
       io.execute/pipe_from/pipe_to now accept 'cores' parameter
       -- use this instead of Action.cores_required (now deprecated)
       "bowtie:" use "-a" instead of "--all" so as to not produce a random file in current directory

0.91 - Make system adds "--make-do" and "--make-done" selections
       Workflow for VCF variant calling
       Workflow to analyse a set of samples
       "vcf-nway" reaches basic usability

0.90 - Sensible error if prefix or output dir not given.
       legion is greedier about using cores.
       Stage objects can now also manage "with"-style contexts.
       "shred:" can now output fastq.
       "bowtie:" now uses flags --all, --no-discordant, --threads.

0.89 - Change "--infidelity-snps" back to "--infidelity"
       Added Dirichlet-based quality calculation to "vcf-filter:"

0.88 - State files are no longer hidden in ".state", they're placed in
       the same location as output files.

0.87 - added "bowtie:"
       added tools for variant calling using VCF format (under development)

0.86 - IOError now displays error message
       Added "run-igv:"
       "shrimp:" sets read group and sample in BAM file

0.85 - update "fisher:" to work again

0.84 - update "test-counts:" to work with recent edgeR

0.83 - bugfix reading seqeucnes from gff3 file
       nesoni.config parameters now have "affects_output" flag, Execute tool now uses this

0.82 - "clip:" can take a file of adaptors, or use builtin list (updated).
       "clip:" retains read descriptions (Illumina reads now include useful information in description).
       "clip:" checks for non-duplicate read names.

0.81 - Fix small bug reading GFF files

0.80 - more concise encoding of treemaker Counting_store (incompatible with previous versions! existing stores, eg kmer bags, need to be remade)
       Update "core:"
       Update "shred:"
       "parameters" file now written in JSON format
       kmer tools no longer depend on Cython (oops)
       R: write.grouped.table added       

0.79 - Futures are picklable
       Basic cluster support

0.78 - Fix clip to accept interleaved files
       "shrimp" checks for reads with duplicate names (eg pairs in reads section)

0.77 - R function to load table with grouped columns
       plot-counts: updated

0.76 - multiplot function added to R library
       core: partially updated
       Stage class added to legion module

0.75 - flags to control making added
       analyse-sample: added
       nway: updated to new config system

0.74 - bugfix in clip

0.73 - heatmap: slightly smarter
       clip: converted to new style
       treemaker no longer depends on Cython
       begin writing unit tests

0.72 - Tools now log command line invocation
       import: can import BAM files
       shrimp: shrimp-options: -h now works again 

0.71 - Fix bug that caused filter: to immediately throw an exception.
       count: --strand must now be specified explicitly.
       shrimp: per-sequence genbank files are now named consistently with sequence name
       nesoni R package moves plotting related things to plotting.R

0.70 - No longer check if alignment is close to gmapper threshold in consensus: 
       (too many things can go wrong, benefit is dubious)

0.69 - Added Working and Reference objects, make-reference: tool.

0.68 - less threatening error messages

0.67 - fix problem with peek_and_pipe in CPython: need to flush in order to seek

0.66 - fixes to legion timestamp logic
       NMF now fits linear model for non-zero class-memberships, 
       uses unmoderated t-test to calculate significance 

0.65 - bugfix in "reconsensus:"

0.64 - make system now uses timestamps

0.63 - Bugfix: force manager to start before using subprocess.Popen
       so it doesn't inherit any pipes
       Non-negative Matrix Factorization

0.62 - Some rather violent internal surgery exposes core nesoni tools using the config.py
       system.
       Prefered names of "samshrimp:", "samconsensus:", etc are now "shrimp:", "consensus:", etc.
       If GENBANK ACCESSION (or VERSION) is "unknown", name on first line is used instead as sequence name.

0.61 - config.py allows reification of tool invocation, invocation of nesoni tools from within Python.
       (Not all tools use this yet!)
       Added "samimport:", "igv-plots:", "stats:", "as-fasta:", "as-gff:"
       "samfilter:" is more memory efficient
       "samcount:" can use alignments filtered by "samfilter:"
       Various changes make it possible to choose a random best alignment for each read rather
       than all or none as previously.

0.60 - Support GFF files in samcount

0.59 - Added support for doing a contrast to test-counts
       samconsensus now reports the expected number of miscalled SNPs and indels

0.58 - samconsensus --trim does no longer affects alignments that go to the very start or end of the sequence

0.57 - fix major bug in alignment filtering
       - was previously letting all alignments through to the monogamy-filtering stage
       -- in monogamous mode (default), all read pairs with multiple alignments were discarded,
          even if there was a clear best

0.56 - nesoni clip default quality cutoff changed from 20 to 10
       nesoni clip and samshrimp auto-detect quality offset (damn you, Illumina!)
       test-counts now has --quantile-norm option
       BUG FIX: test-counts was reporting log_e fold changes as log_2, now outputs correct values
           (see glmLRT in edgeR)

0.54 - fix typo bug in sam.py
       nway nexus format uses ACGT- where possible
       consequences computed in samconsensus, carried through nway and fisher

0.53 - statistics on fragment size in samfilter

0.52 - new "batch:" command
       download remote files using lftp

0.51 - improvements to "test-counts:"

0.50 - samshrimp runs samtools faidx reference.fa
       samshrimp no longer copies reads (shrimp can cope with anything we throw at it now)
       samcount uses genbank file in reference alignment directory
       test-counts updated
       buffer process speeds things up a bit
       samconsensus reports total snps, insertions, deletions
       clip --fasta yes no longer outputs multi-line fasta files

0.49 - samconsensus .gff files use Sequence Ontology terms 
       Added --majority option to samconsensus

0.48 - Fix bug calling insertions in samconsensus (wasn't counting reads that had no insertion)
       New options for samconsensus:
       --trim (default 5)
       --whole-read-only
       Useful header information in .gff files produced by samconsensus.

0.47 - samshrimp now makes a copy of genbank records given as reference
       samshrimp now creates individual fasta files for each reference sequence
       samshrimp now creates individual genbank files for each reference sequence,
          if reference given as genbank
       Forgot to import re in io.

0.46 - Added --strand-cutoff to samconsensus
       More concise evidence format, no '"'s.

0.45 - --sam-unaligned and --half-paired options in samshrimp
       nesoni core tool added.
       Check for presence or gmapper-ls, rmapper-ls, samtools.

0.44 - --cs option in samshrimp

0.43 - oodles more options for nesoni clip

0.42 - start phasing out Cython
       many modules work with pypy
       samfilter now produces unmapped_single.fq and unmapped_paired.fq
       Illumina adaptor sequences from 2011-01-11
       statistics.py now returns 1.0 if probability_of_absolute_majority(x,y) is called with x==y, instead of crashing
         (was causing are rare crash with ambiguity code consensus calling)

0.41 - nesoni samshrimp: Use --half-paired option by default
       nesoni clip: Show total number of reads clipped at start and end

0.40 - Fix serious bug in samcount, counts were previously somewhat wrong
       SAM depth strand specific plots: strand now correctly taken from first read of fragment 

0.39 - Speedup to SAM code
       consequences depth correction warns rather than failing if not enough sane positions

0.38 - Default -h changed in SHRiMP 2.0.2

0.37 - Report correct reference sequence in sam report.txt
       Changes to samcount

0.36 - Some Cython versions don't export global variables? EMPTY_EVIDENCE duplicated into sam.py

0.35 - sam* tools may work
       fill-scaffolds allows custom scaffold spec

0.34 - this is the point at which nesoni officially becomes a giant hairball
       added nesoni fill-scaffolds
       added nesoni pastiche

0.33 - nesoni consequences attempts to correct for uneven coverage based on k-mer frequency, position in sequence
       nesoni consequences only outputs interesting coverage

0.32 - unbreak kmer tools

0.31 - make nesoni nway more scalable

0.30 - change to nesoni shrimp help text

0.29 - nesoni shrimp specified a --threshold
       nesoni consensus --fidelity becomes --infidelity, is in terms of absolute score, hits less than infidelity above --threshold discarded
       nesoni consensus has new consensus calling system 
       read sequences in GENBANK format

0.28 - support crossover "x" in colorspace edit strings

0.27 - work around Cython 12.1 bugs

0.26 - more sensible defaults for nesoni consensus
       added --whole-read-only option to nesoni consensus

0.25 - consensus now uses read order rather than names to pair up reads\
       added nesoni reconsensus
       fixed error in ambiguous amino acid comparison for 'B' (affects nesoni consequences)

0.24 - nesoni shrimp outputs alignments in order
       graph layout improvements in nesoni graph
       abort if reference file empty in nesoni shrimp

0.23 - band-limited Needleman-Wunsch alignment in nesoni consequences (O(n*band) rather than O(n^2))

0.22 - pair seperation now measured including reads themselves in nensoni consensus
       --strand-specific option in nesoni consensus

0.21 - nesoni shred deals with comments correctly

0.20 - nesoni consequences deals with missing locus_tag, skips CDS records with strange locations
       nesoni shrimp fails earlier on non-existant file (eg shrimp-optins)
       most commands will now show an error on a mis-spelt option

0.19 - nesoni consensus creates new file, "consensus_log.txt" containing
       parameters and former contents of "read_stats.txt"

0.18 - cope with -R option being passed to SHRiMP (adds extra column containing read sequence)

0.17 - bugfix in consensus -- was not correctly discarding polygamous hits
       graph layout can now merge kmers differing by a single SNP or indel

0.16 - refinements to graph viewer

0.15 - added --shadow option to nesoni clean,

0.14 - bugfix in consequences
       nesoni shrimp now strips comments from read names

0.13 - fisher diff was only looking at one evidence file if multiple reference sequences were given, fixed

0.12 - re-enable gc for everything but nesoni consensus
       stopped Bio.pairwise2 unnecessarily spitting out many alignments in nesoni consequences

0.11 - ambiguous depth is no longer divided by the number of alignments per read
       added option --monogamous

0.10 - worked around very weird bug in "compare_to_string" in treemaker
       (char * was not being passed correctly to function)
       added nesoni clean

0.9 - added kmer analysis modules
      added test script for nesoni consensus

0.8 - nesoni fisher now works on directories, like other tools

0.7 - added pairspan depth output to nesoni consensus

0.6 - added nesoni shred tool

0.5 - nesoni consequences
      - if stop codon already exists before end (wtf?!), warn and ignore in new protein
      - handle ambiguity codes correctly for start codon change detection
      - handle amino acid ambiguity correctly
      - global align proteins with indels

0.4 - indicate impure insertions in lowercase
    - ignore impure insertions in nesoni consequences


