Moved read_mutant_file to mutant_analysis_classes.py.
Bugfix for no dataset._dataset_order attribute.

Added a try/except to deal with datasets that don't have
self._dataset_order set (noticed an error on real data).
Readcount plots: sorted, cumulative, histograms.
Added adjacent-mutant distance/count/readcount-ratio plots; other.

Added plot_adjacent_distance_histogram, plot_adjacent_dist_1_bars and
plot_adjacent_readcount_ratios functions, and a couple of help
functions.

Minor changes to other plots; modified comment headers.
Added mutant position plots!

The main addition is plot_mutant_positions - complicated function to
plot multiple mutant datasets or other data as position lines or density
heatmaps across chromosomes.

Also two simple plotting functions:
plot_chromosome_density_scatterplot, plot_chromosome_density_barchart.

Several help functions.

Tested on real data (../../1211_positions_Ru-screen1-for-paper), works.
Cosmetic: renamed all plotting functions to not start with plot_*.
Minor changes to mutant_positions_and_data (defaults, comments).
Bugfix for chromosomes shorter than a single bin_size.
Bugfix for chromosomes with no mutants.
Added title arg to put title on plot; comments.
New file - mostly old code copied from elsewhere, and TODO comments.
Minor: changed from scattter to plot; TODO comments.
% of genes with 1+/2+ mutants, for random mutant subsets, & plotting.

Wrote gene_counts_for_mutant_subsets with proper random gene subset
choice and help functions in mutant_simulations.py - Return numbers of
genes with N mutants for different-sized random subsets of dataset.

Added genes_with_N_mutants plot to mutant_plotting_utilities.py
(partially based on old code removed from mutant_simulations.py)

Tested on real data, works.
Separated getting insertion pos and converting HTSeq_pos to pos tuple.

Refactored get_insertion_pos_from_HTSeq_read_pos into
get_insertion_pos_from_flanking_region_pos and HTSeq_pos_to_tuple, to
enable using position tuples instead of only HTSeq pos objects to get
insertion positions.

Rewrote/added unit-tests, all pass; mutant_count_alignments.py run-tests
pass.
Minor: imported module rename, using imported default genome_file constants.
Minor: rewrite/improvement for mutant subset gene count functions.
Genome mappability calculations, with unit-tests - all pass.
Memory optimization in genome_mappable_slices; notes.

Got rid of sequences_seen_once set, it was just a partial duplicate of
the unique_seq_positions dict! (the set elements were the dict keys).

Unit-tests pass with no changes.

Wrote a lot of notes on memory issues.
Memory optimization in genome_mappable_* - major rewrite!

Wrote more comments/info on memory usage.

Rewrote genome_mappable_slices to do two passes over the genome for
memory optimization (explanation in comments).
Changed the output formats of genome_mappable_slices and and
genome_mappable_insertion_sites to be more memory-efficient; removed
genome_mappable_insertion_positions.

Returning a list of Insertion_position objects was horribly inefficient,
so I got rid of that altogether - now there's just:
 - genome_mappable_slices, which outputs a chrom:slice_start_pos_list
   dict (so you need to know the slice length to interpret it - storing
   the slice start and end positions was horribly inefficient, the same
   goes for millions of copies of chromosome names).
 - genome_mappable_insertion_sites, which outputs a chrom:pos_list too,
   where pos_list contains either just insertion positions (giving the
   base before the insertion), or (position,strand) tuples (which takes
   more space).

Now it's actually semi-practical to run this on the whole chlamy genome
on my laptop (16G RAM), though I still go into swap a fair bit.

Rewrote unit-tests to reflect new outputs, they all pass; added a
unit-test for reading genome intput from fasta file
(test_data/INPUT_genome0.fa).

Also changed overall file comment section headers.
Bugfix and TODO comments.