|
1 | 1 | # khmer v1.4 release notes |
2 | 2 |
|
3 | | -This is the v1.4 release of khmer featuring the results of our March coding sprint; the use of the new v0.8 release of screed (the library we use for pure Python reading of nucleotide sequence files); and the addition of @luizirber's HyperLogLog counter for quick cardinality estimation. |
| 3 | +This is the v1.4 release of khmer featuring the results of our March and April |
| 4 | +(PyCon) coding sprints and the 16 new contributors; the use of the new v0.8 |
| 5 | +release of screed (the library we use for pure Python reading of nucleotide |
| 6 | +sequence files); and the addition of @luizirber's HyperLogLog counter for quick |
| 7 | +cardinality estimation. |
4 | 8 |
|
5 | 9 | Documentation is at https://khmer.readthedocs.org/en/v1.4/ |
6 | 10 |
|
7 | 11 | ## New items of note: |
8 | 12 |
|
9 | | -Casava 1.8 read naming is now fully supported and in general the scripts no longer mangle read names. Side benefits: `split-paired-reads.py` will no longer drop reads with 'bad' names; `count-median.py` can generate output in CSV format. #759 #818 @ctb |
| 13 | +Casava 1.8 read naming is now fully supported and in general the scripts no |
| 14 | +longer mangle read names. Side benefits: `split-paired-reads.py` will no longer |
| 15 | +drop reads with 'bad' names; `count-median.py` can generate output in CSV |
| 16 | +format. #759 #818 @ctb #873 @ahaerpfer |
10 | 17 |
|
11 | | -Most scripts now support a "broken" interleaved paired-read format for FASTA/FASTQ nucleotide sequence files. [`trim-low-abund.py`](http://khmer.readthedocs.org/en/v1.4/user/scripts.html#trim-low-abund-py) has been promoted from the sandbox as well. #759 @ctb |
| 18 | +Most scripts now support a "broken" interleaved paired-read format for FASTA/ |
| 19 | +FASTQ nucleotide sequence files. |
| 20 | +[`trim-low-abund.py`](http://khmer.readthedocs.org/en/v1.4/user/scripts.html#trim-low-abund-py) |
| 21 | +has been promoted from the sandbox as well (with streaming support). #759 @ctb |
| 22 | +\#963 @sguermond #933 @standage |
12 | 23 |
|
13 | | -The script to transform an interleaved paired-read nucleotide sequence file into two (`extract-paired-reads.py`) now allows one to name the output files which can be useful in combination with named pipes for streaming processing #762 @ctb |
| 24 | +The script to transform an interleaved paired-read nucleotide sequence file |
| 25 | +into two files now allows one to name the output files which can be useful in |
| 26 | +combination with named pipes for streaming processing #762 @ctb |
14 | 27 |
|
15 | | -Streaming everywhere: thanks to screed v0.8 we now support streaming of almost all inputs and outputs. #830 @aditi9783 #812 @mr-c |
| 28 | +Streaming everywhere: thanks to screed v0.8 we now support streaming of almost |
| 29 | +all inputs and outputs. #830 @aditi9783 #812 @mr-c #917 @bocajnotnef #882 |
| 30 | +@standage |
16 | 31 |
|
17 | | -Need a quick way to count total number of unique k-mers in very low memory? the `unique-kmers.py` in the sandbox uses a HyperLogLog counter to quickly (and with little memory) provide an estimate with a controllable error rate. #257 #738 #895 #902 @luizirber |
| 32 | +Need a quick way to count total number of unique k-mers in very low memory? the |
| 33 | +`unique-kmers.py` script in the sandbox uses a HyperLogLog counter to quickly |
| 34 | +(and with little memory) provide an estimate with a controllable error rate. |
| 35 | +\#257 #738 #895 #902 @luizirber |
| 36 | + |
| 37 | +`normalize-by-median.py` can now process both a paired interleaved sequence |
| 38 | +file and a file of unpaired reads in the same invocation thus removing the need |
| 39 | +to write the counting table to disk as required in the workaround. #957 |
| 40 | +@susinmotion |
18 | 41 |
|
19 | 42 | ## Notable bugs fixed/issues closed: |
20 | 43 |
|
21 | | -Paired-end reads from Casava 1.8 no longer require renaming for use in normalize-by-median and abund-filter when used in paired mode #818 @ctb |
| 44 | +Paired-end reads from Casava 1.8 no longer require renaming for use in |
| 45 | +`normalize-by-median.py` and `abund-filter.py` when used in paired mode #818 |
| 46 | +@ctb |
22 | 47 |
|
23 | 48 | Python version support clarified. We do not (yet) support Python 3.x #741 @mr-c |
24 | 49 |
|
25 | | -If a single output file mode is chosen for normalize-by-median.py we now default to overwriting the output. Appending the output is available by using the append redirection operator from the shell. #843 @drtamermansour |
| 50 | +If a single output file mode is chosen for normalize-by-median.py we now |
| 51 | +default to overwriting the output. Appending the output is available by using |
| 52 | +the append redirection operator from the shell. #843 @drtamermansour |
| 53 | + |
| 54 | +Scripts that consume sequence data using C++ will now properly throw an error |
| 55 | +on truncated files. #897 @kdmurray91 And while writing to disk we properly |
| 56 | +check for errors #856 #962 @mr-c |
26 | 57 |
|
27 | | -Scripts that consume sequence data using C++ will now properly throw an error on truncated files. #897 @kdmurray91 |
| 58 | +`abundance-dist-single.py` no longer fails with small files and many threads. |
| 59 | +\#900 @mr-c |
28 | 60 |
|
29 | 61 | ## Additional fixes/features |
30 | 62 |
|
31 | 63 | ### Of interest to users: |
32 | 64 |
|
33 | | -Misc documentation updates #753 @PamelaM, #782 @bocajnotnef, #845 @alameldin, #804 @ctb, #870 @SchwarzEM |
| 65 | +Many documentation updates #753 @PamelaM, #782 @bocajnotnef, #845 @alameldin, |
| 66 | +\#804 @ctb, #870 @SchwarzEM, #953 #942 @safay, #929,@davelin1, #687 #912 #926 |
| 67 | +@mr-c |
34 | 68 |
|
35 | | -Installation instructions for Arch Linux have been added #723 @reedacartwright |
| 69 | +Installation instructions for Conda, Arch Linux, and Mac Ports have been added |
| 70 | +\#723 @reedacartwright #952 @elmbeech #930 @ahaerpfer |
36 | 71 |
|
37 | | -The example script for the STAMPS database has been fixed to run correctly #781 @drtamermansour |
| 72 | +The example script for the STAMPS database has been fixed to run correctly #781 |
| 73 | +@drtamermansour |
38 | 74 |
|
39 | | -split-paired-reads.py: added -o option to allow specification of an output directory #752 @bede |
| 75 | +`split-paired-reads.py`: added `-o` option to allow specification of an output |
| 76 | +directory #752 @bede |
40 | 77 |
|
41 | | -Fixed a string formatting glitch in `sample-reads-randomly.py` #773 @qingpeng |
| 78 | +Fixed a string formatting and a boundry error in `sample-reads-randomly.py` |
| 79 | +\#773 @qingpeng #995 @ctb |
42 | 80 |
|
43 | | -CSV output also added to `abundance-dist.py`, `abundance-dist-single.py`, and `count-overlap.py` #831 #854 #855 @drtamermansour |
| 81 | +CSV output added to `abundance-dist.py`, `abundance-dist-single.py`, and |
| 82 | +`count-overlap.py`, and `readstats.py` #831 #854 #855 @drtamermansour #959 |
| 83 | +@anotherthomas |
44 | 84 |
|
45 | | -interleave-reads.py now prints the output filename nicely #827 @kdmurray91 |
| 85 | +TSV/JSON output of `load-into-counting.py` enhanced with the total number of |
| 86 | +reads processed #996 @kdmurray91 Output files are now also checked to be |
| 87 | +writable *before* loading the input files #672 @pgarland @bocajnotnef |
| 88 | + |
| 89 | +`interleave-reads.py` now prints the output filename nicely #827 @kdmurray91 |
46 | 90 |
|
47 | 91 | Cleaned up error for input file not existing #772 @jessicamizzi #851 @ctb |
48 | 92 |
|
49 | 93 | Fixed error in `find-knots.py` #860 @TheOneHyer |
50 | 94 |
|
51 | | -The help text for `load-into-counting.py` for the `--no-bigcounts`/`-b` flag has been clarified #857 @kdmurray91 |
| 95 | +The help text for `load-into-counting.py` for the `--no-bigcounts`/`-b` flag |
| 96 | +has been clarified #857 @kdmurray91 |
| 97 | + |
| 98 | +@lexnederbragt confirmed an old bug has been fixed with his test for whitespace |
| 99 | +in sequence identifiers interacting with the `extract-partitions.py` script |
| 100 | +\#979 |
| 101 | + |
| 102 | +Now safe to copy-and-paste from the user documentation as the smart quotes have |
| 103 | +been turned off. #967 @ahaerpfer |
| 104 | + |
| 105 | +The script `make-coverage.py` has been restored to the sandbox. #920 |
| 106 | +@SherineAwad |
| 107 | + |
| 108 | +`normalize-by-median.py` will warn if two of the input files have the same name |
| 109 | +\#932 @elmbeech |
52 | 110 |
|
53 | 111 | ### Of interest to developers: |
54 | 112 |
|
55 | | -Switched away from using `--user` install for developers #740 @mr-c @drtamermansour & #883 @standage |
| 113 | +Switched away from using `--user` install for developers #740 @mr-c |
| 114 | +@drtamermansour & #883 @standage |
56 | 115 |
|
57 | | -Developers can now see a summary of important Makefile targets via `make help` #783 @standage |
| 116 | +Developers can now see a summary of important Makefile targets via `make help` |
| 117 | +\#783 @standage |
58 | 118 |
|
59 | 119 | The unused `khmer.load_pe` module has been removed #828 @kdmurray91 |
60 | 120 |
|
61 | 121 | Versioneer bug due to new screed release was squashed #835 @mr-c |
62 | 122 |
|
63 | 123 | A Python 2.6 and 2.7.2 specific bug was worked around #869 @kdmurray91 @ctb |
64 | 124 |
|
65 | | -added functions hash_find_all_tags_list and hash_get_tags_and_positions to CountingHash objects #749 #765 @ctb |
| 125 | +Added functions hash_find_all_tags_list and hash_get_tags_and_positions to |
| 126 | +CountingHash objects #749 #765 @ctb |
66 | 127 |
|
67 | | -The `make diff-cover` and ChangeLog formatting requirements have been added to checklist #766 @mr-c |
| 128 | +The `make diff-cover` and ChangeLog formatting requirements have been added to |
| 129 | +checklist #766 @mr-c |
68 | 130 |
|
69 | | -A useful message is now presented if large tables fail to allocate enough memory #704 @mr-c |
| 131 | +A useful message is now presented if large tables fail to allocate enough |
| 132 | +memory #704 @mr-c |
70 | 133 |
|
71 | 134 | A checklist for developers adding new CPython types was added #727 @mr-c |
72 | 135 |
|
73 | | -Specific policies for sandbox/ and scripts/ content, and a process for adding new command line scripts into scripts/ have been added to the developer documentation #799 @ctb |
| 136 | +The sandbox graduation checklist has been updated to include streaming support |
| 137 | +\#951 @sguermond |
74 | 138 |
|
75 | | -Sandbox scripts update: corrected #! Python invocation #815 @Echelon9, executable bits, copyright headers, no underscores in filenames #823 #826 #850 @alameldin several scripts deleted, docs + requirements updated #852 @ctb |
| 139 | +Specific policies for sandbox/ and scripts/ content, and a process for adding |
| 140 | +new command line scripts into scripts/ have been added to the developer |
| 141 | +documentation #799 @ctb |
| 142 | + |
| 143 | +Sandbox scripts update: corrected #! Python invocation #815 @Echelon9, |
| 144 | +executable bits, copyright headers, no underscores in filenames #823 #826 #850 |
| 145 | +@alameldin several scripts deleted, docs + requirements updated #852 @ctb |
76 | 146 |
|
77 | 147 | Avoid running big-memory tests on OS X #819 @ctb |
78 | 148 |
|
79 | 149 | Unused callback code was removed #698 @mr-c |
80 | 150 |
|
81 | | -The CPython code was updated to use the new checklist and follow additional best practices #785 #842 @luizirber |
| 151 | +The CPython code was updated to use the new checklist and follow additional |
| 152 | +best practices #785 #842 @luizirber |
82 | 153 |
|
83 | | -Added a read-only view of the raw counting tables #671 @camillescott #869 @kdmurray91 |
| 154 | +Added a read-only view of the raw counting tables #671 @camillescott #869 |
| 155 | +@kdmurray91 |
84 | 156 |
|
85 | | -Added a Python method for quickly getting the number of underlying tables in a counting or presence table #879 #880 @kdmurray91 |
| 157 | +Added a Python method for quickly getting the number of underlying tables in a |
| 158 | +counting or presence table #879 #880 @kdmurray91 |
86 | 159 |
|
87 | | -The C++ library can now be built separately for the brave and curious developer #788 @kdmurray91 |
| 160 | +The C++ library can now be built separately for the brave and curious developer |
| 161 | +\#788 @kdmurray91 |
88 | 162 |
|
89 | | -The ReadParser object now keeps track of the number of reads processed #877 @kdmurray91 |
| 163 | +The ReadParser object now keeps track of the number of reads processed #877 |
| 164 | +@kdmurray91 |
90 | 165 |
|
91 | 166 | Documentation is now reproducible #886 @mr-c |
92 | 167 |
|
93 | 168 | Python future proofing: specify floor division #863 @mr-c |
94 | 169 |
|
95 | | -Miscellaneous spelling fixes; thanks codespell! #867 @mr-c |
| 170 | +Miscellaneous spelling fixes; thanks codespell! #867 @mr-c |
96 | 171 |
|
97 | | -## Known issues: |
| 172 | +Debian package list update #984 @mr-c |
98 | 173 |
|
99 | | -All of these are pre-existing. |
| 174 | +`khmer.kfile.check_file_status()` has been renamed to `check_input_files()` |
| 175 | +\#941 @proteasome `filter-abund.py` now uses it to check the input counting |
| 176 | +table #931 @safay |
| 177 | + |
| 178 | +`normalize-by-median.py` was refactored to not pass the ArgParse object around |
| 179 | +#965 @susinmotion |
| 180 | + |
| 181 | +Developer communication has been clarified #969 @sguermond |
| 182 | + |
| 183 | +Tests using the 'fail_okay=true' parameter to `runscript` have been updated to |
| 184 | +confirm the correct error occurred. 3 faulty tests were fixed and the docs were |
| 185 | +clarified #968 #971 @susinmotion |
| 186 | + |
| 187 | +FASTA test added for `extract-long-sequences.py` #901 @jessicamizzi |
100 | 188 |
|
101 | | -Some users have reported that normalize-by-median.py will utilize more memory than it was configured for. This is being investigated in https://github.com/ged-lab/khmer/issues/266 |
| 189 | +'added silly test for empty file warning' #557 @wltrimbl @bocajnotnef |
102 | 190 |
|
103 | | -If your k-mer table is truncated on write, an error may not be reported; this is being tracked in https://github.com/ged-lab/khmer/issues/443. However, khmer will now (correctly) fail when trying to read a truncated file (See #333). |
| 191 | +A couple tests were made more resilient and some extra error checking added in |
| 192 | +CPython land #889 @mr-c |
104 | 193 |
|
105 | | -Some scripts only output FASTA even if given a FASTQ file. This issue is being tracked in https://github.com/ged-lab/khmer/issues/46 |
| 194 | +Copyright added to pull request checklist #940 @sguermond |
106 | 195 |
|
107 | | -A user reported that abundance-dist-single.py fails with small files and many threads. This issue is being tracked in https://github.com/ged-lab/khmer/issues/75 |
| 196 | +`khmer_exception`s are now based on `std::string`s which plugs a memory leak |
| 197 | +\#938 @anotherthomas |
| 198 | + |
| 199 | +Python docstrings were made PEP257 compliant #936 @ahaerpfer |
| 200 | + |
| 201 | +Some C++ comments were converted to be Doxygen compliant #950 @josiahseaman |
| 202 | + |
| 203 | +The counting and presence table warning logic was refactored and centralized |
| 204 | +\#944 @susinmotion |
| 205 | + |
| 206 | +The release checklist was updated to better run the post-install tests #911 |
| 207 | +@mr-c |
| 208 | + |
| 209 | +The unused method `find_all_tags_truncate_on_abundance` was removed from the |
| 210 | +CPython API #924 @anotherthomas |
| 211 | + |
| 212 | +OS X warnings quieted #887 @mr-c |
| 213 | + |
| 214 | +## Known issues: |
| 215 | + |
| 216 | +All of these are pre-existing. |
| 217 | + |
| 218 | +Some users have reported that normalize-by-median.py will utilize more memory |
| 219 | +than it was configured for. This is being investigated in |
| 220 | +https://github.com/ged-lab/khmer/issues/266 |
| 221 | + |
| 222 | +Some scripts only output FASTA even if given a FASTQ file. This issue is being |
| 223 | +tracked in https://github.com/ged-lab/khmer/issues/46 |
108 | 224 |
|
109 | 225 | ## Contributors |
110 | 226 |
|
111 | | -@ctb, @kdmurray91, @drtamermansour, @luizirber, @mr-c, @jessicamizzi, |
112 | | -@standage, @bocajnotnef, \*@alameldin, \*@aditi9783, \*@TheOneHyer, \*@bede, |
113 | | -\*@SchwarzEM, \*@reedacartwright, @Echelon9, @qingpeng, @SherineAwad, @PamelaM |
| 227 | +@ctb, @kdmurray91, @mr-c, @drtamermansour, @luizirber, @standage, @bocajnotnef, |
| 228 | +\*@susinmotion, @jessicamizzi, \*@elmbeech, \*@anotherthomas, \*@sguermond, |
| 229 | +\*@ahaerpfer, \*@alameldin, \*@TheOneHyer, \*@aditi9783, \*@proteasome, |
| 230 | +\*@bede, \*@davelin1, @Echelon9, \*@reedacartwright, @qingpeng, \*@SchwarzEM, |
| 231 | +\*@scottsievert, @PamelaM, @SherineAwad, \*@josiahseaman, \*@lexnederbragt, |
114 | 232 |
|
115 | 233 | \* Indicates new contributors |
116 | 234 |
|
117 | 235 | ## Issue reporters |
118 | 236 |
|
119 | | -@moorepants, @teshomem, @macmanes, @lexnederbragt, @r-gaia-cs |
120 | | - |
| 237 | +@moorepants, @teshomem, @macmanes, @lexnederbragt, @r-gaia-cs, @magentashades |
0 commit comments