MACS3 3.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. MACS3-3.0.0/ChangeLog +2490 -0
  2. MACS3-3.0.0/LICENSE +28 -0
  3. MACS3-3.0.0/MACS3/Commands/__init__.py +0 -0
  4. MACS3-3.0.0/MACS3/Commands/bdgbroadcall_cmd.py +58 -0
  5. MACS3-3.0.0/MACS3/Commands/bdgcmp_cmd.py +91 -0
  6. MACS3-3.0.0/MACS3/Commands/bdgdiff_cmd.py +111 -0
  7. MACS3-3.0.0/MACS3/Commands/bdgopt_cmd.py +67 -0
  8. MACS3-3.0.0/MACS3/Commands/bdgpeakcall_cmd.py +68 -0
  9. MACS3-3.0.0/MACS3/Commands/callpeak_cmd.py +390 -0
  10. MACS3-3.0.0/MACS3/Commands/callvar2_cmd.py +345 -0
  11. MACS3-3.0.0/MACS3/Commands/callvar_cmd.py +352 -0
  12. MACS3-3.0.0/MACS3/Commands/cmbreps_cmd.py +53 -0
  13. MACS3-3.0.0/MACS3/Commands/diffpeak_cmd.py +254 -0
  14. MACS3-3.0.0/MACS3/Commands/filterdup_cmd.py +128 -0
  15. MACS3-3.0.0/MACS3/Commands/hmmratac_cmd.py +548 -0
  16. MACS3-3.0.0/MACS3/Commands/pileup_cmd.py +107 -0
  17. MACS3-3.0.0/MACS3/Commands/predictd_cmd.py +118 -0
  18. MACS3-3.0.0/MACS3/Commands/randsample_cmd.py +116 -0
  19. MACS3-3.0.0/MACS3/Commands/refinepeak_cmd.py +113 -0
  20. MACS3-3.0.0/MACS3/IO/BAM.pyx +695 -0
  21. MACS3-3.0.0/MACS3/IO/BedGraphIO.pyx +92 -0
  22. MACS3-3.0.0/MACS3/IO/GenericAlignmentParser.pyx +1271 -0
  23. MACS3-3.0.0/MACS3/IO/HMMRStates.pyx +62 -0
  24. MACS3-3.0.0/MACS3/IO/OutputWriter.py +284 -0
  25. MACS3-3.0.0/MACS3/IO/Parser.pyx +1481 -0
  26. MACS3-3.0.0/MACS3/IO/PeakIO.pyx +1290 -0
  27. MACS3-3.0.0/MACS3/IO/__init__.py +0 -0
  28. MACS3-3.0.0/MACS3/Signal/BedGraph.pyx +1295 -0
  29. MACS3-3.0.0/MACS3/Signal/BedGraphV2.pyx +1012 -0
  30. MACS3-3.0.0/MACS3/Signal/CallPeakUnit.pyx +1781 -0
  31. MACS3-3.0.0/MACS3/Signal/Clipper.pyx +533 -0
  32. MACS3-3.0.0/MACS3/Signal/FixWidthTrack.pyx +608 -0
  33. MACS3-3.0.0/MACS3/Signal/HMMR_EM.pyx +263 -0
  34. MACS3-3.0.0/MACS3/Signal/HMMR_HMM.pyx +101 -0
  35. MACS3-3.0.0/MACS3/Signal/HMMR_Signal_Processing.pyx +230 -0
  36. MACS3-3.0.0/MACS3/Signal/PairedEndTrack.pyx +584 -0
  37. MACS3-3.0.0/MACS3/Signal/PeakDetect.pyx +396 -0
  38. MACS3-3.0.0/MACS3/Signal/PeakModel.pyx +418 -0
  39. MACS3-3.0.0/MACS3/Signal/PeakVariants.pyx +358 -0
  40. MACS3-3.0.0/MACS3/Signal/Pileup.pyx +753 -0
  41. MACS3-3.0.0/MACS3/Signal/PileupV2.pyx +229 -0
  42. MACS3-3.0.0/MACS3/Signal/PosReadsInfo.pyx +600 -0
  43. MACS3-3.0.0/MACS3/Signal/Prob.pyx +928 -0
  44. MACS3-3.0.0/MACS3/Signal/RACollection.pyx +898 -0
  45. MACS3-3.0.0/MACS3/Signal/ReadAlignment.pyx +529 -0
  46. MACS3-3.0.0/MACS3/Signal/Region.pyx +329 -0
  47. MACS3-3.0.0/MACS3/Signal/ScoreTrack.pyx +1456 -0
  48. MACS3-3.0.0/MACS3/Signal/SignalProcessing.pyx +325 -0
  49. MACS3-3.0.0/MACS3/Signal/SimpleData.pyx +1479 -0
  50. MACS3-3.0.0/MACS3/Signal/UnitigRACollection.pyx +309 -0
  51. MACS3-3.0.0/MACS3/Signal/VariantStat.pyx +461 -0
  52. MACS3-3.0.0/MACS3/Signal/__init__.py +0 -0
  53. MACS3-3.0.0/MACS3/Signal/cPosValCalculation.c +520 -0
  54. MACS3-3.0.0/MACS3/Signal/cPosValCalculation.h +41 -0
  55. MACS3-3.0.0/MACS3/Signal/cPosValCalculation.pxd +27 -0
  56. MACS3-3.0.0/MACS3/Signal/swalign.c +358 -0
  57. MACS3-3.0.0/MACS3/Signal/swalign.h +82 -0
  58. MACS3-3.0.0/MACS3/Signal/test.py +19 -0
  59. MACS3-3.0.0/MACS3/Utilities/Constants.py +15 -0
  60. MACS3-3.0.0/MACS3/Utilities/Logger.py +31 -0
  61. MACS3-3.0.0/MACS3/Utilities/Math.pyx +42 -0
  62. MACS3-3.0.0/MACS3/Utilities/OptValidator.py +916 -0
  63. MACS3-3.0.0/MACS3/Utilities/__init__.py +0 -0
  64. MACS3-3.0.0/MACS3/__init__.py +1 -0
  65. MACS3-3.0.0/MACS3/fermi-lite/bfc.c +683 -0
  66. MACS3-3.0.0/MACS3/fermi-lite/bseq.c +61 -0
  67. MACS3-3.0.0/MACS3/fermi-lite/bubble.c +366 -0
  68. MACS3-3.0.0/MACS3/fermi-lite/example.c +50 -0
  69. MACS3-3.0.0/MACS3/fermi-lite/fml.h +197 -0
  70. MACS3-3.0.0/MACS3/fermi-lite/htab.c +132 -0
  71. MACS3-3.0.0/MACS3/fermi-lite/htab.h +23 -0
  72. MACS3-3.0.0/MACS3/fermi-lite/internal.h +21 -0
  73. MACS3-3.0.0/MACS3/fermi-lite/khash.h +614 -0
  74. MACS3-3.0.0/MACS3/fermi-lite/kmer.h +106 -0
  75. MACS3-3.0.0/MACS3/fermi-lite/kseq.h +248 -0
  76. MACS3-3.0.0/MACS3/fermi-lite/ksort.h +309 -0
  77. MACS3-3.0.0/MACS3/fermi-lite/kstring.h +169 -0
  78. MACS3-3.0.0/MACS3/fermi-lite/ksw.c +359 -0
  79. MACS3-3.0.0/MACS3/fermi-lite/ksw.h +71 -0
  80. MACS3-3.0.0/MACS3/fermi-lite/kthread.c +67 -0
  81. MACS3-3.0.0/MACS3/fermi-lite/kvec.h +110 -0
  82. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/aba.h +208 -0
  83. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/abd.h +354 -0
  84. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/abdl.h +147 -0
  85. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/abs.h +394 -0
  86. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/add.h +653 -0
  87. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/addl.h +127 -0
  88. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/addl_high.h +127 -0
  89. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/addlv.h +317 -0
  90. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/addv.h +447 -0
  91. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/addw.h +222 -0
  92. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/addw_high.h +193 -0
  93. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/and.h +552 -0
  94. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/bic.h +472 -0
  95. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/bsl.h +448 -0
  96. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cagt.h +140 -0
  97. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/ceq.h +655 -0
  98. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/ceqz.h +335 -0
  99. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cge.h +675 -0
  100. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cgez.h +378 -0
  101. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cgt.h +679 -0
  102. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cgtz.h +380 -0
  103. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cle.h +675 -0
  104. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/clez.h +378 -0
  105. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cls.h +148 -0
  106. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/clt.h +677 -0
  107. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cltz.h +263 -0
  108. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/clz.h +423 -0
  109. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cnt.h +145 -0
  110. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/combine.h +343 -0
  111. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/create.h +186 -0
  112. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/cvt.h +492 -0
  113. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/dot.h +171 -0
  114. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/dot_lane.h +196 -0
  115. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/dup_lane.h +702 -0
  116. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/dup_n.h +534 -0
  117. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/eor.h +552 -0
  118. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/ext.h +887 -0
  119. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/get_high.h +260 -0
  120. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/get_lane.h +499 -0
  121. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/get_low.h +276 -0
  122. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/hadd.h +287 -0
  123. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/hsub.h +287 -0
  124. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/ld1.h +399 -0
  125. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/ld3.h +609 -0
  126. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/ld4.h +448 -0
  127. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/max.h +614 -0
  128. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/maxnm.h +215 -0
  129. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/maxv.h +400 -0
  130. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/min.h +660 -0
  131. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/minnm.h +215 -0
  132. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/minv.h +424 -0
  133. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mla.h +530 -0
  134. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mla_n.h +333 -0
  135. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mlal.h +156 -0
  136. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mlal_high.h +156 -0
  137. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mlal_n.h +128 -0
  138. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mls.h +264 -0
  139. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mlsl.h +124 -0
  140. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mlsl_high.h +124 -0
  141. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mlsl_n.h +96 -0
  142. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/movl.h +208 -0
  143. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/movl_high.h +126 -0
  144. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/movn.h +195 -0
  145. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/movn_high.h +125 -0
  146. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mul.h +594 -0
  147. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mul_lane.h +472 -0
  148. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mul_n.h +383 -0
  149. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mull.h +236 -0
  150. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mull_high.h +125 -0
  151. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mull_n.h +158 -0
  152. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/mvn.h +426 -0
  153. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/neg.h +393 -0
  154. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/orn.h +505 -0
  155. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/orr.h +552 -0
  156. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/padal.h +211 -0
  157. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/padd.h +293 -0
  158. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/paddl.h +239 -0
  159. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/pmax.h +253 -0
  160. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/pmin.h +260 -0
  161. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qabs.h +281 -0
  162. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qadd.h +553 -0
  163. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qdmulh.h +125 -0
  164. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qdmull.h +125 -0
  165. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qmovn.h +273 -0
  166. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qmovn_high.h +127 -0
  167. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qmovun.h +159 -0
  168. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qneg.h +301 -0
  169. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qrdmulh.h +165 -0
  170. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qrdmulh_n.h +136 -0
  171. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qshl.h +732 -0
  172. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qsub.h +549 -0
  173. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qtbl.h +455 -0
  174. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/qtbx.h +470 -0
  175. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/rbit.h +165 -0
  176. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/reinterpret.h +3101 -0
  177. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/rev16.h +137 -0
  178. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/rev32.h +235 -0
  179. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/rev64.h +358 -0
  180. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/rhadd.h +406 -0
  181. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/rnd.h +143 -0
  182. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/rshl.h +903 -0
  183. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/rshr_n.h +471 -0
  184. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/rsra_n.h +209 -0
  185. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/set_lane.h +422 -0
  186. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/shl.h +805 -0
  187. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/shl_n.h +560 -0
  188. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/shr_n.h +612 -0
  189. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/sra_n.h +202 -0
  190. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/st1.h +353 -0
  191. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/st1_lane.h +363 -0
  192. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/st3.h +426 -0
  193. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/st4.h +445 -0
  194. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/sub.h +659 -0
  195. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/subl.h +127 -0
  196. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/subw.h +221 -0
  197. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/subw_high.h +222 -0
  198. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/tbl.h +224 -0
  199. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/tbx.h +247 -0
  200. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/trn.h +252 -0
  201. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/trn1.h +500 -0
  202. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/trn2.h +499 -0
  203. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/tst.h +540 -0
  204. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/types.h +683 -0
  205. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/uqadd.h +309 -0
  206. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/uzp.h +252 -0
  207. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/uzp1.h +643 -0
  208. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/uzp2.h +647 -0
  209. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/zip.h +252 -0
  210. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/zip1.h +625 -0
  211. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon/zip2.h +625 -0
  212. MACS3-3.0.0/MACS3/fermi-lite/lib/arm/neon.h +162 -0
  213. MACS3-3.0.0/MACS3/fermi-lite/lib/check.h +276 -0
  214. MACS3-3.0.0/MACS3/fermi-lite/lib/debug-trap.h +85 -0
  215. MACS3-3.0.0/MACS3/fermi-lite/lib/hedley.h +1971 -0
  216. MACS3-3.0.0/MACS3/fermi-lite/lib/simde-align.h +445 -0
  217. MACS3-3.0.0/MACS3/fermi-lite/lib/simde-arch.h +529 -0
  218. MACS3-3.0.0/MACS3/fermi-lite/lib/simde-common.h +848 -0
  219. MACS3-3.0.0/MACS3/fermi-lite/lib/simde-constify.h +397 -0
  220. MACS3-3.0.0/MACS3/fermi-lite/lib/simde-detect-clang.h +109 -0
  221. MACS3-3.0.0/MACS3/fermi-lite/lib/simde-diagnostic.h +397 -0
  222. MACS3-3.0.0/MACS3/fermi-lite/lib/simde-features.h +505 -0
  223. MACS3-3.0.0/MACS3/fermi-lite/lib/simde-math.h +1912 -0
  224. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx.h +6171 -0
  225. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx2.h +5660 -0
  226. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/2intersect.h +250 -0
  227. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/abs.h +562 -0
  228. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/add.h +641 -0
  229. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/adds.h +390 -0
  230. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/and.h +305 -0
  231. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/andnot.h +193 -0
  232. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/avg.h +258 -0
  233. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/blend.h +293 -0
  234. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/broadcast.h +897 -0
  235. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/cast.h +324 -0
  236. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/cmp.h +587 -0
  237. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/cmpeq.h +179 -0
  238. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/cmpge.h +104 -0
  239. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/cmpgt.h +189 -0
  240. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/cmple.h +103 -0
  241. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/cmplt.h +123 -0
  242. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/copysign.h +86 -0
  243. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/cvt.h +122 -0
  244. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/cvts.h +723 -0
  245. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/div.h +162 -0
  246. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/extract.h +198 -0
  247. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/fmadd.h +136 -0
  248. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/fmsub.h +108 -0
  249. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/fnmadd.h +108 -0
  250. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/fnmsub.h +108 -0
  251. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/insert.h +193 -0
  252. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/kshift.h +152 -0
  253. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/load.h +67 -0
  254. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/loadu.h +225 -0
  255. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/lzcnt.h +209 -0
  256. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/madd.h +155 -0
  257. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/maddubs.h +159 -0
  258. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/max.h +587 -0
  259. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/min.h +587 -0
  260. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/mov.h +859 -0
  261. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/mov_mask.h +372 -0
  262. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/movm.h +460 -0
  263. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/mul.h +279 -0
  264. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/mulhi.h +65 -0
  265. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/mulhrs.h +65 -0
  266. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/mullo.h +117 -0
  267. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/negate.h +88 -0
  268. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/or.h +252 -0
  269. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/packs.h +122 -0
  270. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/packus.h +122 -0
  271. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/permutex2var.h +1645 -0
  272. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/permutexvar.h +1180 -0
  273. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/sad.h +77 -0
  274. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/set.h +477 -0
  275. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/set1.h +331 -0
  276. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/set4.h +140 -0
  277. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/setone.h +66 -0
  278. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/setr.h +144 -0
  279. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/setr4.h +140 -0
  280. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/setzero.h +90 -0
  281. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/shuffle.h +176 -0
  282. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/sll.h +247 -0
  283. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/slli.h +179 -0
  284. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/sllv.h +68 -0
  285. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/sqrt.h +127 -0
  286. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/sra.h +81 -0
  287. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/srai.h +70 -0
  288. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/srav.h +67 -0
  289. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/srl.h +216 -0
  290. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/srli.h +180 -0
  291. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/srlv.h +282 -0
  292. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/store.h +93 -0
  293. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/storeu.h +93 -0
  294. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/sub.h +351 -0
  295. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/subs.h +222 -0
  296. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/test.h +193 -0
  297. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/types.h +380 -0
  298. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/unpackhi.h +380 -0
  299. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/unpacklo.h +104 -0
  300. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/xor.h +263 -0
  301. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512/xorsign.h +72 -0
  302. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/avx512.h +108 -0
  303. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/clmul.h +414 -0
  304. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/fma.h +724 -0
  305. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/gfni.h +802 -0
  306. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/mmx.h +2399 -0
  307. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/sse.h +4392 -0
  308. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/sse2.h +7333 -0
  309. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/sse3.h +499 -0
  310. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/sse4.1.h +2216 -0
  311. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/sse4.2.h +365 -0
  312. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/ssse3.h +1032 -0
  313. MACS3-3.0.0/MACS3/fermi-lite/lib/x86/svml.h +12137 -0
  314. MACS3-3.0.0/MACS3/fermi-lite/mag.c +620 -0
  315. MACS3-3.0.0/MACS3/fermi-lite/mag.h +69 -0
  316. MACS3-3.0.0/MACS3/fermi-lite/misc.c +294 -0
  317. MACS3-3.0.0/MACS3/fermi-lite/mrope.c +307 -0
  318. MACS3-3.0.0/MACS3/fermi-lite/mrope.h +114 -0
  319. MACS3-3.0.0/MACS3/fermi-lite/rld0.c +489 -0
  320. MACS3-3.0.0/MACS3/fermi-lite/rld0.h +137 -0
  321. MACS3-3.0.0/MACS3/fermi-lite/rle.c +191 -0
  322. MACS3-3.0.0/MACS3/fermi-lite/rle.h +78 -0
  323. MACS3-3.0.0/MACS3/fermi-lite/rope.c +219 -0
  324. MACS3-3.0.0/MACS3/fermi-lite/rope.h +54 -0
  325. MACS3-3.0.0/MACS3/fermi-lite/unitig.c +455 -0
  326. MACS3-3.0.0/MACS3.egg-info/PKG-INFO +224 -0
  327. MACS3-3.0.0/MACS3.egg-info/SOURCES.txt +357 -0
  328. MACS3-3.0.0/MACS3.egg-info/dependency_links.txt +1 -0
  329. MACS3-3.0.0/MACS3.egg-info/requires.txt +4 -0
  330. MACS3-3.0.0/MACS3.egg-info/top_level.txt +1 -0
  331. MACS3-3.0.0/MANIFEST.in +8 -0
  332. MACS3-3.0.0/PKG-INFO +224 -0
  333. MACS3-3.0.0/README.md +195 -0
  334. MACS3-3.0.0/bin/macs3 +1032 -0
  335. MACS3-3.0.0/docs/Advanced_Step-by-step_Peak_Calling.md +291 -0
  336. MACS3-3.0.0/docs/INSTALL.md +152 -0
  337. MACS3-3.0.0/docs/bdgbroadcall.md +79 -0
  338. MACS3-3.0.0/docs/bdgcmp.md +92 -0
  339. MACS3-3.0.0/docs/bdgdiff.md +209 -0
  340. MACS3-3.0.0/docs/bdgopt.md +80 -0
  341. MACS3-3.0.0/docs/bdgpeakcall.md +109 -0
  342. MACS3-3.0.0/docs/callpeak.md +477 -0
  343. MACS3-3.0.0/docs/callvar.md +230 -0
  344. MACS3-3.0.0/docs/cmbreps.md +64 -0
  345. MACS3-3.0.0/docs/filterdup.md +97 -0
  346. MACS3-3.0.0/docs/hmmratac.md +242 -0
  347. MACS3-3.0.0/docs/pileup.md +74 -0
  348. MACS3-3.0.0/docs/predictd.md +89 -0
  349. MACS3-3.0.0/docs/qa.md +0 -0
  350. MACS3-3.0.0/docs/randsample.md +84 -0
  351. MACS3-3.0.0/docs/refinepeak.md +66 -0
  352. MACS3-3.0.0/docs/testing_in_docker.md +0 -0
  353. MACS3-3.0.0/docs/tutorial.md +0 -0
  354. MACS3-3.0.0/make_docker_base.sh +33 -0
  355. MACS3-3.0.0/pyproject.toml +2 -0
  356. MACS3-3.0.0/requirements.txt +6 -0
  357. MACS3-3.0.0/setup.cfg +6 -0
  358. MACS3-3.0.0/setup.py +157 -0
MACS3-3.0.0/ChangeLog ADDED
@@ -0,0 +1,2490 @@
1
+ 2023-11-15 Tao Liu <vladimir.liu@gmail.com>
2
+ MACS 3.0.0
3
+
4
+ 1) Call variants in peak regions directly from BAM files. The
5
+ function was originally developed under code name SAPPER. Now
6
+ SAPPER has been merged into MACS as the `callvar` command. It can
7
+ be used to call SNVs and small INDELs directly from alignment
8
+ files for ChIP-seq or ATAC-seq. We call `fermi-lite` to assemble
9
+ the DNA sequence at the enriched genomic regions (binding sites or
10
+ accessible DNA) and to refine the alignment when necessary. We
11
+ added `simde` as a submodule in order to support fermi-lite
12
+ library under non-x64 architectures.
13
+
14
+ 2) HMMRATAC module is added as subcommand `hmmratac`. HMMRATAC is
15
+ a dedicated software to analyze ATAC-seq data. The basic idea
16
+ behind HMMRATAC is to digest ATAC-seq data according to the
17
+ fragment length of read pairs into four signal tracks: short
18
+ fragments, mono-nucleosomal fragments, di-nucleosomal fragments
19
+ and tri-nucleosomal fragments. Then integrate the four tracks
20
+ again using Hidden Markov Model to consider three hidden states:
21
+ open region, nucleosomal region, and background region. The
22
+ orginal paper was published in 2019 written in JAVA, by Evan
23
+ Tarbell. We implemented it in Python/Cython and optimize the whole
24
+ process using existing MACS functions and hmmlearn. Now it can run
25
+ much faster than the original JAVA version. Note: evaluation of
26
+ the peak calling results is still underway.
27
+
28
+ 3) Speed/memory optimization. Use the cykhash to replace python
29
+ dictionary. Use buffer (10MB) to read and parse input file (not
30
+ available for BAM file parser). And many optimization tweaks. We
31
+ added memory monitoring to the runtime messages.
32
+
33
+ 4) R wrappers for MACS -- MACSr for bioconductor.
34
+
35
+ 5) Code cleanup. Reorganize source codes.
36
+
37
+ 6) Unit testing.
38
+
39
+ 7) Switch to Github Action for CI, support multi-arch testing
40
+ including x64, armv7, aarch64, s390x and ppc64le. We also test on
41
+ Mac OS 12.
42
+
43
+ 8) MACS tag-shifting model has been refined. Now it will use a
44
+ naive peak calling approach to find ALL possible paired peaks at +
45
+ and - strand, then use all of them to calculate the
46
+ cross-correlation. (a related bug has been fix
47
+ [#442](https://github.com/macs3-project/MACS/issues/442))
48
+
49
+ 9) BAI index and random access to BAM file now is
50
+ supported. [#449](https://github.com/macs3-project/MACS/issues/449).
51
+
52
+ 10) Support of Python > 3.10
53
+ [#498](https://github.com/macs3-project/MACS/issues/498)
54
+
55
+ 11) The effective genome size parameters have been updated
56
+ according to
57
+ deeptools. [#508](https://github.com/macs3-project/MACS/issues/508)
58
+
59
+ 12) Multiple updates regarding dependencies, anaconda built, CI/CD
60
+ process.
61
+
62
+ 13) Cython 3 is supported.
63
+
64
+ 14) Documentations for each subcommand can be found under /docs
65
+
66
+ *Other*
67
+
68
+ 1) Missing header line while no peaks can be called
69
+ [#501](https://github.com/macs3-project/MACS/issues/501)
70
+ [#502](https://github.com/macs3-project/MACS/issues/502)
71
+
72
+ 2) Note: different numpy, scipy, sklearn may give slightly
73
+ different results for hmmratac results. The current standard
74
+ results for automated testing in `/test` directory are from Numpy
75
+ 1.25.1, Scipy 1.11.1, and sklearn 1.3.0.
76
+
77
+ 2020-04-11 Tao Liu <vladimir.liu@gmail.com>
78
+ MACS version 2.2.7.1
79
+
80
+ * hotfix:
81
+
82
+ Add 'wheel' and 'pip' to pyproject.toml so that `pip install` can
83
+ work.
84
+
85
+ 2020-04-10 Tao Liu <vladimir.liu@gmail.com>
86
+ MACS version 2.2.7
87
+
88
+ * Bugs fixed
89
+
90
+ 1) MACS2 has been tested on multiple architectures to make sure it
91
+ can successfully generate consistent results. Currently the
92
+ supported architectures are: AMD64, ARM64, i386, PPC64LE, and
93
+ S390X. Thanks to @mr-c, @junaruga, and @tillea! Related to issue
94
+ #340, #349, #351, and #359; to PR #348, #350, #360, #361, #367,
95
+ and #370. The lesson is that if the project is built on Cython and
96
+ is aimed at memory efficiency, we should specifically define all
97
+ int/float types in pyx files such as int8_t or uint32_t using
98
+ either libc or numpy (c version) instead of relying on Cython
99
+ types such as short, long, double.
100
+
101
+ 2) MACS2 setup script will check numpy and install numpy if
102
+ necessary. PR #378, issue #364
103
+
104
+ 3) `bdgbroadcall` command will correctly add the score column (5th
105
+ column). The score (5th) column contains 10 times of the average
106
+ score in the broad region. PR #373, issue #362
107
+
108
+ 4) The missing test on `bdgopt` subcommand has been added. PR #363
109
+
110
+ 5) The obsolete option `--ratio` from `callpeak` subcommand has
111
+ been removed. PR #369, issue #366
112
+
113
+ 6) Fixed the incorrect description in README on the 'maximum
114
+ length of broad region is 4 times of d' to 'maximum gap for
115
+ merging broad regions is 4 times of tag size by default'. PR #380,
116
+ issue #365.
117
+
118
+ * Other
119
+
120
+ 1) CODE OF CONDUCT document has been added to MACS2 github
121
+ repository. PR #358
122
+
123
+ 2019-12-12 Tao Liu <vladimir.liu@gmail.com>
124
+ MACS version 2.2.6
125
+
126
+ * New Features
127
+
128
+ 1) Speed up MACS2. Some programming tricks and code cleanup. The
129
+ filter_dup function replaces separate_dups. The later one was
130
+ implemented for potentially putting back duplicate reads in
131
+ certain downstream analysis. However such analysis hasn't been
132
+ implemented. Optimize the speed of writing bedGraph
133
+ files. Optimize BAM and BAMPE parsing with pointer casting instead
134
+ of python unpack.
135
+
136
+ 2) The comment lines in the headers of BED or SAM files will be
137
+ correctly skipped. However, MACS2 won't check comment lines in the
138
+ middle of the file.
139
+
140
+ * Bugs fixed
141
+
142
+ 1) Cutoff-analysis in callpeak command. #341
143
+
144
+ 2) Issues related to SAMParser and three ELAND Parsers are
145
+ fixed. #347
146
+
147
+ * Other
148
+
149
+ 1) cmdlinetest script in test/ folder has been updated to: 1. test
150
+ cutoff-analysis with callpeak cmd; 2. output the 2 lines before
151
+ and after the error or warning message during tests; 3. output
152
+ only the first 10 lines if the difference between test result and
153
+ standard result can be found; 4. prockreport monitor CPU time and
154
+ memory usage in 1 sec interval -- a bit more accurate.
155
+
156
+ 2) Python3.5 support is removed. Now MACS2 requires Python>=3.6.
157
+
158
+ 2019-10-31 Tao Liu <vladimir.liu@gmail.com>
159
+ MACS version 2.2.5 (Py3 speed up)
160
+
161
+ * Features added
162
+
163
+ 1) *Github code only and Not included in MACS2 release* New
164
+ testing data for performance test. An subsampled ENCODE2 CTCF
165
+ ChIP-seq dataset, including 5million ChIP reads and 5 million
166
+ control reads, has been included in the test folder for testing
167
+ CPU and memory usage (i.e. 5M test). Several related scripts ,
168
+ including `prockreport` for output cpu memory usage, `pyprofile`
169
+ and `pyprofile_stat` for debuging and profiling MACS2 codes, have
170
+ been included.
171
+
172
+ 2) Speed up pvalue-qvalue checkup (pqtable checkup) #335 #338.
173
+ The old hashtable.pyx implementation copied from Pandas (very old
174
+ version) doesn't work well in Python3+Cython. It slows down the
175
+ pqtable checkup using the identical Cython codes as in
176
+ v2.1.4. While running 5M test, the `__getitem__` function in the
177
+ hashtable.pyx took 3.5s with 37,382,037 calls in MACS2 v2.1.4, but
178
+ 148.6s with the same number of calls in MACS2 v2.2.4. As a
179
+ consequence, the standard python dictionary implementation has
180
+ replaced hashtable.pyx for pqtable checkup. Now MACS2 runs a bit
181
+ faster than py2 version, but uses a bit more memory. In general,
182
+ v2.2.5 can finish 5M reads test in 20% less time than MACS2
183
+ v2.1.4, but use 15% more memory.
184
+
185
+ * Bug fixed
186
+
187
+ 1) More Python3 related fixes, e.g. the return value of keys from
188
+ py3 dict. #333 #337
189
+
190
+
191
+ 2019-10-01 Tao Liu <vladimir.liu@gmail.com>
192
+ MACS version 2.2.4 (Python3)
193
+
194
+ * Features added
195
+
196
+ 1) First Python3 version MACS2 released.
197
+
198
+ 2) Version number 2.2.X will be used for MACS2 in Python3, in
199
+ parallel to 2.1.X.
200
+
201
+ 3) More comprehensive test.sh script to check the consistency of
202
+ results from Python2 version and Python3 version.
203
+
204
+ 4) Simplify setup.py script since the newest version transparently
205
+ supports cython. And when cython is not installed by the user,
206
+ setup.py can still compile using only C codes.
207
+
208
+ 5) Fix Signal.pyx to use np.array instead of np.mat.
209
+
210
+ 2019-09-30 Tao Liu <vladimir.liu@gmail.com>
211
+ MACS version 2.1.4
212
+
213
+ * Features added
214
+
215
+ Github Actions is used together with Travis CI for testing and
216
+ deployment.
217
+
218
+ * Bugs fixed
219
+
220
+ PR #322:
221
+
222
+ 1) #318 Random score in bdgdiff output. It turns out the sum_v is
223
+ not initialized as 0 before adding. Potential bugs are fixed in
224
+ other functions in ScoreTrack and CallPeakUnit codes.
225
+
226
+ 2) #321 Cython dependency in setup.py script is removed. And place
227
+ 'cythonzie' call to the correct position.
228
+
229
+ 3) A typo is fixed in Github Actions script.
230
+
231
+ 2019-09-19 Tao Liu <vladimir.liu@gmail.com>
232
+ MACS version 2.1.3.3
233
+
234
+ * Features added
235
+
236
+ 1) Support Docker auto-deploy. PR #309
237
+
238
+ 2) Support Travis CI auto-testing, update unit-testing
239
+ scripts, and enable subcommand testing on small datasets.
240
+
241
+ 3) Update README documents. #297 PR #306
242
+
243
+ 4) `cmbreps` supports more than 2 replicates. Merged from PR #304
244
+ @Maarten-vd-Sande and PR #307 (our own chi-sq test code)
245
+
246
+ 5) `--d-min` option is added in `callpeak` and `predictd`, to
247
+ exclude predictions of fragment size smaller than the given
248
+ value. Merged from PR #267 @shouldsee.
249
+
250
+ 6) `--buffer-size` option is added in `predictd`, `filterdup`,
251
+ `pileup` and `refinepeak` subcommands. Users can use this option
252
+ to decrease memory usage while there are a large number of contigs
253
+ in the data. Also, now `callpeak`, `predictd`, `filterdup`,
254
+ `pileup` and `refinepeak` will suggest users to tweak
255
+ `--buffer-size` while catching a MemoryError. #313 PR #314
256
+
257
+ * Bugs fixed
258
+
259
+ 1) #265 Fixed a bug where the pseudocount hasn't been applied
260
+ while calculating p-value score in ScoreTrack object.
261
+
262
+ 2) Fixed bdgbroadcall so that it will report those broad peaks
263
+ without strong peak inside, a consistent behavior as `callpeak
264
+ --broad`.
265
+
266
+ 3) Rename COPYING to LICENSE.
267
+
268
+ 2018-10-17 Tao Liu <vladimir.liu@gmail.com>
269
+ MACS version 2.1.2
270
+
271
+ * New features
272
+
273
+ 1) Added missing BEDPE support. And enable the support for BAMPE
274
+ and BEDPE formats in 'pileup', 'filterdup' and 'randsample'
275
+ subcommands. When format is BAMPE or BEDPE, The 'pileup' command
276
+ will pile up the whole fragment defined by mapping locations of
277
+ the left end and right end of each read pair. Thank @purcaro
278
+
279
+ 2) Added options to callpeak command for tweaking max-gap and
280
+ min-len during peak calling. Thank @jsh58!
281
+
282
+ 3) The callpeak option "--to-large" option is replaced with
283
+ "--scale-to large".
284
+
285
+ 4) The randsample option "-t" has been replaced with "-i".
286
+
287
+ * Bug fixes
288
+
289
+ 1) Fixed memory issue related to #122 and #146
290
+
291
+ 2) Fixed a bug caused by a typo. Related to #249, Thank @shengqh
292
+
293
+ 3) Fixed a bug while setting commandline qvalue cutoff.
294
+
295
+ 4) Better describe the 5th column of narrowPeak. Thank @alexbarrera
296
+
297
+ 5) Fixed the calculation of average fragment length for paired-end
298
+ data. Thank @jsh58
299
+
300
+ 6) Fixed bugs caused by khash while computing p/q-value and log
301
+ likelihood ratios. Thank @jsh58
302
+
303
+ 7) More spelling tweaks in source code. Thank @mr-c
304
+
305
+ 2016-03-09 Tao Liu <vladimir.liu@gmail.com>
306
+ MACS version 2.1.1 20160309
307
+
308
+ * Retire the tag:rc.
309
+
310
+ * Fixed spelling. Merged pull request #120. Thank @mr-c!
311
+
312
+ * Change filtering criteria for reading BAM/SAM files
313
+
314
+ Related to callpeak and filterdup commands. Now the
315
+ reads/alignments flagged with 1028 or 'PCR/Optical duplicate' will
316
+ still be read although MACS2 may decide them as duplicates
317
+ later. Related to old issue #33. Sorry I forgot to address it for
318
+ years!
319
+
320
+ 2016-02-26 Tao Liu <vladimir.liu@gmail.com>
321
+ MACS version 2.1.1 20160226 (tag:rc Zhengyue)
322
+
323
+ * Bug fixes
324
+
325
+ 1) Now "-Ofast" has been replaced by "-O3 --ffast-math", because
326
+ the former option is not supported by older GCC. Related to issues
327
+ #91, #109.
328
+
329
+ 2) Issue #108 is fixed. If no peak can be found in a chromosome,
330
+ the PeakIO won't throw an error.
331
+
332
+ * New features
333
+
334
+ 1) callpeak
335
+
336
+ a) A more flexible format, BEDPE, is supported. Now users can
337
+ define the left and right position of the ChIPed fragment, and
338
+ MACS2 will skip model building and directly pileup the
339
+ fragments. Related to issue #112.
340
+
341
+ b) The 'tempdir' can be specified, to save cached pileup
342
+ tracks. Originially, the temporary files were stored in
343
+ /tmp. Thank @daler! Related to issues #97 and #105.
344
+
345
+ 2) bdgopt
346
+
347
+ New operations are added, to calculate the maximum or minimum value between
348
+ values in BEDGRAPH and given value.
349
+
350
+ 3) bdgcmp
351
+
352
+ New method is added, to calculate the maximum value between values
353
+ defined in two BEDGRAPH files.
354
+
355
+ 2015-12-22 Tao Liu <vladimir.liu@gmail.com>
356
+ MACS version 2.1.0 20151222 (tag:rc Dongzhi)
357
+
358
+ * Bug fixes
359
+
360
+ 1) Fix a bug while dealing with some chromosomes only containing
361
+ one read (pair). The size of dup_plus/dup_minus arrays after
362
+ filtering dups should +1.
363
+
364
+ 2) Fix a bug related to the broad peak calling function in
365
+ previous versions. The gaps were miscalculated, so segmented weak
366
+ broad calls may be reported, and sometimes you would see peaks
367
+ with lower than cutoff values in the output files.
368
+
369
+ 3) "Potentially" Fixed issue #105 on temporary cache files, need
370
+ further followup.
371
+
372
+
373
+ 2015-07-31 Tao Liu <vladimir.liu@gmail.com>
374
+ MACS version 2.1.0 20150731 (tag:rc)
375
+
376
+ * Bug fixes
377
+
378
+ 1) Fixed issue #76: information about broad/narrow cutoff will be
379
+ correctly displayed.
380
+
381
+ 2) Fixed issue #79: bdgopt extparam option is fixed.
382
+
383
+ 3) Fixed issue #87: reference to cProb has been fixed as 'Prob'
384
+ for filterdup command.
385
+
386
+ 4) Fixed issue #78, #88 and similar issue reported in MACS google
387
+ group: MACS2 now can correctly deal with multiple alignment files
388
+ for -t or -c. The 'finalize' function will be correctly
389
+ called. Multiple files option is enabled for filterdup,
390
+ randsample, predictd, pileup and refinepeak commands.
391
+
392
+ 5) A related issue to #88, when BAMPE mode is used, PE pairs will
393
+ be sorted by leftmost then rightmost ends.
394
+
395
+ 6) Fixed issue #86: A wrong use of 'ndarray' to create Numpy
396
+ array. This will cause 'callpeak --nolambda' hang forever while
397
+ calculating pvalues and qvalues.
398
+
399
+ 2015-04-20 Tao Liu <vladimir.liu@gmail.com>
400
+ MACS version 2.1.0 20150420 (tag:rc)
401
+
402
+ * New commands
403
+
404
+ 1) bdgopt: some convenient functions to modify bedGraph files.
405
+
406
+ 2) cmbreps: Combine scores from two replicates. Including three
407
+ methods: 1. take the maximum; 2. take the average; 3. use Fisher's
408
+ method to combine two p-value scores. After that, user can use
409
+ bdgpeakcall to call peaks on combined scores.
410
+
411
+ * New features
412
+
413
+ 1) callpeak and bdgpeakcall now can try to analyze the
414
+ relationship between p-values and number/length of peaks then
415
+ generate a summary to help users decide an appropriate cutoff.
416
+
417
+ 2) callpeak now can accept fold-enrichment cutoff as a filter for
418
+ final peak calls.
419
+
420
+ * Performance
421
+
422
+ Now MACS2 runs about 3X as fast as previous version. Trade
423
+ clean python codes for speed... Now while processing 50M ChIP vs
424
+ 50M control, it will take only 10 minutes.
425
+
426
+ * Bug fixes
427
+
428
+ 1) Sampling function in BAMPE mode.
429
+
430
+ 2) Callpeak while there are >= 2 input files for -t or -c.
431
+
432
+ 3) While reading BAM/SAM, those secondary or supplementary
433
+ alignments will be correctly skipped.
434
+
435
+ 4) Fixed issue #33: Explanation is added to callpeak --keep-dup
436
+ option that MACS2 will discard those SAM/BAM alignments with bit
437
+ 1024 no matter how --keep-dup is set.
438
+
439
+ 5) Fixed issue #49: setuptools is used intead of distutils
440
+
441
+ 6) Fixed issue #51: fix the problem when using --trackline
442
+ argument when control file is absent.
443
+
444
+ 7) Fixed issue #53: Use Use SAM/BAM CIGAR to find the 5' end of
445
+ read mapped to minus strand. Previous implementation will find
446
+ incorrect 5' end if there is indel in alignment.
447
+
448
+ 8) Fixed issue #56: An incorrect sorting method used for BAMPE
449
+ mode which will cause incorrect filtering of duplicated reads. Now
450
+ fixed.
451
+
452
+ 9) Issue #63: Merged from jayhesselberth@github, extsize now can
453
+ be 1.
454
+
455
+ 10) Issue #71: Merged from aertslab@github, close file descriptor
456
+ after creating them with mkstemp().
457
+
458
+ 2014-06-16 Tao Liu <vladimir.liu@gmail.com>
459
+ MACS version 2.1.0 20140616 (tag:rc)
460
+
461
+ * callpeak module
462
+
463
+ "--ratio" is added to manually assign the scaling factor of ChIP
464
+ vs control, e.g. from NCIS. Thank Colin D and Dietmar Rieder for
465
+ implementing the patch file!
466
+
467
+ "--shift" is added to move cutting ends (5' end of reads) around,
468
+ in order to process DNAse-Seq data, e.g., use "--shift -100
469
+ --extsize 200" to get 200bps fragments around 5' ends. For general
470
+ ChIP-Seq data analysis, this option should be always set as
471
+ 0. Thank Xi Chen and Anshul Kundaje for the discussions in user
472
+ group!
473
+
474
+ ** Do not output negative fragment size from cross-correlation
475
+ analysis. Thank Alvin Qin for the feedback!
476
+
477
+ ** --half-ext and --control-shift are removed. For complex read
478
+ shifting and extending, combine '--shift' and '--extsize'
479
+ options. For comparing two conditions, use 'bdgdiff' module
480
+ instead.
481
+
482
+ ** a bug is fixed to output the last pileup value in bdg file
483
+ correctly.
484
+
485
+ * filterdup
486
+
487
+ A 'dry-run' option is added to only output numbers, including the
488
+ number of allowed duplicates, the total number of reads before and
489
+ after filtering duplicates and the estimated duplication
490
+ rate. Thank John Urban for the suggestion!
491
+
492
+
493
+ 2013-12-16 Tao Liu <vladimir.liu@gmail.com>
494
+ MACS version 2.0.10 20131216 (tag:alpha)
495
+
496
+ bug fixes and tweaks
497
+
498
+ * We changed license from Artistic License to 3-clauses BSD license.
499
+
500
+ Yes. Simpler the better.
501
+
502
+ * Process paired-end data with "-f BAMPE" without control
503
+
504
+ * GappedPeak output for --broad option has been fixed again to be
505
+ consistent with official UCSC format. We add 1bp pseudo-block to
506
+ left and/or right of broad region when necessary, so that you can
507
+ virtualize the regions without strong enrichment inside
508
+ successfully. In downstream analysis except for virtualization,
509
+ you may need to remove all 1bps blocks from gappedPeak file.
510
+
511
+ * diffpeak subcommand is temporarily disabled. Till we
512
+ re-implement it.
513
+
514
+ 2013-10-28 Tao Liu <vladimir.liu@gmail.com>
515
+ MACS version 2.0.10 20131028 (tag:alpha)
516
+
517
+ * callpeak --call-summits improvement
518
+
519
+ The smoothing window length has been fixed as fragment length
520
+ instead of short read length. The larger smoothing window will
521
+ grant better smoothing results and better sub-peak summits
522
+ detection.
523
+
524
+ * --outdir and --ofile options for almost all commands
525
+
526
+ Thank Björn Grüning for initially implementing these options!
527
+ Now, MACS2 will save results into a specified
528
+ directory by '--outdir' option, and/or save result into a
529
+ specified file by '--ofile' option. Note, in case '--ofile' is
530
+ available for a subcommand, '-o' now has been adjusted to be the
531
+ same as '--ofile' instead of '--o-prefix'.
532
+
533
+ Here is the list of changes. For more detail, use 'macs2 xxx -h'
534
+ for each subcommand:
535
+
536
+ ** callpeak: --outdir
537
+ ** diffpeak: Not implemented
538
+ ** bdgpeakcall: --outdir and --ofile
539
+ ** bdgbroadcall: --outdir and --ofile
540
+ ** bdgcmp: --outdir and --ofile. While --ofile is used, the number
541
+ and the order of arguments for --ofile must be the same as for -m.
542
+ ** bdgdiff: --outdir and --ofile
543
+ ** filterdup: --outdir
544
+ ** pileup: --outdir
545
+ ** randsample: --outdir
546
+ ** refinepeak: --outdir and --ofile
547
+
548
+
549
+ 2013-09-15 Tao Liu <vladimir.liu@gmail.com>
550
+ MACS version 2.0.10 20130915 (tag:alpha)
551
+
552
+ * callpeak Added a new option --buffer-size
553
+
554
+ This option is to tweak a previously hidden parameter that
555
+ controls the steps to increase array size for storing alignment
556
+ information. While in some rare cases, the number of
557
+ chromosomes/contigs/scaffolds is huge, the original default
558
+ setting will cause a huge memory waste. In these cases, we
559
+ recommend to decrease --buffer-size (e.g., 1000) to save memory,
560
+ although the decrease will slow process to read alignment files.
561
+
562
+ * an optimization to speed up pvalue-qvalue statistics
563
+
564
+ Previously, it took a hour to prepare p-q-table for 65M vs 65M
565
+ human TF library, and now it will take 10 minutes. It was due to a
566
+ single line of code to get a value from a numpy array ...
567
+
568
+ * fixed logLR bugs.
569
+
570
+ 2013-07-31 Tao Liu <vladimir.liu@gmail.com>
571
+ MACS version 2.0.10 20130731 (tag:alpha)
572
+
573
+ * callpeak --call-summits
574
+
575
+ Fix bugs causing callpeak --call-summits option generating extra
576
+ number of peaks and inconsistent peak boundaries comparing to
577
+ default option. Thank Ben Levinson!
578
+
579
+ * bdgcmp output
580
+
581
+ Fix bugs causing bdgcmp output logLR all in positive values. Now
582
+ 'depletion' can be correctly represented as negative values.
583
+
584
+ * bdgdiff
585
+
586
+ Fix the behavior of bdgdiff module. Now it can take four
587
+ bedGraph files, then use logLR as cutoff to call differential
588
+ regions. Check command line of bdgdiff for detail.
589
+
590
+ 2013-07-13 Tao Liu <vladimir.liu@gmail.com>
591
+ MACS version 2.0.10 20130713 (tag:alpha)
592
+
593
+ * fix bugs while output broadPeak and gappedPeak.
594
+
595
+ Note. Those weak broad regions without any strong enrichment
596
+ regions inside won't be saved in gappedPeak file.
597
+
598
+ * bdgcmp -T and -C are merged into -S and description is updated.
599
+
600
+ Now, you can use it to override SPMR values in your input for
601
+ bdgcmp. To use SPMR (from 'callpeak --SPMR -B') while calculating
602
+ statistics will cause weird results ( in most cases, lower
603
+ significancy), and won't be consistent with MACS2 callpeak
604
+ behavior. So if you have SPMR bedGraphs, input the smaller/larger
605
+ sample size in MILLION according to 'callpeak --to-large' option.
606
+
607
+ 2013-07-10 Tao Liu <vladimir.liu@gmail.com>
608
+ MACS version 2.0.10 20130710 (tag:alpha)
609
+
610
+ * fix BED style output format of callpeak module:
611
+
612
+ 1) without --broad: narrowPeak (BED6+4) and BED for summit will be
613
+ the output. Old BED format file won't be saved.
614
+
615
+ 2) with --broad: broadPeak (BED6+3) for broad region and
616
+ gappedPeak (BED12+3) for chained enriched regions will be the
617
+ output. Old BED format, narrowPeak format, summit file won't be
618
+ saved.
619
+
620
+ * bdgcmp now can accept list of methods to calculate scores. So
621
+ you can run it once to generate multiple types of scores. Thank
622
+ Jon Urban for this suggestion!
623
+
624
+ * C codes are re-generated through Cython 0.19.1.
625
+
626
+ 2013-05-21 Tao Liu <vladimir.liu@gmail.com>
627
+ MACS version 2.0.10 20130520 (tag:alpha)
628
+
629
+ * broad peak calling modules are modified in order to report all
630
+ relexed regions even there is no strong enrichment inside.
631
+
632
+ 2013-05-01 Tao Liu <vladimir.liu@gmail.com>
633
+ MACS version 2.0.10 20130501 (tag:alpha)
634
+
635
+ * Memory usage is decreased to about 1/4-1/5 of previous usage
636
+ Now, the internal data structure and algorithm are both
637
+ re-organized, so that intermediate data wouldn't be saved in
638
+ memory. Intead they will be calculated on the fly. New MACS2 will
639
+ spend longer time (1.5 to 2 times) however it will use less memory
640
+ so can be more usable on small mem servers.
641
+
642
+ * --seed option is added to callpeak and randsample commands
643
+ Thank Mathieu Gineste for this suggestion!
644
+
645
+ 2013-03-05 Tao Liu <vladimir.liu@gmail.com>
646
+ MACS version 2.0.10 20130306 (tag:alpha)
647
+
648
+ * diffpeak module New module to detect differential binding sites
649
+ with more statistics.
650
+
651
+ * Introduced --refine-peaks
652
+ Calculates reads balancing to refine peak summits
653
+
654
+ * Ouput file names prefix
655
+ Correct encodePeak to narrowPeak, broadPeak to bed12.
656
+
657
+ 2012-09-13 Benjamin Schiller <benjamin.schiller@ucsf.edu>, Tao Liu <taoliu@jimmy.harvard.edu>
658
+ MACS version 2.0.10 (tag:alpha not released)
659
+
660
+ * Introduced BAMPEParser
661
+ Reads PE data directly, requires bedtools for now
662
+
663
+ * Introduced --call-summits
664
+ Uses signal processing methods to call overlapping peaks
665
+
666
+ * Added --no-trackline
667
+ By default, files have descriptive tracklines now
668
+
669
+ * new refinepeak command (experimental)
670
+ This new function will use a similar method in SPP (wtd), to
671
+ analyze raw tag distribution in peak region, then redefine the
672
+ peak summit where plus and minus tags are evenly distributed
673
+ around.
674
+
675
+ * Changes to output *
676
+ cPeakDetect.pyx has full support for new print/write methods and
677
+ --call-peaks, BAMPEParser, and use of paired-end data
678
+
679
+ * Parser optimization
680
+
681
+ cParser.pyx is rewritten to use io.BufferedReader to speed
682
+ up. Speed is doubled.
683
+
684
+ Code is reorganized -- most of functions are inherited from
685
+ GenericParser class.
686
+
687
+ * Use cross-correlation to calculate fragment size
688
+
689
+ First, all pairs will be used in prediction for fragment
690
+ size. Previously, only no more than 1000 pairs are used. Second,
691
+ cross-correlation is used to find the best phase difference
692
+ between + and - tag pileups.
693
+
694
+ * Speed up p-value and q-value calculation
695
+
696
+ This part is ten times faster now. I am using a dictionary to
697
+ cache p-value results from Poisson CDF function. A bit more memory
698
+ will be used to increase speed. I hope this dictionary would not
699
+ explode since the possible pairs of ChIP signal and control lambda
700
+ are hugely redundant. Also, I rewrited part of q-value
701
+ calculation.
702
+
703
+ * Speed up peak detection
704
+
705
+ This part is about hundred of times faster now. Optimizations
706
+ include using Numpy functions as much as possible, and making loop
707
+ body as small as possible.
708
+
709
+ * Post-processing on differential calls
710
+
711
+ After macs2diff finds differential binding sites between two
712
+ conditions, it will try to annotate the peak calls from one of two
713
+ conditions, describe the changes ...
714
+
715
+ * Fragment size prediction in macs2diff
716
+
717
+ Now by default, macs2diff will try to use the average fragment
718
+ size from both condition 1 and condition 2 for tag extension and
719
+ peak calling. Previously, by default, it will use different sizes
720
+ unless --nomodel is specified.
721
+
722
+ Technically, I separate model building processes out. So macs2diff
723
+ will build fragment sizes for condition 1 and 2 in parallel (2
724
+ processes maximum), then perform 4-way comparisons in parallel (4
725
+ processes maximum).
726
+
727
+ * Diff score
728
+
729
+ Combine two p/qscore tracks together. At regions where condition 1
730
+ is higher than condition 2, score would be positive, otherwise,
731
+ negative.
732
+
733
+ * SAMParser and BAMParser
734
+
735
+ Bug fixed for paired-end sequencing data.
736
+
737
+ * BedGraph.pyx
738
+
739
+ Fixed a bug while calling peaks from BedGraph file. It previously
740
+ mistakenly output same peaks multiple times at the end of
741
+ chromosome.
742
+
743
+ 2011-11-2 Tao Liu <taoliu@jimmy.harvard.edu>
744
+ MACS version 2.0.9 (tag:alpha)
745
+
746
+ * Auto fixation on predicted d is turned off by default!
747
+
748
+ Previous --off-auto is now default. MACS will not automatically
749
+ fix d less than 2 times of tag size according to
750
+ --shiftsize. While tag size is getting longer nowadays, it would
751
+ be easier to have d less than 2 times of tag size, however d may
752
+ still be meaningful and useful. Please judge it using your own
753
+ wisdom.
754
+
755
+ * Scaling issue
756
+
757
+ Now, the default scaling while treatment and input are unbalanced
758
+ has been adjusted. By default, larger sample will be scaled down
759
+ linearly to match the smaller sample. In this way, background
760
+ noise will be reduced more than real signals, so we expect to have
761
+ more specific results than the other way around (i.e. --to-large
762
+ is set).
763
+
764
+ Also, an alternative option to randomly sample larger data
765
+ (--down-sample) is provided to replace default linear
766
+ scaling. However, this option will cause results irresproducible,
767
+ so be careful.
768
+
769
+ * randsample script
770
+
771
+ A new script 'randsample' is added, which can randomly sample
772
+ certain percentage or number of tags.
773
+
774
+ * Peak summit
775
+
776
+ Now, MACS will decide peak summits according to pileup height
777
+ instead of qvalue scores. In this way, the summit may be more
778
+ accurate.
779
+
780
+ * Diff score
781
+
782
+ MACS calculate qvalue scores as differential scores. When compare
783
+ two conditions (saying A and B), the maximum qscore for comparing
784
+ A to B -- maxqscore_a2b, and for comparing B to A --maxqscore_b2a
785
+ will be computed. If maxqscore_a2b is bigger, the diff score is
786
+ +maxqscore_a2b, otherwise, diff score is -1*maxqscore_b2a.
787
+
788
+ 2011-09-15 Tao Liu <taoliu@jimmy.harvard.edu>
789
+ MACS version 2.0.8 (tag:alpha)
790
+
791
+ * bin/macs2, bin/bdgbroadcall, MACS2/IO/cScoreTrack.pyx, MACS2/IO/cBedGraph.pyx
792
+
793
+ New script bdgbroadcall and the extra option '--broad' for macs2
794
+ script, can be used to call broad regions with a loose cutoff to
795
+ link nearby significant regions. The output is represented as
796
+ BED12 format.
797
+
798
+ * MACS2/IO/cScoreTrack.pyx
799
+
800
+ Fix q-value calculation to generate forcefully monotonic values.
801
+
802
+ * bin/eland*2bed, bin/sam2bed and bin/filterdup
803
+
804
+ They are combined to one more powerful script called
805
+ "filterdup". The script filterdup can filter duplicated reads
806
+ according to sequencing depth and genome size. The script can also
807
+ convert any format supported by MACS to BED format.
808
+
809
+ 2011-08-21 Tao Liu <taoliu@jimmy.harvard.edu>
810
+ MACS version 2.0.7 (tag:alpha)
811
+
812
+ * bin/macsdiff renamed to bin/bdgdiff
813
+
814
+ Now this script will work as a low-level finetuning tool as bdgcmp
815
+ and bdgpeakcall.
816
+
817
+ * bin/macs2diff
818
+
819
+ A new script to take treatment and control files from two
820
+ condition, calculate fragment size, use local poisson to get
821
+ pvalues and BH process to get qvalues, then combine 4-ways result
822
+ to call differential sites.
823
+
824
+ This script can use upto 4 cpus to speed up 4-ways calculation. (
825
+ I am trying multiprocessing in python. )
826
+
827
+ * MACS2/Constants.py, MACS2/IO/cBedGraph.pyx,
828
+ MACS2/IO/cScoreTrack.pyx, MACS2/OptValidator.py,
829
+ MACS2/PeakModel.py, MACS2/cPeakDetect.pyx
830
+
831
+ All above files are modified for the new macs2diff script.
832
+
833
+ * bin/macs2, bin/macs2diff, MACS2/OptValidator.py
834
+
835
+ Now q-value 0.01 is the default cutoff. If -p is specified,
836
+ p-value cutoff will be used instead.
837
+
838
+ 2011-07-25 Tao Liu <vladimir.liu@gmail.com>
839
+ MACS version 2.0.6 (tag:alpha)
840
+
841
+ * bin/macsdiff
842
+
843
+ A script to call differential regions. A naive way is introduced
844
+ to find the regions where:
845
+
846
+ 1. signal from condition 1 is larger than input 1 and condition 2 --
847
+ unique region in condition 1;
848
+ 2. signal from condition 2 is larger than input 2 and condition 1
849
+ -- unique region in condition 2;
850
+ 3. signal from condition 1 is larger than input 1, signal from
851
+ condition 2 is larger than input 2, however either signal from
852
+ condition 1 or 2 is not larger than the other.
853
+
854
+ Here 'larger' means the pvalue or qvalue from a Poisson test is
855
+ under certain cutoff.
856
+
857
+ (I will make another script to wrap up mulitple scripts for
858
+ differential calling)
859
+
860
+ 2011-07-07 Tao Liu <vladimir.liu@gmail.com>
861
+ MACS version 2.0.5 (tag:alpha)
862
+
863
+ * bin/macs2, MACS2/cPeakDetect.py, MACS2/IO/cScoreTrack.pyx,
864
+ MACS2/IO/cPeakIO.pyx
865
+
866
+ Use hash to store peak information. Add back the feature to deal
867
+ with data without control.
868
+
869
+ Fix bug which incorrectly allows small peaks at the end of
870
+ chromosomes.
871
+
872
+ * bin/bdgpeakcall, bin/bdgcmp
873
+
874
+ Fix bugs. bdgpeakcall can output encodePeak format.
875
+
876
+ 2011-06-22 Tao Liu <taoliu@jimmy.harvard.edu>
877
+ MACS version 2.0.4 (tag:alpha)
878
+
879
+ * cPeakDetect.py
880
+
881
+ Fix a bug, correctly assign lambda_bg while --to-small is
882
+ set. Thanks Junya Seo!
883
+
884
+ Add rank and num of bp columns to pvalue-qvalue table.
885
+
886
+ * cScoreTrack.py
887
+
888
+ Fix bugs to correctly deal with peakless chromosomes. Thanks
889
+ Vaibhav Jain!
890
+
891
+ Use AFDR for independent tests instead.
892
+
893
+ * encodePeak
894
+
895
+ Now MACS can output peak coordinates together with pvalue, qvalue,
896
+ summit positions in a single encodePeak format (designed for
897
+ ENCODE project) file. This file can be loaded to UCSC
898
+ browser. Definition of some specific columns are: 5th:
899
+ int(-log10pvalue*10), 7th: fold-change, 8th: -log10pvalue, 9th:
900
+ -log10qvalue, 10th: relative summit position to peak start.
901
+
902
+
903
+ 2011-06-19 Tao Liu <taoliu@jimmy.harvard.edu>
904
+ MACS version 2.0.3 (tag:alpha)
905
+
906
+ * Rich output with qvalue, fold enrichment, and pileup height
907
+
908
+ Calculate q-values using a refined Benjamini–Hochberg–Yekutieli
909
+ procedure:
910
+
911
+ http://en.wikipedia.org/wiki/False_discovery_rate#Dependent_tests
912
+
913
+ Now we have a similiar xls output file as before. The differences
914
+ from previous file are:
915
+
916
+ 1. Summit now is absolute summit, instead of relative summit
917
+ position;
918
+ 2. 'Pileup' is previous 'tag' column. It's the extended fragment
919
+ pileup at the peak summit;
920
+ 3. We now use '-log10(pvalue)' instead of '-10log10(pvalue)', so
921
+ 5.00 means 1e-5, simple and less confusing.
922
+ 4. FDR column becomes '-log10(qvalue)' column.
923
+ 5. The pileup, -log10pvalue, fold_enrichment and -log10qvalue are
924
+ the values at the peak summit.
925
+
926
+ * Extra output files
927
+
928
+ NAME_pqtable.txt contains pvalue and qvalue relationships.
929
+
930
+ NAME_treat_pvalue.bdg and NAME_treat_qvalue.bdg store -log10pvalue
931
+ and -log10qvalue scores in BedGraph format. Nearby regions with
932
+ the same value are not merged.
933
+
934
+ * Separation of FeatIO.py
935
+
936
+ Its content has been divided into cPeakIO.pyx, cBedGraph.pyx, and
937
+ cFixWidthTrack.pyx. A modified bedGraphTrackI class was
938
+ implemented to store pileup, local lambda, pvalue, and qvalue
939
+ alltogether in cScoreTrack.pyx.
940
+
941
+ * Experimental option --half-ext
942
+
943
+ Suggested by NPS algorithm, I added an experimental option
944
+ --half-ext to let MACS only extends ChIP fragment around its
945
+ middle point for only 1/2 d.
946
+
947
+ 2011-06-12 Tao Liu <taoliu@jimmy.harvard.edu>
948
+ MACS version 2.0.2 (tag:alpha)
949
+
950
+ * macs2
951
+
952
+ Add an error check to see if there is no common chromosome names
953
+ from treatment file and control file
954
+
955
+ * cPeakDetect.pyx, cFeatIO.pyx, cPileup.pyx
956
+
957
+ Reduce memory usage by removing deepcopy() calls.
958
+
959
+ * Modify README documents and others.
960
+
961
+ 2011-05-19 Tao Liu <taoliu@jimmy.harvard.edu>
962
+ MACS Version 2.0.1 (tag:alpha)
963
+
964
+ * cPileup.pyx, cPeakDetect.pyx and peak calling process
965
+
966
+ Jie suggested me a brilliant simple method to pileup fragments
967
+ into bedGraph track. It works extremely faster than the previous
968
+ function, i.e, faster than MACS1.3 or MACS1.4. So I can include
969
+ large local lambda calculation in MACSv2 now. Now I generate three
970
+ bedGraphs for d-size local bias, slocal-size and llocal-size local
971
+ bias, and calculate the maximum local bias as local lambda
972
+ bedGraph track.
973
+
974
+ Minor: add_loc in bedGraphTrackI now can correctly merge the
975
+ region with its preceding region if their value are the same.
976
+
977
+ * macs2
978
+
979
+ Add an option to shift control tags before extension. By default,
980
+ control tags will be extended to both sides regardless of strand
981
+ information.
982
+
983
+ 2011-05-17 Tao Liu <taoliu@jimmy.harvard.edu>
984
+ MACS Version 2.0.0 (tag:alpha)
985
+
986
+ * Use bedGraph type to store data internally and externally.
987
+
988
+ We can have theoretically one-basepair resolution profiles. 10
989
+ times smaller in filesize and even smaller after converting to
990
+ bigWig for visualization.
991
+
992
+ * Peak calling process modified. Better peak boundary detection.
993
+
994
+ Extend ChIP tag to d, and pileup to have a ChIP bedGraph. Extend
995
+ Control tag to d and 1,000bp, and pileup to two bedGraphs. (1000bp
996
+ one will be averaged to d size) Then calculate the maximum value
997
+ of these two tracks and a global background, to have a
998
+ local-lambda bedGraph.
999
+
1000
+ Use -10log10poisson_pvalue as scores to generate a score track
1001
+ before peak calling.
1002
+
1003
+ A general peak calling based on a score cutoff, min length of peak
1004
+ and max gap between nearby peaks.
1005
+
1006
+ * Option changes.
1007
+
1008
+ Wiggle file output is removed. Now we only support bedGraph
1009
+ output. The generation of bedGraph is highly recommended since it
1010
+ will not cost extra time. In other words, bedGraph generation is
1011
+ internally run even you don't want to save bedGraphs on disk, due
1012
+ to the peak calling algorithm in MACS v2.
1013
+
1014
+ * cProb.pyx
1015
+
1016
+ We now can calculate poisson pvalue in log space so that the score
1017
+ (-10*log10pvalue) will not have a upper limit of 3100 due to
1018
+ precision of float number.
1019
+
1020
+ * Cython is adopted to speed up Python code.
1021
+
1022
+ 2011-02-28 Tao Liu <taoliu@jimmy.harvard.edu>
1023
+ Small fixes
1024
+
1025
+ * Replaced with a newest WigTrackI class and fixed the wignorm script.
1026
+
1027
+ 2011-02-21 Tao Liu <taoliu@jimmy.harvard.edu>
1028
+ Version 1.4.0rc2 (Valentine)
1029
+
1030
+ * --single-wig option is renamed to --single-profile
1031
+
1032
+ * BedGraph output with --bdg or -B option.
1033
+
1034
+ The BedGraph output provides 1bp resolution fragment pileup
1035
+ profile. File size is smaller than wig file. This option can be
1036
+ combined with --single-profile option to produce a bedgraph file
1037
+ for the whole genome. This option can also make --space,
1038
+ --call-subpeaks invalid.
1039
+
1040
+ * Fix the description of --shiftsize to correctly state that the
1041
+ value is 1/2 d (fragment size).
1042
+
1043
+ * Fix a bug in the call to __filter_w_control_tags when control is
1044
+ not available.
1045
+
1046
+ * Fix a bug on --to-small option. Now it works as expected.
1047
+
1048
+ * Fix a bug while counting the tags in candidate peak region, an
1049
+ extra tag may be included. (Thanks to Jake Biesinger!)
1050
+
1051
+ * Fix the bug for the peaks extended outside of chromosome
1052
+ start. If the minus strand tag goes outside of chromosome start
1053
+ after extension of d, it will be thrown out.
1054
+
1055
+ * Post-process script for a combined wig file:
1056
+
1057
+ The "wignorm" command can be called after a full run of MACS14 as
1058
+ a postprocess. wignorm can calculate the local background from the
1059
+ control wig file from MACS14, then use either foldchange,
1060
+ -10*log10(pvalue) from possion test, or difference after asinh
1061
+ transformation as the score to build a single wig track to
1062
+ represent the binding strength. This script will take a
1063
+ significant long time to process.
1064
+
1065
+ * --wigextend has been obsoleted.
1066
+
1067
+ 2010-09-21 Tao Liu <taoliu@jimmy.harvard.edu>
1068
+ Version 1.4.0rc1 (Starry Sky)
1069
+
1070
+ * Duplicate reads option
1071
+
1072
+ --keep-dup behavior is changed. Now user can specify how many
1073
+ reads he/she wants to keep at the same genomic location. 'auto' to
1074
+ let MACS decide the number based on binomial distribution, 'all'
1075
+ to let MACS keep all reads.
1076
+
1077
+ * pvalue and FDR fixes (Thanks to Prof. Zhiping Weng)
1078
+
1079
+ By default, MACS will now scale the smaller dataset to the bigger
1080
+ dataset. For instance, if IP has 10 million reads, and Input has 5
1081
+ million, MACS will double the lambda value calculated from Input
1082
+ reads while calling BOTH the positive peaks and negative
1083
+ peaks. This will address the issue caused by unbalanced numbers of
1084
+ reads from IP and Input. If --to-small is turned on, MACS will
1085
+ scale the larger dataset to the smaller one. So from now on, if d
1086
+ is fixed, then the peaks from a MACS call for A vs B should be
1087
+ identical to the negative peaks from a B vs A.
1088
+
1089
+ 2010-09-01 Tao Liu <taoliu@jimmy.harvard.edu>
1090
+ Version 1.4.0beta (summer wishes)
1091
+
1092
+ * New features
1093
+
1094
+ ** Model building
1095
+
1096
+ The default behavior in the model building step is slightly
1097
+ changed. When MACS can't find enough pairs to build model
1098
+ (implemented in alpha version) or the modeled fragment length is
1099
+ less than 2 times of tag length (implemented in beta version),
1100
+ MACS will use 2 times of --shiftsize value as fragment length in
1101
+ the later analysis. --off-auto can turn off this default behavior.
1102
+
1103
+ ** Redundant tag filtering
1104
+
1105
+ The IO module is rewritten. The redundant tag filtering process
1106
+ becomes simpler and works as promise. The maximum allowed number
1107
+ of tags at the exact same location is calculated from the
1108
+ sequencing depth and genome size using a binomial distribution,
1109
+ for both TREAMENT and CONTROL separately. ( previously only
1110
+ TREATMENT is considered ) The exact same location means the same
1111
+ coordination and the same strand. Then MACS will only keep at most
1112
+ this number of tags at the exact same location in the following
1113
+ analysis. An option --keep-dup can let MACS skip the filtering and
1114
+ keep all the tags. However this may bring in a lot of sequencing
1115
+ bias, so you may get many false positive peaks.
1116
+
1117
+ ** Single wiggle mode
1118
+
1119
+ First thing to mention, this is not the score track that I
1120
+ described before. By default, MACS generates wiggle files for
1121
+ fragment pileup for every chromosomes separately. When you use
1122
+ --single-wig option, MACS will generate a single wiggle file for
1123
+ all the chromosomes so you will get a wig.gz for TREATMENT and
1124
+ another wig.gz for CONTROL if available.
1125
+
1126
+ ** Sniff -- automatic format detection
1127
+
1128
+ Now, by default or "-f AUTO", MACS will decide the input file
1129
+ format automatically. Technically, it will try to read at most
1130
+ 1000 records for the first 10 non-comment lines. If it succeeds,
1131
+ the format is decided. I recommend not to use AUTO and specify the
1132
+ right format for your input files, unless you combine different
1133
+ formats in a single MACS run.
1134
+
1135
+ * Options changes
1136
+
1137
+ --single-wig and --keep-dup are added. Check previous section in
1138
+ ChangeLog for detail.
1139
+
1140
+ -f (--format) AUTO is now the default option.
1141
+
1142
+ --slocal default: 1000
1143
+ --llocal default: 10000
1144
+
1145
+ * Bug fixed
1146
+
1147
+ Setup script will stop the installation if python version is not
1148
+ python2.6 or python2.7.
1149
+
1150
+ Local lambda calculation has been changed back. MACS will check
1151
+ peak_region, slocal( default 1K) and llocal (default 10K) for the
1152
+ local bias. The previous 200bps default will cause MACS misses
1153
+ some peaks where the input bias is very sharp.
1154
+
1155
+ sam2bed.py script is corrected.
1156
+
1157
+ Relative pos in xls output is fixed.
1158
+
1159
+ Parser for ELAND_export is fixed to pass some of the no match
1160
+ lines. And elandexport2bed.py is fixed too. ( however I can't
1161
+ guarantee that it works on any eland_export files. )
1162
+
1163
+ 2010-06-04 Tao Liu <taoliu@jimmy.harvard.edu>
1164
+ Version 1.4.0alpha2 (be smarter)
1165
+
1166
+ * Options changes
1167
+
1168
+ --gsize now provides shortcuts for common genomes, including
1169
+ human, mouse, C. elegans and fruitfly.
1170
+
1171
+ --llocal now will be 5000 bps if there is no input file, so that
1172
+ local lambda doesn't overkill enriched binding sites.
1173
+
1174
+ 2010-06-02 Tao Liu <taoliu@jimmy.harvard.edu>
1175
+ Version 1.4alpha (be smarter)
1176
+
1177
+ * Options changes
1178
+
1179
+ --tsize option is redesigned. MACS will use the first 10 lines of
1180
+ the input to decide the tag size. If user specifies --tsize, it
1181
+ will override the auto decided tsize.
1182
+
1183
+ --lambdaset is replaced by --slocal and --llocal which mean the
1184
+ small local region and large local region.
1185
+
1186
+ --bw has no effect on the scan-window size now. It only affects the
1187
+ paired-peaks model process.
1188
+
1189
+ * Model building
1190
+
1191
+ During the model building, MACS will pick out the enriched regions
1192
+ which are not too high and not too low to build the paired-peak
1193
+ model. Default the region is from fold 10 to fold 30. If MACS
1194
+ fails to build the model, by default it will use the nomodel
1195
+ settings, like shiftsize=100bps, to shift and extend each
1196
+ tags. This behavior can be turned off by '--off-auto'.
1197
+
1198
+ * Output files
1199
+
1200
+ An extra file including all the summit positions are saved in
1201
+ *_summits.bed file. An option '--call-subpeaks' will invoke
1202
+ PeakSplitter developed by Mali Salmon to split wide peaks into
1203
+ smaller subpeaks.
1204
+
1205
+ * Sniff ( will in beta )
1206
+
1207
+ Automatically recognize the input file format, so use can combine
1208
+ different format in one MACS run.
1209
+
1210
+ Not implemented features/TODO:
1211
+
1212
+ * Algorithms ( in near future? )
1213
+
1214
+ MACS will try to refine the peak boundaries by calculating the
1215
+ scores for every point in the candidate peak regions. The score
1216
+ will be the -10*log(10,pvalue) on a local poisson distribution. A
1217
+ cutoff specified by users (--pvalue) will be applied to find the
1218
+ precise sub-peaks in the original candidate peak region. Peak
1219
+ boudaries and peak summits positions will be saved in separate BED
1220
+ files.
1221
+
1222
+ * Single wiggle track ( in near future? )
1223
+
1224
+ A single wiggle track will be generated to save the scores within
1225
+ candidate peak regions in the 10bps resolution. The wiggle file
1226
+ is in fixedStep format.
1227
+
1228
+
1229
+ 2009-10-16 Tao Liu <taoliu@jimmy.harvard.edu>
1230
+ Version 1.3.7.1 (Oktoberfest, bug fixed #1)
1231
+
1232
+ * bin/Constants.py
1233
+
1234
+ Fixed typo. FCSTEP -> FESTEP
1235
+
1236
+ * lib/PeakDetect.py
1237
+
1238
+ The 'femax' attribute bug is fixed
1239
+
1240
+ 2009-10-02 Tao Liu <taoliu@jimmy.harvard.edu>
1241
+ Version 1.3.7 (Oktoberfest)
1242
+
1243
+ * bin/macs, lib/PeakDetect.py, lib/IO/__init__.py, lib/OptValidator.py
1244
+
1245
+ Enhancements by Peter Chines:
1246
+
1247
+ 1. gzip files are supported.
1248
+ 2. when --diag is on, user can set the increment and endpoint for
1249
+ fold enrichment analysis by setting --fe-step and --fe-max.
1250
+
1251
+ Enhancements by Davide Cittaro:
1252
+
1253
+ 1. BAM and SAM formats are supported.
1254
+ 2. small changes in the header lines of wiggle output.
1255
+
1256
+ Enhancements by Me:
1257
+ 1. I added --fe-min option;
1258
+ 2. Bowtie ascii output with suffix ".map" is supported.
1259
+
1260
+ Bug fixed:
1261
+
1262
+ 1. --nolambda bug is fixed. ( reported by Martin in JHU )
1263
+ 2. --diag bug is fixed. ( reported by Bogdan Tanasa )
1264
+ 3. Function to remove suffix '.fa' is fixed. ( reported by Jeff Johnston )
1265
+ 4. Some "fold change" have been changed to "fold enrichment".
1266
+
1267
+ 2009-06-10 Tao Liu <taoliu@jimmy.harvard.edu>
1268
+ Version 1.3.6.1 (default parameter change)
1269
+
1270
+ * bin/macs, lib/PeakDetect.py
1271
+
1272
+ "--oldfdr" is removed. The 'oldfdr' behaviour becomes
1273
+ default. "--futurefdr" is added which can turn on the 'new' method
1274
+ introduced in 1.3.6. By default it's off.
1275
+
1276
+ * lib/PeakDetect.py
1277
+
1278
+ Fixed a bug. p-value is corrected a little bit.
1279
+
1280
+
1281
+ 2009-05-11 Tao Liu <taoliu@jimmy.harvard.edu>
1282
+ Version 1.3.6 (Birthday cake)
1283
+
1284
+ * bin/macs
1285
+
1286
+ "track name" is added to the header of BED output file.
1287
+
1288
+ Now the default peak detection method is to consider 5k and 10k
1289
+ nearby regions in treatment data and peak location, 1k, 5k, and
1290
+ 10k regions in control data to calculate local bias. The old
1291
+ method can be called through '--old' option.
1292
+
1293
+ Information about how many total/unique tags in treatment or
1294
+ control will be saved in final .xls output.
1295
+
1296
+ * lib/IO/__init__.py
1297
+
1298
+ ".fa" will be removed from input tag alignment so only the
1299
+ chromosome names are kept.
1300
+
1301
+ WigTrackI class is added for Wiggle like data structure. (not used
1302
+ now)
1303
+
1304
+ The parser for ELAND multi PET files has been fixed. Now the 5'
1305
+ tag position for a pair will be kept, whereas in the previous
1306
+ version, the middle points are kept.
1307
+
1308
+ * lib/IO/BinKeeper.py
1309
+
1310
+ BinKeeperI class is inspired by Jim Kent's library for UCSC genome
1311
+ browser, which can quickly access certain region for values in a
1312
+ large wiggle like data file. (not used now)
1313
+
1314
+ * lib/OptValidator.py
1315
+
1316
+ typo fixed.
1317
+
1318
+ * lib/PeakDetect.py
1319
+
1320
+ Now the default peak detection method is to consider 5k and 10k
1321
+ nearby regions in treatment data and peak location, 1k, 5k, and
1322
+ 10k regions in control data to calculate local bias. The old
1323
+ method can be called through '--old' option.
1324
+
1325
+ Two columns have beed added to BED output file. 4th column: peak
1326
+ name; 5th column: peak score using -10log(10,pvalue) as score.
1327
+
1328
+ * setup.py
1329
+
1330
+ Add support to build a Mac App through 'setup.py py2app', or a
1331
+ Windows executable through 'setup.py py2exe'. You need to install
1332
+ py2app or py2exe package in order to use these functions.
1333
+
1334
+ 2009-02-12 Tao Liu <taoliu@jimmy.harvard.edu>
1335
+ Version 1.3.5 (local lambda fixed, typo fixed, model figure improved)
1336
+
1337
+ * PeakDetect.py
1338
+
1339
+ Now, besides 1k, 5k, 10k, MACS will also consider peak size region
1340
+ in control data to calculate local lambda for each peak. Peak
1341
+ calling results will be slightly different with previous version,
1342
+ beware!
1343
+
1344
+ * OptValidator.py
1345
+
1346
+ Typo fixed, ELANDParser -> ELANDResultParser
1347
+
1348
+ * OutputWriter.py
1349
+
1350
+ Now, modeled d value will be shown on the model figure.
1351
+
1352
+ 2009-01-06 Tao Liu <taoliu@jimmy.harvard.edu>
1353
+ Version 1.3.4 (Happy New Year Version, bug fixed, ELAND multi/PET support)
1354
+
1355
+ * macs, IO/__init__.py, PeakDetect.py
1356
+
1357
+ Add support for ELAND multi format. Add support for Pair-End
1358
+ experiment, in this case, 5'end and 3'end ELAND multi format files
1359
+ are required for treatment or control data. See 00README file for
1360
+ detail.
1361
+
1362
+ Add wigextend option.
1363
+
1364
+ Add petdist option for Pair-End Tag experiment, which is the best
1365
+ distance between 5' and 3' tags.
1366
+
1367
+ * PeakDetect.py
1368
+
1369
+ Fixed a bug which cause the end positions of every peak region
1370
+ incorrectly added by 1 bp. ( Thanks Mali Salmon!)
1371
+
1372
+ * OutputWriter.py
1373
+
1374
+ Fix bugs while generating wiggle files. The start position of
1375
+ wiggle file is set to 1 instead of 0.
1376
+
1377
+ Fix a bug that every 10M bps, signals in the first 'd' range are
1378
+ lower than actual. ( Thanks Mali Salmon!)
1379
+
1380
+
1381
+ 2008-12-03 Tao Liu <taoliu@jimmy.harvard.edu>
1382
+ Version 1.3.3 (wiggle bugs fixed)
1383
+
1384
+ * OutputWriter.py
1385
+
1386
+ Fix bugs while generating wiggle files. 1. 'span=' is added to
1387
+ 'variableStep' line; 2. previously, every 10M bps, the coordinates
1388
+ were wrongly shifted to the right for 'd' basepairs.
1389
+
1390
+ * macs, PeakDetect.py
1391
+
1392
+ Add an option to save wiggle files on different resolution.
1393
+
1394
+ 2008-10-02 Tao Liu <taoliu@jimmy.harvard.edu>
1395
+ Version 1.3.2 (tiny bugs fixed)
1396
+
1397
+ * IO/__init__.py
1398
+
1399
+ Fix 65536 -> 65535. ( Thank Joon)
1400
+
1401
+ * Prob.py
1402
+
1403
+ Improved for binomial function with extra large number. Imported
1404
+ from Cistrome project.
1405
+
1406
+ * PeakDetect.py
1407
+
1408
+ If treatment channel misses reads in some chromosome included in
1409
+ control channel, or vice versa, MACS will not exit. (Thank Shaun
1410
+ Mahony)
1411
+
1412
+ Instead, MACS will fake a tag at position -1 when calling
1413
+ treatment peaks vs control, but will ignore the chromosome while
1414
+ calling negative peaks.
1415
+
1416
+ 2008-09-04 Tao Liu <taoliu@jimmy.harvard.edu>
1417
+ Version 1.3.1 (tiny bugs fixed version)
1418
+
1419
+ * Prob.py
1420
+
1421
+ Hyunjin Gene Shin contributed some codes to Prob.py. Now the
1422
+ binomial functions can tolerate large and small numbers.
1423
+
1424
+ * IO/__init__.py
1425
+
1426
+ Parsers now split lines in BED/ELAND file using any
1427
+ whitespaces. 'track' or 'browser' lines will be regarded as
1428
+ comment lines. A bug fixed when throwing StrandFormatError. The
1429
+ maximum redundant tag number at a single position can be no less
1430
+ than 65536.
1431
+
1432
+
1433
+ 2008-07-15 Tao Liu <taoliu@jimmy.harvard.edu>
1434
+ Version 1.3 (naming clarification version)
1435
+
1436
+ * Naming clarification changes according to our manuscript:
1437
+
1438
+ 'frag_len' is changed to 'd'.
1439
+
1440
+ 'fold_change' is changed to 'fold_enrichment'.
1441
+
1442
+ Suggest '--bw' parameter to be determined by users from the real
1443
+ sonication size.
1444
+
1445
+ Maximum FDR is 100% in the output file.
1446
+
1447
+ And other clarifications in 00README file and the documents on the
1448
+ website.
1449
+
1450
+ * IO/__init__.py
1451
+ If the redundant tag number at a single position is over 32767,
1452
+ just remember 32767, instead of raising an overflow exception.
1453
+
1454
+ * setup.py
1455
+ fixed a typo.
1456
+
1457
+ * PeakDetect.py
1458
+ Bug fixed for diagnosis report.
1459
+
1460
+
1461
+ 2008-07-10 Tao Liu <taoliu@jimmy.harvard.edu>
1462
+ Version 1.2.2gamma
1463
+
1464
+ * Serious bugs fix:
1465
+
1466
+ Poisson distribution CDF and inverse CDF functions are
1467
+ corrected. They can produce right results even for huge lambda
1468
+ now. So that the p-value and FDR values in the final excel sheet
1469
+ are corrected.
1470
+
1471
+ IO package now can tolerate some rare cases; ELANDParser in IO
1472
+ package is fixed. (Thank Bogdan)
1473
+
1474
+ * Improvement:
1475
+
1476
+ Reverse paired peaks in model are rejected. So there will be no
1477
+ negative 'frag_len'. (Thank Bogdan)
1478
+
1479
+ * Features added:
1480
+
1481
+ Diagnosis function is completed. Which can output a table file for
1482
+ users to estimate their sequencing depth.
1483
+
1484
+
1485
+ 2008-06-30 Tao Liu <taoliu@jimmy.harvard.edu>
1486
+ Version 1.2
1487
+
1488
+ * Probe.py is added!
1489
+
1490
+ GSL is totally removed from MACS. Instead, I have implemented the
1491
+ CDF and inverse CDF for poisson and binomial distribution purely
1492
+ in python.
1493
+
1494
+ * Constants.py is added!
1495
+
1496
+ Organize constants used in MACS in the Constants.py file.
1497
+
1498
+ * All other files are modified!
1499
+
1500
+ Foldchange calculation is modified. Now the foldchange only be
1501
+ calculated at the peak summit position instead of the whole peak
1502
+ region. The values will be higher and more robust than before.
1503
+
1504
+ Features added:
1505
+
1506
+ 1. MACS can save wiggle format files containing the tag number at
1507
+ every 10 bp along the genome. Tags are shifted according to our
1508
+ model before they are calculated.
1509
+
1510
+ 2. Model building and local lambda calculation can be skipped with
1511
+ certain options.
1512
+
1513
+ 3. A diagnosis report can be generated through '--diag'
1514
+ option. This report can help you get an assumption about the
1515
+ sequencing saturation. This funtion is only in beta stage.
1516
+
1517
+ 4. FDR calculation speed is highly improved.
1518
+
1519
+ 2008-05-28 Tao Liu <taoliu@jimmy.harvard.edu>
1520
+ Version 1.1
1521
+
1522
+ * TabIO, PeakModel.py ...
1523
+ Bug fixed to let MACS tolerate some cases while there is no tag on
1524
+ either plus strand or minus strand.
1525
+
1526
+ * setup.py
1527
+ Check the version of python. If the version is lower than 2.4,
1528
+ refuse to install with warning.
1529
+
1530
+
1531
+ 2013-07-31 Tao Liu <vladimir.liu@gmail.com>
1532
+ MACS version 2.0.10 20130731 (tag:alpha)
1533
+
1534
+ * callpeak --call-summits
1535
+
1536
+ Fix bugs causing callpeak --call-summits option generating extra
1537
+ number of peaks and inconsistent peak boundaries comparing to
1538
+ default option. Thank Ben Levinson!
1539
+
1540
+ * bdgcmp output
1541
+
1542
+ Fix bugs causing bdgcmp output logLR all in positive values. Now
1543
+ 'depletion' can be correctly represented as negative values.
1544
+
1545
+ * bdgdiff
1546
+
1547
+ Fix the behavior of bdgdiff module. Now it can take four
1548
+ bedGraph files, then use logLR as cutoff to call differential
1549
+ regions. Check command line of bdgdiff for detail.
1550
+
1551
+ 2013-07-13 Tao Liu <vladimir.liu@gmail.com>
1552
+ MACS version 2.0.10 20130713 (tag:alpha)
1553
+
1554
+ * fix bugs while output broadPeak and gappedPeak.
1555
+
1556
+ Note. Those weak broad regions without any strong enrichment
1557
+ regions inside won't be saved in gappedPeak file.
1558
+
1559
+ * bdgcmp -T and -C are merged into -S and description is updated.
1560
+
1561
+ Now, you can use it to override SPMR values in your input for
1562
+ bdgcmp. To use SPMR (from 'callpeak --SPMR -B') while calculating
1563
+ statistics will cause weird results ( in most cases, lower
1564
+ significancy), and won't be consistent with MACS2 callpeak
1565
+ behavior. So if you have SPMR bedGraphs, input the smaller/larger
1566
+ sample size in MILLION according to 'callpeak --to-large' option.
1567
+
1568
+ 2013-07-10 Tao Liu <vladimir.liu@gmail.com>
1569
+ MACS version 2.0.10 20130710 (tag:alpha)
1570
+
1571
+ * fix BED style output format of callpeak module:
1572
+
1573
+ 1) without --broad: narrowPeak (BED6+4) and BED for summit will be
1574
+ the output. Old BED format file won't be saved.
1575
+
1576
+ 2) with --broad: broadPeak (BED6+3) for broad region and
1577
+ gappedPeak (BED12+3) for chained enriched regions will be the
1578
+ output. Old BED format, narrowPeak format, summit file won't be
1579
+ saved.
1580
+
1581
+ * bdgcmp now can accept list of methods to calculate scores. So
1582
+ you can run it once to generate multiple types of scores. Thank
1583
+ Jon Urban for this suggestion!
1584
+
1585
+ * C codes are re-generated through Cython 0.19.1.
1586
+
1587
+ 2013-05-21 Tao Liu <vladimir.liu@gmail.com>
1588
+ MACS version 2.0.10 20130520 (tag:alpha)
1589
+
1590
+ * broad peak calling modules are modified in order to report all
1591
+ relexed regions even there is no strong enrichment inside.
1592
+
1593
+ 2013-05-01 Tao Liu <vladimir.liu@gmail.com>
1594
+ MACS version 2.0.10 20130501 (tag:alpha)
1595
+
1596
+ * Memory usage is decreased to about 1/4-1/5 of previous usage
1597
+ Now, the internal data structure and algorithm are both
1598
+ re-organized, so that intermediate data wouldn't be saved in
1599
+ memory. Intead they will be calculated on the fly. New MACS2 will
1600
+ spend longer time (1.5 to 2 times) however it will use less memory
1601
+ so can be more usable on small mem servers.
1602
+
1603
+ * --seed option is added to callpeak and randsample commands
1604
+ Thank Mathieu Gineste for this suggestion!
1605
+
1606
+ 2013-03-05 Tao Liu <vladimir.liu@gmail.com>
1607
+ MACS version 2.0.10 20130306 (tag:alpha)
1608
+
1609
+ * diffpeak module New module to detect differential binding sites
1610
+ with more statistics.
1611
+
1612
+ * Introduced --refine-peaks
1613
+ Calculates reads balancing to refine peak summits
1614
+
1615
+ * Ouput file names prefix
1616
+ Correct encodePeak to narrowPeak, broadPeak to bed12.
1617
+
1618
+ 2012-09-13 Benjamin Schiller <benjamin.schiller@ucsf.edu>, Tao Liu <taoliu@jimmy.harvard.edu>
1619
+ MACS version 2.0.10 (tag:alpha not released)
1620
+
1621
+ * Introduced BAMPEParser
1622
+ Reads PE data directly, requires bedtools for now
1623
+
1624
+ * Introduced --call-summits
1625
+ Uses signal processing methods to call overlapping peaks
1626
+
1627
+ * Added --no-trackline
1628
+ By default, files have descriptive tracklines now
1629
+
1630
+ * new refinepeak command (experimental)
1631
+ This new function will use a similar method in SPP (wtd), to
1632
+ analyze raw tag distribution in peak region, then redefine the
1633
+ peak summit where plus and minus tags are evenly distributed
1634
+ around.
1635
+
1636
+ * Changes to output *
1637
+ cPeakDetect.pyx has full support for new print/write methods and
1638
+ --call-peaks, BAMPEParser, and use of paired-end data
1639
+
1640
+ * Parser optimization
1641
+
1642
+ cParser.pyx is rewritten to use io.BufferedReader to speed
1643
+ up. Speed is doubled.
1644
+
1645
+ Code is reorganized -- most of functions are inherited from
1646
+ GenericParser class.
1647
+
1648
+ * Use cross-correlation to calculate fragment size
1649
+
1650
+ First, all pairs will be used in prediction for fragment
1651
+ size. Previously, only no more than 1000 pairs are used. Second,
1652
+ cross-correlation is used to find the best phase difference
1653
+ between + and - tag pileups.
1654
+
1655
+ * Speed up p-value and q-value calculation
1656
+
1657
+ This part is ten times faster now. I am using a dictionary to
1658
+ cache p-value results from Poisson CDF function. A bit more memory
1659
+ will be used to increase speed. I hope this dictionary would not
1660
+ explode since the possible pairs of ChIP signal and control lambda
1661
+ are hugely redundant. Also, I rewrited part of q-value
1662
+ calculation.
1663
+
1664
+ * Speed up peak detection
1665
+
1666
+ This part is about hundred of times faster now. Optimizations
1667
+ include using Numpy functions as much as possible, and making loop
1668
+ body as small as possible.
1669
+
1670
+ * Post-processing on differential calls
1671
+
1672
+ After macs2diff finds differential binding sites between two
1673
+ conditions, it will try to annotate the peak calls from one of two
1674
+ conditions, describe the changes ...
1675
+
1676
+ * Fragment size prediction in macs2diff
1677
+
1678
+ Now by default, macs2diff will try to use the average fragment
1679
+ size from both condition 1 and condition 2 for tag extension and
1680
+ peak calling. Previously, by default, it will use different sizes
1681
+ unless --nomodel is specified.
1682
+
1683
+ Technically, I separate model building processes out. So macs2diff
1684
+ will build fragment sizes for condition 1 and 2 in parallel (2
1685
+ processes maximum), then perform 4-way comparisons in parallel (4
1686
+ processes maximum).
1687
+
1688
+ * Diff score
1689
+
1690
+ Combine two p/qscore tracks together. At regions where condition 1
1691
+ is higher than condition 2, score would be positive, otherwise,
1692
+ negative.
1693
+
1694
+ * SAMParser and BAMParser
1695
+
1696
+ Bug fixed for paired-end sequencing data.
1697
+
1698
+ * BedGraph.pyx
1699
+
1700
+ Fixed a bug while calling peaks from BedGraph file. It previously
1701
+ mistakenly output same peaks multiple times at the end of
1702
+ chromosome.
1703
+
1704
+ 2011-11-2 Tao Liu <taoliu@jimmy.harvard.edu>
1705
+ MACS version 2.0.9 (tag:alpha)
1706
+
1707
+ * Auto fixation on predicted d is turned off by default!
1708
+
1709
+ Previous --off-auto is now default. MACS will not automatically
1710
+ fix d less than 2 times of tag size according to
1711
+ --shiftsize. While tag size is getting longer nowadays, it would
1712
+ be easier to have d less than 2 times of tag size, however d may
1713
+ still be meaningful and useful. Please judge it using your own
1714
+ wisdom.
1715
+
1716
+ * Scaling issue
1717
+
1718
+ Now, the default scaling while treatment and input are unbalanced
1719
+ has been adjusted. By default, larger sample will be scaled down
1720
+ linearly to match the smaller sample. In this way, background
1721
+ noise will be reduced more than real signals, so we expect to have
1722
+ more specific results than the other way around (i.e. --to-large
1723
+ is set).
1724
+
1725
+ Also, an alternative option to randomly sample larger data
1726
+ (--down-sample) is provided to replace default linear
1727
+ scaling. However, this option will cause results irresproducible,
1728
+ so be careful.
1729
+
1730
+ * randsample script
1731
+
1732
+ A new script 'randsample' is added, which can randomly sample
1733
+ certain percentage or number of tags.
1734
+
1735
+ * Peak summit
1736
+
1737
+ Now, MACS will decide peak summits according to pileup height
1738
+ instead of qvalue scores. In this way, the summit may be more
1739
+ accurate.
1740
+
1741
+ * Diff score
1742
+
1743
+ MACS calculate qvalue scores as differential scores. When compare
1744
+ two conditions (saying A and B), the maximum qscore for comparing
1745
+ A to B -- maxqscore_a2b, and for comparing B to A --maxqscore_b2a
1746
+ will be computed. If maxqscore_a2b is bigger, the diff score is
1747
+ +maxqscore_a2b, otherwise, diff score is -1*maxqscore_b2a.
1748
+
1749
+ 2011-09-15 Tao Liu <taoliu@jimmy.harvard.edu>
1750
+ MACS version 2.0.8 (tag:alpha)
1751
+
1752
+ * bin/macs2, bin/bdgbroadcall, MACS2/IO/cScoreTrack.pyx, MACS2/IO/cBedGraph.pyx
1753
+
1754
+ New script bdgbroadcall and the extra option '--broad' for macs2
1755
+ script, can be used to call broad regions with a loose cutoff to
1756
+ link nearby significant regions. The output is represented as
1757
+ BED12 format.
1758
+
1759
+ * MACS2/IO/cScoreTrack.pyx
1760
+
1761
+ Fix q-value calculation to generate forcefully monotonic values.
1762
+
1763
+ * bin/eland*2bed, bin/sam2bed and bin/filterdup
1764
+
1765
+ They are combined to one more powerful script called
1766
+ "filterdup". The script filterdup can filter duplicated reads
1767
+ according to sequencing depth and genome size. The script can also
1768
+ convert any format supported by MACS to BED format.
1769
+
1770
+ 2011-08-21 Tao Liu <taoliu@jimmy.harvard.edu>
1771
+ MACS version 2.0.7 (tag:alpha)
1772
+
1773
+ * bin/macsdiff renamed to bin/bdgdiff
1774
+
1775
+ Now this script will work as a low-level finetuning tool as bdgcmp
1776
+ and bdgpeakcall.
1777
+
1778
+ * bin/macs2diff
1779
+
1780
+ A new script to take treatment and control files from two
1781
+ condition, calculate fragment size, use local poisson to get
1782
+ pvalues and BH process to get qvalues, then combine 4-ways result
1783
+ to call differential sites.
1784
+
1785
+ This script can use upto 4 cpus to speed up 4-ways calculation. (
1786
+ I am trying multiprocessing in python. )
1787
+
1788
+ * MACS2/Constants.py, MACS2/IO/cBedGraph.pyx,
1789
+ MACS2/IO/cScoreTrack.pyx, MACS2/OptValidator.py,
1790
+ MACS2/PeakModel.py, MACS2/cPeakDetect.pyx
1791
+
1792
+ All above files are modified for the new macs2diff script.
1793
+
1794
+ * bin/macs2, bin/macs2diff, MACS2/OptValidator.py
1795
+
1796
+ Now q-value 0.01 is the default cutoff. If -p is specified,
1797
+ p-value cutoff will be used instead.
1798
+
1799
+ 2011-07-25 Tao Liu <vladimir.liu@gmail.com>
1800
+ MACS version 2.0.6 (tag:alpha)
1801
+
1802
+ * bin/macsdiff
1803
+
1804
+ A script to call differential regions. A naive way is introduced
1805
+ to find the regions where:
1806
+
1807
+ 1. signal from condition 1 is larger than input 1 and condition 2 --
1808
+ unique region in condition 1;
1809
+ 2. signal from condition 2 is larger than input 2 and condition 1
1810
+ -- unique region in condition 2;
1811
+ 3. signal from condition 1 is larger than input 1, signal from
1812
+ condition 2 is larger than input 2, however either signal from
1813
+ condition 1 or 2 is not larger than the other.
1814
+
1815
+ Here 'larger' means the pvalue or qvalue from a Poisson test is
1816
+ under certain cutoff.
1817
+
1818
+ (I will make another script to wrap up mulitple scripts for
1819
+ differential calling)
1820
+
1821
+ 2011-07-07 Tao Liu <vladimir.liu@gmail.com>
1822
+ MACS version 2.0.5 (tag:alpha)
1823
+
1824
+ * bin/macs2, MACS2/cPeakDetect.py, MACS2/IO/cScoreTrack.pyx,
1825
+ MACS2/IO/cPeakIO.pyx
1826
+
1827
+ Use hash to store peak information. Add back the feature to deal
1828
+ with data without control.
1829
+
1830
+ Fix bug which incorrectly allows small peaks at the end of
1831
+ chromosomes.
1832
+
1833
+ * bin/bdgpeakcall, bin/bdgcmp
1834
+
1835
+ Fix bugs. bdgpeakcall can output encodePeak format.
1836
+
1837
+ 2011-06-22 Tao Liu <taoliu@jimmy.harvard.edu>
1838
+ MACS version 2.0.4 (tag:alpha)
1839
+
1840
+ * cPeakDetect.py
1841
+
1842
+ Fix a bug, correctly assign lambda_bg while --to-small is
1843
+ set. Thanks Junya Seo!
1844
+
1845
+ Add rank and num of bp columns to pvalue-qvalue table.
1846
+
1847
+ * cScoreTrack.py
1848
+
1849
+ Fix bugs to correctly deal with peakless chromosomes. Thanks
1850
+ Vaibhav Jain!
1851
+
1852
+ Use AFDR for independent tests instead.
1853
+
1854
+ * encodePeak
1855
+
1856
+ Now MACS can output peak coordinates together with pvalue, qvalue,
1857
+ summit positions in a single encodePeak format (designed for
1858
+ ENCODE project) file. This file can be loaded to UCSC
1859
+ browser. Definition of some specific columns are: 5th:
1860
+ int(-log10pvalue*10), 7th: fold-change, 8th: -log10pvalue, 9th:
1861
+ -log10qvalue, 10th: relative summit position to peak start.
1862
+
1863
+
1864
+ 2011-06-19 Tao Liu <taoliu@jimmy.harvard.edu>
1865
+ MACS version 2.0.3 (tag:alpha)
1866
+
1867
+ * Rich output with qvalue, fold enrichment, and pileup height
1868
+
1869
+ Calculate q-values using a refined Benjamini–Hochberg–Yekutieli
1870
+ procedure:
1871
+
1872
+ http://en.wikipedia.org/wiki/False_discovery_rate#Dependent_tests
1873
+
1874
+ Now we have a similiar xls output file as before. The differences
1875
+ from previous file are:
1876
+
1877
+ 1. Summit now is absolute summit, instead of relative summit
1878
+ position;
1879
+ 2. 'Pileup' is previous 'tag' column. It's the extended fragment
1880
+ pileup at the peak summit;
1881
+ 3. We now use '-log10(pvalue)' instead of '-10log10(pvalue)', so
1882
+ 5.00 means 1e-5, simple and less confusing.
1883
+ 4. FDR column becomes '-log10(qvalue)' column.
1884
+ 5. The pileup, -log10pvalue, fold_enrichment and -log10qvalue are
1885
+ the values at the peak summit.
1886
+
1887
+ * Extra output files
1888
+
1889
+ NAME_pqtable.txt contains pvalue and qvalue relationships.
1890
+
1891
+ NAME_treat_pvalue.bdg and NAME_treat_qvalue.bdg store -log10pvalue
1892
+ and -log10qvalue scores in BedGraph format. Nearby regions with
1893
+ the same value are not merged.
1894
+
1895
+ * Separation of FeatIO.py
1896
+
1897
+ Its content has been divided into cPeakIO.pyx, cBedGraph.pyx, and
1898
+ cFixWidthTrack.pyx. A modified bedGraphTrackI class was
1899
+ implemented to store pileup, local lambda, pvalue, and qvalue
1900
+ alltogether in cScoreTrack.pyx.
1901
+
1902
+ * Experimental option --half-ext
1903
+
1904
+ Suggested by NPS algorithm, I added an experimental option
1905
+ --half-ext to let MACS only extends ChIP fragment around its
1906
+ middle point for only 1/2 d.
1907
+
1908
+ 2011-06-12 Tao Liu <taoliu@jimmy.harvard.edu>
1909
+ MACS version 2.0.2 (tag:alpha)
1910
+
1911
+ * macs2
1912
+
1913
+ Add an error check to see if there is no common chromosome names
1914
+ from treatment file and control file
1915
+
1916
+ * cPeakDetect.pyx, cFeatIO.pyx, cPileup.pyx
1917
+
1918
+ Reduce memory usage by removing deepcopy() calls.
1919
+
1920
+ * Modify README documents and others.
1921
+
1922
+ 2011-05-19 Tao Liu <taoliu@jimmy.harvard.edu>
1923
+ MACS Version 2.0.1 (tag:alpha)
1924
+
1925
+ * cPileup.pyx, cPeakDetect.pyx and peak calling process
1926
+
1927
+ Jie suggested me a brilliant simple method to pileup fragments
1928
+ into bedGraph track. It works extremely faster than the previous
1929
+ function, i.e, faster than MACS1.3 or MACS1.4. So I can include
1930
+ large local lambda calculation in MACSv2 now. Now I generate three
1931
+ bedGraphs for d-size local bias, slocal-size and llocal-size local
1932
+ bias, and calculate the maximum local bias as local lambda
1933
+ bedGraph track.
1934
+
1935
+ Minor: add_loc in bedGraphTrackI now can correctly merge the
1936
+ region with its preceding region if their value are the same.
1937
+
1938
+ * macs2
1939
+
1940
+ Add an option to shift control tags before extension. By default,
1941
+ control tags will be extended to both sides regardless of strand
1942
+ information.
1943
+
1944
+ 2011-05-17 Tao Liu <taoliu@jimmy.harvard.edu>
1945
+ MACS Version 2.0.0 (tag:alpha)
1946
+
1947
+ * Use bedGraph type to store data internally and externally.
1948
+
1949
+ We can have theoretically one-basepair resolution profiles. 10
1950
+ times smaller in filesize and even smaller after converting to
1951
+ bigWig for visualization.
1952
+
1953
+ * Peak calling process modified. Better peak boundary detection.
1954
+
1955
+ Extend ChIP tag to d, and pileup to have a ChIP bedGraph. Extend
1956
+ Control tag to d and 1,000bp, and pileup to two bedGraphs. (1000bp
1957
+ one will be averaged to d size) Then calculate the maximum value
1958
+ of these two tracks and a global background, to have a
1959
+ local-lambda bedGraph.
1960
+
1961
+ Use -10log10poisson_pvalue as scores to generate a score track
1962
+ before peak calling.
1963
+
1964
+ A general peak calling based on a score cutoff, min length of peak
1965
+ and max gap between nearby peaks.
1966
+
1967
+ * Option changes.
1968
+
1969
+ Wiggle file output is removed. Now we only support bedGraph
1970
+ output. The generation of bedGraph is highly recommended since it
1971
+ will not cost extra time. In other words, bedGraph generation is
1972
+ internally run even you don't want to save bedGraphs on disk, due
1973
+ to the peak calling algorithm in MACS v2.
1974
+
1975
+ * cProb.pyx
1976
+
1977
+ We now can calculate poisson pvalue in log space so that the score
1978
+ (-10*log10pvalue) will not have a upper limit of 3100 due to
1979
+ precision of float number.
1980
+
1981
+ * Cython is adopted to speed up Python code.
1982
+
1983
+ 2011-02-28 Tao Liu <taoliu@jimmy.harvard.edu>
1984
+ Small fixes
1985
+
1986
+ * Replaced with a newest WigTrackI class and fixed the wignorm script.
1987
+
1988
+ 2011-02-21 Tao Liu <taoliu@jimmy.harvard.edu>
1989
+ Version 1.4.0rc2 (Valentine)
1990
+
1991
+ * --single-wig option is renamed to --single-profile
1992
+
1993
+ * BedGraph output with --bdg or -B option.
1994
+
1995
+ The BedGraph output provides 1bp resolution fragment pileup
1996
+ profile. File size is smaller than wig file. This option can be
1997
+ combined with --single-profile option to produce a bedgraph file
1998
+ for the whole genome. This option can also make --space,
1999
+ --call-subpeaks invalid.
2000
+
2001
+ * Fix the description of --shiftsize to correctly state that the
2002
+ value is 1/2 d (fragment size).
2003
+
2004
+ * Fix a bug in the call to __filter_w_control_tags when control is
2005
+ not available.
2006
+
2007
+ * Fix a bug on --to-small option. Now it works as expected.
2008
+
2009
+ * Fix a bug while counting the tags in candidate peak region, an
2010
+ extra tag may be included. (Thanks to Jake Biesinger!)
2011
+
2012
+ * Fix the bug for the peaks extended outside of chromosome
2013
+ start. If the minus strand tag goes outside of chromosome start
2014
+ after extension of d, it will be thrown out.
2015
+
2016
+ * Post-process script for a combined wig file:
2017
+
2018
+ The "wignorm" command can be called after a full run of MACS14 as
2019
+ a postprocess. wignorm can calculate the local background from the
2020
+ control wig file from MACS14, then use either foldchange,
2021
+ -10*log10(pvalue) from possion test, or difference after asinh
2022
+ transformation as the score to build a single wig track to
2023
+ represent the binding strength. This script will take a
2024
+ significant long time to process.
2025
+
2026
+ * --wigextend has been obsoleted.
2027
+
2028
+ 2010-09-21 Tao Liu <taoliu@jimmy.harvard.edu>
2029
+ Version 1.4.0rc1 (Starry Sky)
2030
+
2031
+ * Duplicate reads option
2032
+
2033
+ --keep-dup behavior is changed. Now user can specify how many
2034
+ reads he/she wants to keep at the same genomic location. 'auto' to
2035
+ let MACS decide the number based on binomial distribution, 'all'
2036
+ to let MACS keep all reads.
2037
+
2038
+ * pvalue and FDR fixes (Thanks to Prof. Zhiping Weng)
2039
+
2040
+ By default, MACS will now scale the smaller dataset to the bigger
2041
+ dataset. For instance, if IP has 10 million reads, and Input has 5
2042
+ million, MACS will double the lambda value calculated from Input
2043
+ reads while calling BOTH the positive peaks and negative
2044
+ peaks. This will address the issue caused by unbalanced numbers of
2045
+ reads from IP and Input. If --to-small is turned on, MACS will
2046
+ scale the larger dataset to the smaller one. So from now on, if d
2047
+ is fixed, then the peaks from a MACS call for A vs B should be
2048
+ identical to the negative peaks from a B vs A.
2049
+
2050
+ 2010-09-01 Tao Liu <taoliu@jimmy.harvard.edu>
2051
+ Version 1.4.0beta (summer wishes)
2052
+
2053
+ * New features
2054
+
2055
+ ** Model building
2056
+
2057
+ The default behavior in the model building step is slightly
2058
+ changed. When MACS can't find enough pairs to build model
2059
+ (implemented in alpha version) or the modeled fragment length is
2060
+ less than 2 times of tag length (implemented in beta version),
2061
+ MACS will use 2 times of --shiftsize value as fragment length in
2062
+ the later analysis. --off-auto can turn off this default behavior.
2063
+
2064
+ ** Redundant tag filtering
2065
+
2066
+ The IO module is rewritten. The redundant tag filtering process
2067
+ becomes simpler and works as promise. The maximum allowed number
2068
+ of tags at the exact same location is calculated from the
2069
+ sequencing depth and genome size using a binomial distribution,
2070
+ for both TREAMENT and CONTROL separately. ( previously only
2071
+ TREATMENT is considered ) The exact same location means the same
2072
+ coordination and the same strand. Then MACS will only keep at most
2073
+ this number of tags at the exact same location in the following
2074
+ analysis. An option --keep-dup can let MACS skip the filtering and
2075
+ keep all the tags. However this may bring in a lot of sequencing
2076
+ bias, so you may get many false positive peaks.
2077
+
2078
+ ** Single wiggle mode
2079
+
2080
+ First thing to mention, this is not the score track that I
2081
+ described before. By default, MACS generates wiggle files for
2082
+ fragment pileup for every chromosomes separately. When you use
2083
+ --single-wig option, MACS will generate a single wiggle file for
2084
+ all the chromosomes so you will get a wig.gz for TREATMENT and
2085
+ another wig.gz for CONTROL if available.
2086
+
2087
+ ** Sniff -- automatic format detection
2088
+
2089
+ Now, by default or "-f AUTO", MACS will decide the input file
2090
+ format automatically. Technically, it will try to read at most
2091
+ 1000 records for the first 10 non-comment lines. If it succeeds,
2092
+ the format is decided. I recommend not to use AUTO and specify the
2093
+ right format for your input files, unless you combine different
2094
+ formats in a single MACS run.
2095
+
2096
+ * Options changes
2097
+
2098
+ --single-wig and --keep-dup are added. Check previous section in
2099
+ ChangeLog for detail.
2100
+
2101
+ -f (--format) AUTO is now the default option.
2102
+
2103
+ --slocal default: 1000
2104
+ --llocal default: 10000
2105
+
2106
+ * Bug fixed
2107
+
2108
+ Setup script will stop the installation if python version is not
2109
+ python2.6 or python2.7.
2110
+
2111
+ Local lambda calculation has been changed back. MACS will check
2112
+ peak_region, slocal( default 1K) and llocal (default 10K) for the
2113
+ local bias. The previous 200bps default will cause MACS misses
2114
+ some peaks where the input bias is very sharp.
2115
+
2116
+ sam2bed.py script is corrected.
2117
+
2118
+ Relative pos in xls output is fixed.
2119
+
2120
+ Parser for ELAND_export is fixed to pass some of the no match
2121
+ lines. And elandexport2bed.py is fixed too. ( however I can't
2122
+ guarantee that it works on any eland_export files. )
2123
+
2124
+ 2010-06-04 Tao Liu <taoliu@jimmy.harvard.edu>
2125
+ Version 1.4.0alpha2 (be smarter)
2126
+
2127
+ * Options changes
2128
+
2129
+ --gsize now provides shortcuts for common genomes, including
2130
+ human, mouse, C. elegans and fruitfly.
2131
+
2132
+ --llocal now will be 5000 bps if there is no input file, so that
2133
+ local lambda doesn't overkill enriched binding sites.
2134
+
2135
+ 2010-06-02 Tao Liu <taoliu@jimmy.harvard.edu>
2136
+ Version 1.4alpha (be smarter)
2137
+
2138
+ * Options changes
2139
+
2140
+ --tsize option is redesigned. MACS will use the first 10 lines of
2141
+ the input to decide the tag size. If user specifies --tsize, it
2142
+ will override the auto decided tsize.
2143
+
2144
+ --lambdaset is replaced by --slocal and --llocal which mean the
2145
+ small local region and large local region.
2146
+
2147
+ --bw has no effect on the scan-window size now. It only affects the
2148
+ paired-peaks model process.
2149
+
2150
+ * Model building
2151
+
2152
+ During the model building, MACS will pick out the enriched regions
2153
+ which are not too high and not too low to build the paired-peak
2154
+ model. Default the region is from fold 10 to fold 30. If MACS
2155
+ fails to build the model, by default it will use the nomodel
2156
+ settings, like shiftsize=100bps, to shift and extend each
2157
+ tags. This behavior can be turned off by '--off-auto'.
2158
+
2159
+ * Output files
2160
+
2161
+ An extra file including all the summit positions are saved in
2162
+ *_summits.bed file. An option '--call-subpeaks' will invoke
2163
+ PeakSplitter developed by Mali Salmon to split wide peaks into
2164
+ smaller subpeaks.
2165
+
2166
+ * Sniff ( will in beta )
2167
+
2168
+ Automatically recognize the input file format, so use can combine
2169
+ different format in one MACS run.
2170
+
2171
+ Not implemented features/TODO:
2172
+
2173
+ * Algorithms ( in near future? )
2174
+
2175
+ MACS will try to refine the peak boundaries by calculating the
2176
+ scores for every point in the candidate peak regions. The score
2177
+ will be the -10*log(10,pvalue) on a local poisson distribution. A
2178
+ cutoff specified by users (--pvalue) will be applied to find the
2179
+ precise sub-peaks in the original candidate peak region. Peak
2180
+ boudaries and peak summits positions will be saved in separate BED
2181
+ files.
2182
+
2183
+ * Single wiggle track ( in near future? )
2184
+
2185
+ A single wiggle track will be generated to save the scores within
2186
+ candidate peak regions in the 10bps resolution. The wiggle file
2187
+ is in fixedStep format.
2188
+
2189
+
2190
+ 2009-10-16 Tao Liu <taoliu@jimmy.harvard.edu>
2191
+ Version 1.3.7.1 (Oktoberfest, bug fixed #1)
2192
+
2193
+ * bin/Constants.py
2194
+
2195
+ Fixed typo. FCSTEP -> FESTEP
2196
+
2197
+ * lib/PeakDetect.py
2198
+
2199
+ The 'femax' attribute bug is fixed
2200
+
2201
+ 2009-10-02 Tao Liu <taoliu@jimmy.harvard.edu>
2202
+ Version 1.3.7 (Oktoberfest)
2203
+
2204
+ * bin/macs, lib/PeakDetect.py, lib/IO/__init__.py, lib/OptValidator.py
2205
+
2206
+ Enhancements by Peter Chines:
2207
+
2208
+ 1. gzip files are supported.
2209
+ 2. when --diag is on, user can set the increment and endpoint for
2210
+ fold enrichment analysis by setting --fe-step and --fe-max.
2211
+
2212
+ Enhancements by Davide Cittaro:
2213
+
2214
+ 1. BAM and SAM formats are supported.
2215
+ 2. small changes in the header lines of wiggle output.
2216
+
2217
+ Enhancements by Me:
2218
+ 1. I added --fe-min option;
2219
+ 2. Bowtie ascii output with suffix ".map" is supported.
2220
+
2221
+ Bug fixed:
2222
+
2223
+ 1. --nolambda bug is fixed. ( reported by Martin in JHU )
2224
+ 2. --diag bug is fixed. ( reported by Bogdan Tanasa )
2225
+ 3. Function to remove suffix '.fa' is fixed. ( reported by Jeff Johnston )
2226
+ 4. Some "fold change" have been changed to "fold enrichment".
2227
+
2228
+ 2009-06-10 Tao Liu <taoliu@jimmy.harvard.edu>
2229
+ Version 1.3.6.1 (default parameter change)
2230
+
2231
+ * bin/macs, lib/PeakDetect.py
2232
+
2233
+ "--oldfdr" is removed. The 'oldfdr' behaviour becomes
2234
+ default. "--futurefdr" is added which can turn on the 'new' method
2235
+ introduced in 1.3.6. By default it's off.
2236
+
2237
+ * lib/PeakDetect.py
2238
+
2239
+ Fixed a bug. p-value is corrected a little bit.
2240
+
2241
+
2242
+ 2009-05-11 Tao Liu <taoliu@jimmy.harvard.edu>
2243
+ Version 1.3.6 (Birthday cake)
2244
+
2245
+ * bin/macs
2246
+
2247
+ "track name" is added to the header of BED output file.
2248
+
2249
+ Now the default peak detection method is to consider 5k and 10k
2250
+ nearby regions in treatment data and peak location, 1k, 5k, and
2251
+ 10k regions in control data to calculate local bias. The old
2252
+ method can be called through '--old' option.
2253
+
2254
+ Information about how many total/unique tags in treatment or
2255
+ control will be saved in final .xls output.
2256
+
2257
+ * lib/IO/__init__.py
2258
+
2259
+ ".fa" will be removed from input tag alignment so only the
2260
+ chromosome names are kept.
2261
+
2262
+ WigTrackI class is added for Wiggle like data structure. (not used
2263
+ now)
2264
+
2265
+ The parser for ELAND multi PET files has been fixed. Now the 5'
2266
+ tag position for a pair will be kept, whereas in the previous
2267
+ version, the middle points are kept.
2268
+
2269
+ * lib/IO/BinKeeper.py
2270
+
2271
+ BinKeeperI class is inspired by Jim Kent's library for UCSC genome
2272
+ browser, which can quickly access certain region for values in a
2273
+ large wiggle like data file. (not used now)
2274
+
2275
+ * lib/OptValidator.py
2276
+
2277
+ typo fixed.
2278
+
2279
+ * lib/PeakDetect.py
2280
+
2281
+ Now the default peak detection method is to consider 5k and 10k
2282
+ nearby regions in treatment data and peak location, 1k, 5k, and
2283
+ 10k regions in control data to calculate local bias. The old
2284
+ method can be called through '--old' option.
2285
+
2286
+ Two columns have beed added to BED output file. 4th column: peak
2287
+ name; 5th column: peak score using -10log(10,pvalue) as score.
2288
+
2289
+ * setup.py
2290
+
2291
+ Add support to build a Mac App through 'setup.py py2app', or a
2292
+ Windows executable through 'setup.py py2exe'. You need to install
2293
+ py2app or py2exe package in order to use these functions.
2294
+
2295
+ 2009-02-12 Tao Liu <taoliu@jimmy.harvard.edu>
2296
+ Version 1.3.5 (local lambda fixed, typo fixed, model figure improved)
2297
+
2298
+ * PeakDetect.py
2299
+
2300
+ Now, besides 1k, 5k, 10k, MACS will also consider peak size region
2301
+ in control data to calculate local lambda for each peak. Peak
2302
+ calling results will be slightly different with previous version,
2303
+ beware!
2304
+
2305
+ * OptValidator.py
2306
+
2307
+ Typo fixed, ELANDParser -> ELANDResultParser
2308
+
2309
+ * OutputWriter.py
2310
+
2311
+ Now, modeled d value will be shown on the model figure.
2312
+
2313
+ 2009-01-06 Tao Liu <taoliu@jimmy.harvard.edu>
2314
+ Version 1.3.4 (Happy New Year Version, bug fixed, ELAND multi/PET support)
2315
+
2316
+ * macs, IO/__init__.py, PeakDetect.py
2317
+
2318
+ Add support for ELAND multi format. Add support for Pair-End
2319
+ experiment, in this case, 5'end and 3'end ELAND multi format files
2320
+ are required for treatment or control data. See 00README file for
2321
+ detail.
2322
+
2323
+ Add wigextend option.
2324
+
2325
+ Add petdist option for Pair-End Tag experiment, which is the best
2326
+ distance between 5' and 3' tags.
2327
+
2328
+ * PeakDetect.py
2329
+
2330
+ Fixed a bug which cause the end positions of every peak region
2331
+ incorrectly added by 1 bp. ( Thanks Mali Salmon!)
2332
+
2333
+ * OutputWriter.py
2334
+
2335
+ Fix bugs while generating wiggle files. The start position of
2336
+ wiggle file is set to 1 instead of 0.
2337
+
2338
+ Fix a bug that every 10M bps, signals in the first 'd' range are
2339
+ lower than actual. ( Thanks Mali Salmon!)
2340
+
2341
+
2342
+ 2008-12-03 Tao Liu <taoliu@jimmy.harvard.edu>
2343
+ Version 1.3.3 (wiggle bugs fixed)
2344
+
2345
+ * OutputWriter.py
2346
+
2347
+ Fix bugs while generating wiggle files. 1. 'span=' is added to
2348
+ 'variableStep' line; 2. previously, every 10M bps, the coordinates
2349
+ were wrongly shifted to the right for 'd' basepairs.
2350
+
2351
+ * macs, PeakDetect.py
2352
+
2353
+ Add an option to save wiggle files on different resolution.
2354
+
2355
+ 2008-10-02 Tao Liu <taoliu@jimmy.harvard.edu>
2356
+ Version 1.3.2 (tiny bugs fixed)
2357
+
2358
+ * IO/__init__.py
2359
+
2360
+ Fix 65536 -> 65535. ( Thank Joon)
2361
+
2362
+ * Prob.py
2363
+
2364
+ Improved for binomial function with extra large number. Imported
2365
+ from Cistrome project.
2366
+
2367
+ * PeakDetect.py
2368
+
2369
+ If treatment channel misses reads in some chromosome included in
2370
+ control channel, or vice versa, MACS will not exit. (Thank Shaun
2371
+ Mahony)
2372
+
2373
+ Instead, MACS will fake a tag at position -1 when calling
2374
+ treatment peaks vs control, but will ignore the chromosome while
2375
+ calling negative peaks.
2376
+
2377
+ 2008-09-04 Tao Liu <taoliu@jimmy.harvard.edu>
2378
+ Version 1.3.1 (tiny bugs fixed version)
2379
+
2380
+ * Prob.py
2381
+
2382
+ Hyunjin Gene Shin contributed some codes to Prob.py. Now the
2383
+ binomial functions can tolerate large and small numbers.
2384
+
2385
+ * IO/__init__.py
2386
+
2387
+ Parsers now split lines in BED/ELAND file using any
2388
+ whitespaces. 'track' or 'browser' lines will be regarded as
2389
+ comment lines. A bug fixed when throwing StrandFormatError. The
2390
+ maximum redundant tag number at a single position can be no less
2391
+ than 65536.
2392
+
2393
+
2394
+ 2008-07-15 Tao Liu <taoliu@jimmy.harvard.edu>
2395
+ Version 1.3 (naming clarification version)
2396
+
2397
+ * Naming clarification changes according to our manuscript:
2398
+
2399
+ 'frag_len' is changed to 'd'.
2400
+
2401
+ 'fold_change' is changed to 'fold_enrichment'.
2402
+
2403
+ Suggest '--bw' parameter to be determined by users from the real
2404
+ sonication size.
2405
+
2406
+ Maximum FDR is 100% in the output file.
2407
+
2408
+ And other clarifications in 00README file and the documents on the
2409
+ website.
2410
+
2411
+ * IO/__init__.py
2412
+ If the redundant tag number at a single position is over 32767,
2413
+ just remember 32767, instead of raising an overflow exception.
2414
+
2415
+ * setup.py
2416
+ fixed a typo.
2417
+
2418
+ * PeakDetect.py
2419
+ Bug fixed for diagnosis report.
2420
+
2421
+
2422
+ 2008-07-10 Tao Liu <taoliu@jimmy.harvard.edu>
2423
+ Version 1.2.2gamma
2424
+
2425
+ * Serious bugs fix:
2426
+
2427
+ Poisson distribution CDF and inverse CDF functions are
2428
+ corrected. They can produce right results even for huge lambda
2429
+ now. So that the p-value and FDR values in the final excel sheet
2430
+ are corrected.
2431
+
2432
+ IO package now can tolerate some rare cases; ELANDParser in IO
2433
+ package is fixed. (Thank Bogdan)
2434
+
2435
+ * Improvement:
2436
+
2437
+ Reverse paired peaks in model are rejected. So there will be no
2438
+ negative 'frag_len'. (Thank Bogdan)
2439
+
2440
+ * Features added:
2441
+
2442
+ Diagnosis function is completed. Which can output a table file for
2443
+ users to estimate their sequencing depth.
2444
+
2445
+
2446
+ 2008-06-30 Tao Liu <taoliu@jimmy.harvard.edu>
2447
+ Version 1.2
2448
+
2449
+ * Probe.py is added!
2450
+
2451
+ GSL is totally removed from MACS. Instead, I have implemented the
2452
+ CDF and inverse CDF for poisson and binomial distribution purely
2453
+ in python.
2454
+
2455
+ * Constants.py is added!
2456
+
2457
+ Organize constants used in MACS in the Constants.py file.
2458
+
2459
+ * All other files are modified!
2460
+
2461
+ Foldchange calculation is modified. Now the foldchange only be
2462
+ calculated at the peak summit position instead of the whole peak
2463
+ region. The values will be higher and more robust than before.
2464
+
2465
+ Features added:
2466
+
2467
+ 1. MACS can save wiggle format files containing the tag number at
2468
+ every 10 bp along the genome. Tags are shifted according to our
2469
+ model before they are calculated.
2470
+
2471
+ 2. Model building and local lambda calculation can be skipped with
2472
+ certain options.
2473
+
2474
+ 3. A diagnosis report can be generated through '--diag'
2475
+ option. This report can help you get an assumption about the
2476
+ sequencing saturation. This funtion is only in beta stage.
2477
+
2478
+ 4. FDR calculation speed is highly improved.
2479
+
2480
+ 2008-05-28 Tao Liu <taoliu@jimmy.harvard.edu>
2481
+ Version 1.1
2482
+
2483
+ * TabIO, PeakModel.py ...
2484
+ Bug fixed to let MACS tolerate some cases while there is no tag on
2485
+ either plus strand or minus strand.
2486
+
2487
+ * setup.py
2488
+ Check the version of python. If the version is lower than 2.4,
2489
+ refuse to install with warning.
2490
+