domainator 1.0.0rc1__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.

Potentially problematic release.


This version of domainator might be problematic. Click here for more details.

Files changed (254) hide show
  1. domainator-1.0.0rc1/CHANGELOG.md +220 -0
  2. domainator-1.0.0rc1/CITATION.cff +38 -0
  3. domainator-1.0.0rc1/LICENSE.txt +43 -0
  4. domainator-1.0.0rc1/MANIFEST.in +8 -0
  5. domainator-1.0.0rc1/MIGRATION.md +560 -0
  6. domainator-1.0.0rc1/PKG-INFO +470 -0
  7. domainator-1.0.0rc1/README.md +408 -0
  8. domainator-1.0.0rc1/pyproject.toml +142 -0
  9. domainator-1.0.0rc1/rust/Cargo.lock +294 -0
  10. domainator-1.0.0rc1/rust/Cargo.toml +22 -0
  11. domainator-1.0.0rc1/rust/src/bgzf_compress.rs +132 -0
  12. domainator-1.0.0rc1/rust/src/bgzf_scan.rs +226 -0
  13. domainator-1.0.0rc1/rust/src/lib.rs +126 -0
  14. domainator-1.0.0rc1/rust/src/parser.rs +960 -0
  15. domainator-1.0.0rc1/setup.cfg +4 -0
  16. domainator-1.0.0rc1/setup.py +14 -0
  17. domainator-1.0.0rc1/src/domainator/__init__.py +38 -0
  18. domainator-1.0.0rc1/src/domainator/__main__.py +7 -0
  19. domainator-1.0.0rc1/src/domainator/_hmm_kernels.py +174 -0
  20. domainator-1.0.0rc1/src/domainator/_mp.py +160 -0
  21. domainator-1.0.0rc1/src/domainator/bgzf_compress.py +36 -0
  22. domainator-1.0.0rc1/src/domainator/build_projection.py +256 -0
  23. domainator-1.0.0rc1/src/domainator/build_ssn.py +471 -0
  24. domainator-1.0.0rc1/src/domainator/build_tree.py +513 -0
  25. domainator-1.0.0rc1/src/domainator/clean_sequences.py +263 -0
  26. domainator-1.0.0rc1/src/domainator/cli/__init__.py +94 -0
  27. domainator-1.0.0rc1/src/domainator/cli/common.py +383 -0
  28. domainator-1.0.0rc1/src/domainator/cli/completion.py +69 -0
  29. domainator-1.0.0rc1/src/domainator/cli/doctor.py +150 -0
  30. domainator-1.0.0rc1/src/domainator/cli/manifest.py +173 -0
  31. domainator-1.0.0rc1/src/domainator/cli/registry.py +86 -0
  32. domainator-1.0.0rc1/src/domainator/color_genbank.py +199 -0
  33. domainator-1.0.0rc1/src/domainator/color_table_to_legend.py +88 -0
  34. domainator-1.0.0rc1/src/domainator/colors.py +272 -0
  35. domainator-1.0.0rc1/src/domainator/compare_contigs.py +684 -0
  36. domainator-1.0.0rc1/src/domainator/cytoscape.py +311 -0
  37. domainator-1.0.0rc1/src/domainator/data_matrix.py +1015 -0
  38. domainator-1.0.0rc1/src/domainator/db_download.py +1102 -0
  39. domainator-1.0.0rc1/src/domainator/db_index.py +346 -0
  40. domainator-1.0.0rc1/src/domainator/dedup.py +109 -0
  41. domainator-1.0.0rc1/src/domainator/deduplicate_genbank.py +444 -0
  42. domainator-1.0.0rc1/src/domainator/domain_search.py +593 -0
  43. domainator-1.0.0rc1/src/domainator/domainate.py +1503 -0
  44. domainator-1.0.0rc1/src/domainator/edge_types.py +94 -0
  45. domainator-1.0.0rc1/src/domainator/enum_report.py +934 -0
  46. domainator-1.0.0rc1/src/domainator/errors.py +26 -0
  47. domainator-1.0.0rc1/src/domainator/expr.py +146 -0
  48. domainator-1.0.0rc1/src/domainator/external.py +91 -0
  49. domainator-1.0.0rc1/src/domainator/extract_domains.py +318 -0
  50. domainator-1.0.0rc1/src/domainator/extract_peptides.py +311 -0
  51. domainator-1.0.0rc1/src/domainator/extract_unannotated.py +194 -0
  52. domainator-1.0.0rc1/src/domainator/filter_domains.py +242 -0
  53. domainator-1.0.0rc1/src/domainator/find_features.py +839 -0
  54. domainator-1.0.0rc1/src/domainator/foldseek.py +127 -0
  55. domainator-1.0.0rc1/src/domainator/format_db.py +322 -0
  56. domainator-1.0.0rc1/src/domainator/genbank.py +101 -0
  57. domainator-1.0.0rc1/src/domainator/genbank_to_fasta.py +31 -0
  58. domainator-1.0.0rc1/src/domainator/hmmer_build.py +159 -0
  59. domainator-1.0.0rc1/src/domainator/hmmer_compare.py +147 -0
  60. domainator-1.0.0rc1/src/domainator/hmmer_report.py +188 -0
  61. domainator-1.0.0rc1/src/domainator/hmmer_search.py +434 -0
  62. domainator-1.0.0rc1/src/domainator/hmmer_select.py +232 -0
  63. domainator-1.0.0rc1/src/domainator/hmmio.py +402 -0
  64. domainator-1.0.0rc1/src/domainator/infernal_build.py +187 -0
  65. domainator-1.0.0rc1/src/domainator/kmer_dist.py +705 -0
  66. domainator-1.0.0rc1/src/domainator/lean_record.py +494 -0
  67. domainator-1.0.0rc1/src/domainator/location_ops.py +226 -0
  68. domainator-1.0.0rc1/src/domainator/locations.py +595 -0
  69. domainator-1.0.0rc1/src/domainator/matrix_output.py +70 -0
  70. domainator-1.0.0rc1/src/domainator/matrix_report.py +452 -0
  71. domainator-1.0.0rc1/src/domainator/model.py +345 -0
  72. domainator-1.0.0rc1/src/domainator/offsets.py +341 -0
  73. domainator-1.0.0rc1/src/domainator/output_guardrails.py +157 -0
  74. domainator-1.0.0rc1/src/domainator/outputs.py +126 -0
  75. domainator-1.0.0rc1/src/domainator/partial.py +236 -0
  76. domainator-1.0.0rc1/src/domainator/plot_contigs.py +288 -0
  77. domainator-1.0.0rc1/src/domainator/report_columns.py +87 -0
  78. domainator-1.0.0rc1/src/domainator/report_html.py +117 -0
  79. domainator-1.0.0rc1/src/domainator/rotate_contigs.py +382 -0
  80. domainator-1.0.0rc1/src/domainator/select_by_cds.py +713 -0
  81. domainator-1.0.0rc1/src/domainator/select_by_contig.py +392 -0
  82. domainator-1.0.0rc1/src/domainator/select_by_coord.py +241 -0
  83. domainator-1.0.0rc1/src/domainator/seq_dist.py +970 -0
  84. domainator-1.0.0rc1/src/domainator/seqio.py +512 -0
  85. domainator-1.0.0rc1/src/domainator/sort_contigs.py +142 -0
  86. domainator-1.0.0rc1/src/domainator/sparse_scores.py +124 -0
  87. domainator-1.0.0rc1/src/domainator/sparsify.py +161 -0
  88. domainator-1.0.0rc1/src/domainator/split_by_cluster.py +395 -0
  89. domainator-1.0.0rc1/src/domainator/ssn_bundle.py +314 -0
  90. domainator-1.0.0rc1/src/domainator/ssn_edges.py +769 -0
  91. domainator-1.0.0rc1/src/domainator/ssn_hierarchy.py +601 -0
  92. domainator-1.0.0rc1/src/domainator/ssn_navigator.py +345 -0
  93. domainator-1.0.0rc1/src/domainator/structure_dist.py +504 -0
  94. domainator-1.0.0rc1/src/domainator/structure_domainate.py +167 -0
  95. domainator-1.0.0rc1/src/domainator/structure_lib.py +1343 -0
  96. domainator-1.0.0rc1/src/domainator/structure_search.py +286 -0
  97. domainator-1.0.0rc1/src/domainator/structure_to_genbank.py +117 -0
  98. domainator-1.0.0rc1/src/domainator/summary_report.py +475 -0
  99. domainator-1.0.0rc1/src/domainator/table_writers.py +103 -0
  100. domainator-1.0.0rc1/src/domainator/taxonomy/__init__.py +4 -0
  101. domainator-1.0.0rc1/src/domainator/taxonomy/ncbi.py +502 -0
  102. domainator-1.0.0rc1/src/domainator/taxonomy/records.py +255 -0
  103. domainator-1.0.0rc1/src/domainator/text_plot.py +38 -0
  104. domainator-1.0.0rc1/src/domainator/transform_matrix.py +249 -0
  105. domainator-1.0.0rc1/src/domainator/trim_contigs.py +226 -0
  106. domainator-1.0.0rc1/src/domainator/viewer.py +76 -0
  107. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/appearance.js +340 -0
  108. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/bundle_io.js +117 -0
  109. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/canvas_view.js +131 -0
  110. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/color_picker.js +701 -0
  111. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/colors.js +374 -0
  112. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/column_charts.js +1449 -0
  113. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/controls.js +91 -0
  114. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/export.js +88 -0
  115. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/gradient_stops.js +512 -0
  116. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/metadata.js +143 -0
  117. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/metadata_table.js +593 -0
  118. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/selection_presets.js +159 -0
  119. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/session_state.js +431 -0
  120. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/shapes.js +165 -0
  121. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/svg_context.js +119 -0
  122. domainator-1.0.0rc1/src/domainator/viewer_app/js/common/table_editing.js +851 -0
  123. domainator-1.0.0rc1/src/domainator/viewer_app/js/viewer.js +322 -0
  124. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/projection/projection.js +529 -0
  125. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/projection/view.js +84 -0
  126. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/cluster_view.js +1377 -0
  127. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/controls.js +199 -0
  128. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/extraction.js +582 -0
  129. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/layout_core.js +861 -0
  130. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/layout_worker.js +15 -0
  131. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/layouts.js +1046 -0
  132. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/slider.js +561 -0
  133. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/split_chart.js +543 -0
  134. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/split_chart_hover.js +448 -0
  135. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/ssn/view.js +218 -0
  136. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/tree/controls.js +426 -0
  137. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/tree/msa.js +113 -0
  138. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/tree/render.js +586 -0
  139. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/tree/rooting.js +308 -0
  140. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/tree/tree.js +292 -0
  141. domainator-1.0.0rc1/src/domainator/viewer_app/js/views/tree/view.js +145 -0
  142. domainator-1.0.0rc1/src/domainator/viewer_app/viewer.css +1204 -0
  143. domainator-1.0.0rc1/src/domainator/viewer_app/viewer.html +531 -0
  144. domainator-1.0.0rc1/src/domainator/viewer_bundle.py +216 -0
  145. domainator-1.0.0rc1/src/domainator/viewer_html.py +163 -0
  146. domainator-1.0.0rc1/src/domainator/web/common/charts.js +426 -0
  147. domainator-1.0.0rc1/src/domainator/web/common/download.js +70 -0
  148. domainator-1.0.0rc1/src/domainator/web/common/hierarchy.js +165 -0
  149. domainator-1.0.0rc1/src/domainator/web/common/line_chart.js +348 -0
  150. domainator-1.0.0rc1/src/domainator/web/common/pack.js +330 -0
  151. domainator-1.0.0rc1/src/domainator/web/common/panels.js +54 -0
  152. domainator-1.0.0rc1/src/domainator/web/common/payload.js +48 -0
  153. domainator-1.0.0rc1/src/domainator/web/common/report.css +298 -0
  154. domainator-1.0.0rc1/src/domainator/web/common/table.js +515 -0
  155. domainator-1.0.0rc1/src/domainator/web/reports/matrix_report.html +21 -0
  156. domainator-1.0.0rc1/src/domainator/web/reports/matrix_report.js +534 -0
  157. domainator-1.0.0rc1/src/domainator/web/reports/plot_contigs.html +21 -0
  158. domainator-1.0.0rc1/src/domainator/web/reports/plot_contigs.js +340 -0
  159. domainator-1.0.0rc1/src/domainator/web/reports/summary_report.html +21 -0
  160. domainator-1.0.0rc1/src/domainator/web/reports/summary_report.js +132 -0
  161. domainator-1.0.0rc1/src/domainator/web/reports/table_report.html +25 -0
  162. domainator-1.0.0rc1/src/domainator/web/reports/table_report.js +21 -0
  163. domainator-1.0.0rc1/src/domainator.egg-info/PKG-INFO +470 -0
  164. domainator-1.0.0rc1/src/domainator.egg-info/SOURCES.txt +252 -0
  165. domainator-1.0.0rc1/src/domainator.egg-info/dependency_links.txt +1 -0
  166. domainator-1.0.0rc1/src/domainator.egg-info/entry_points.txt +2 -0
  167. domainator-1.0.0rc1/src/domainator.egg-info/requires.txt +39 -0
  168. domainator-1.0.0rc1/src/domainator.egg-info/top_level.txt +1 -0
  169. domainator-1.0.0rc1/test/test_agent_outputs.py +408 -0
  170. domainator-1.0.0rc1/test/test_annotation_selection.py +278 -0
  171. domainator-1.0.0rc1/test/test_build_projection.py +224 -0
  172. domainator-1.0.0rc1/test/test_build_ssn.py +592 -0
  173. domainator-1.0.0rc1/test/test_build_tree.py +304 -0
  174. domainator-1.0.0rc1/test/test_cds_selection.py +221 -0
  175. domainator-1.0.0rc1/test/test_clean_sequences.py +280 -0
  176. domainator-1.0.0rc1/test/test_cli.py +252 -0
  177. domainator-1.0.0rc1/test/test_color_genbank.py +233 -0
  178. domainator-1.0.0rc1/test/test_color_table_to_legend.py +33 -0
  179. domainator-1.0.0rc1/test/test_compare_contigs.py +795 -0
  180. domainator-1.0.0rc1/test/test_coordinates.py +141 -0
  181. domainator-1.0.0rc1/test/test_cytoscape.py +40 -0
  182. domainator-1.0.0rc1/test/test_data_matrix.py +1483 -0
  183. domainator-1.0.0rc1/test/test_db_download.py +502 -0
  184. domainator-1.0.0rc1/test/test_db_index.py +229 -0
  185. domainator-1.0.0rc1/test/test_dedup.py +255 -0
  186. domainator-1.0.0rc1/test/test_deduplicate_genbank.py +447 -0
  187. domainator-1.0.0rc1/test/test_defaults_match_cli.py +37 -0
  188. domainator-1.0.0rc1/test/test_docs_commands.py +122 -0
  189. domainator-1.0.0rc1/test/test_domain_search.py +1199 -0
  190. domainator-1.0.0rc1/test/test_domainate.py +1026 -0
  191. domainator-1.0.0rc1/test/test_enum_report.py +1088 -0
  192. domainator-1.0.0rc1/test/test_external.py +79 -0
  193. domainator-1.0.0rc1/test/test_extract_domains.py +358 -0
  194. domainator-1.0.0rc1/test/test_extract_peptides.py +341 -0
  195. domainator-1.0.0rc1/test/test_extract_unannotated.py +112 -0
  196. domainator-1.0.0rc1/test/test_filter_domains.py +252 -0
  197. domainator-1.0.0rc1/test/test_find_features.py +431 -0
  198. domainator-1.0.0rc1/test/test_foldseek.py +185 -0
  199. domainator-1.0.0rc1/test/test_format_db.py +252 -0
  200. domainator-1.0.0rc1/test/test_genbank.py +90 -0
  201. domainator-1.0.0rc1/test/test_genbank_to_fasta.py +21 -0
  202. domainator-1.0.0rc1/test/test_hmmer_build.py +224 -0
  203. domainator-1.0.0rc1/test/test_hmmer_compare.py +91 -0
  204. domainator-1.0.0rc1/test/test_hmmer_report.py +100 -0
  205. domainator-1.0.0rc1/test/test_hmmer_search.py +189 -0
  206. domainator-1.0.0rc1/test/test_hmmer_select.py +157 -0
  207. domainator-1.0.0rc1/test/test_infernal_build.py +148 -0
  208. domainator-1.0.0rc1/test/test_kmer_dist.py +311 -0
  209. domainator-1.0.0rc1/test/test_lean_record.py +421 -0
  210. domainator-1.0.0rc1/test/test_library_api.py +165 -0
  211. domainator-1.0.0rc1/test/test_list_arguments.py +171 -0
  212. domainator-1.0.0rc1/test/test_location_ops.py +151 -0
  213. domainator-1.0.0rc1/test/test_manifest.py +106 -0
  214. domainator-1.0.0rc1/test/test_matrix_report.py +739 -0
  215. domainator-1.0.0rc1/test/test_mp.py +145 -0
  216. domainator-1.0.0rc1/test/test_ncbi_taxonomy.py +156 -0
  217. domainator-1.0.0rc1/test/test_outputs.py +53 -0
  218. domainator-1.0.0rc1/test/test_partition.py +142 -0
  219. domainator-1.0.0rc1/test/test_plot_contigs.py +177 -0
  220. domainator-1.0.0rc1/test/test_region_naming.py +260 -0
  221. domainator-1.0.0rc1/test/test_report_browser.py +643 -0
  222. domainator-1.0.0rc1/test/test_report_columns.py +42 -0
  223. domainator-1.0.0rc1/test/test_report_html.py +134 -0
  224. domainator-1.0.0rc1/test/test_rotate_contigs.py +399 -0
  225. domainator-1.0.0rc1/test/test_select_by_cds.py +583 -0
  226. domainator-1.0.0rc1/test/test_select_by_contig.py +286 -0
  227. domainator-1.0.0rc1/test/test_select_by_coord.py +158 -0
  228. domainator-1.0.0rc1/test/test_seq_dist.py +850 -0
  229. domainator-1.0.0rc1/test/test_sort_contigs.py +188 -0
  230. domainator-1.0.0rc1/test/test_sparsify.py +92 -0
  231. domainator-1.0.0rc1/test/test_split_by_cluster.py +420 -0
  232. domainator-1.0.0rc1/test/test_ssn_edges.py +162 -0
  233. domainator-1.0.0rc1/test/test_ssn_hierarchy.py +335 -0
  234. domainator-1.0.0rc1/test/test_ssn_viewer_browser.py +7119 -0
  235. domainator-1.0.0rc1/test/test_ssn_viewer_js.py +75 -0
  236. domainator-1.0.0rc1/test/test_structure_dist.py +570 -0
  237. domainator-1.0.0rc1/test/test_structure_domainate.py +192 -0
  238. domainator-1.0.0rc1/test/test_structure_lib.py +509 -0
  239. domainator-1.0.0rc1/test/test_structure_reseek.py +498 -0
  240. domainator-1.0.0rc1/test/test_structure_search.py +207 -0
  241. domainator-1.0.0rc1/test/test_structure_to_genbank.py +135 -0
  242. domainator-1.0.0rc1/test/test_summary_report.py +311 -0
  243. domainator-1.0.0rc1/test/test_taxonomy_filters.py +360 -0
  244. domainator-1.0.0rc1/test/test_taxonomy_records.py +84 -0
  245. domainator-1.0.0rc1/test/test_transform_matrix.py +707 -0
  246. domainator-1.0.0rc1/test/test_trim_contigs.py +138 -0
  247. domainator-1.0.0rc1/test/test_utils.py +924 -0
  248. domainator-1.0.0rc1/test/test_viewer.py +1181 -0
  249. domainator-1.0.0rc1/test/test_viewer_appearance_browser.py +645 -0
  250. domainator-1.0.0rc1/test/test_viewer_appearance_js.py +98 -0
  251. domainator-1.0.0rc1/test/test_viewer_image_export_browser.py +329 -0
  252. domainator-1.0.0rc1/test/test_viewer_projection_browser.py +221 -0
  253. domainator-1.0.0rc1/test/test_viewer_rooting_js.py +203 -0
  254. domainator-1.0.0rc1/test/test_viewer_tree_browser.py +594 -0
@@ -0,0 +1,220 @@
1
+ # Changelog
2
+
3
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). From 1.0 on,
4
+ Domainator follows [Semantic Versioning](https://semver.org/): what stays stable is listed in
5
+ [docs/stability.md](docs/stability.md).
6
+
7
+ ## v.1.0.0rc1
8
+
9
+ The 1.0rc1 release: one `domainator` command, consistent options, a documented Python API and
10
+ documented, versioned file formats. Many options were renamed; [MIGRATION.md](MIGRATION.md)
11
+ lists every change from 0.x.
12
+
13
+ Extraction options and matching Python keywords now use `keep_parent_id` instead
14
+ of `keep_name` on all three extract tools. `extract_unannotated` also renames
15
+ `min_length` to `min_region_length` and `min_score` to `min_annotation_score`.
16
+ Defaults and extraction behavior are unchanged; old names are not aliases.
17
+
18
+ ### Added
19
+ - domainate `--prostt5_weights` (and `--prostt5_device`): `--foldseek` searches can predict
20
+ their query 3Di sequences with foldseek's built-in ProstT5 instead of ESM-2 3B 3Di, which
21
+ needs only the foldseek binary and its weights (`foldseek databases ProstT5`), not PyTorch
22
+ or esmologs. `--foldseek` now needs exactly one of `--esm2_3di_weights` and
23
+ `--prostt5_weights`.
24
+ - db_download `--uniprot_dir` reads the UniProt release files from a local mirror instead of
25
+ downloading them, and an `--ncbi_summary` whose `ftp_path` is a local directory (relative to
26
+ the summary) is read from a local mirror of the NCBI genomes server. The tests now run
27
+ offline against small mirrors under `test/data/db_download/`.
28
+ - Shared additive contig/domain list and file argument setup for extract tools,
29
+ `select_by_cds`, and `select_by_contig`. Help now documents supported file formats,
30
+ normalization, empty-file behavior, and record selectors versus input restrictions;
31
+ existing defaults and selection behavior are unchanged.
32
+ - `extract_peptides --domain_expr` for Boolean domain selection and
33
+ `select_by_cds --name_field` for explicit CDS name resolution, with matching
34
+ keyword-only library parameters. Existing default name precedence is preserved.
35
+ - Shared taxonomy filters on extract_domains, extract_peptides, extract_unannotated,
36
+ and select_by_cds, consistent with select_by_contig and domain_search. CDS/domain
37
+ extraction filters original anchors, not expanded neighborhoods.
38
+ - `--taxonomy_unknown {exclude,include,evaluate,error}` on these selection, extraction,
39
+ and sequence-search tools. The default excludes unresolved taxonomy even for
40
+ negated criteria such as `~2`; empty-lineage evaluation is an explicit opt-in.
41
+ - `--has_search_hit` on select_by_cds, select_by_contig, extract_peptides, extract_domains,
42
+ and rotate_contigs: an independent search-hit selection criterion that bypasses domain
43
+ names, expressions, and database restrictions, honors quality cutoffs, and participates
44
+ in `--invert` where available. `--annotation_type {domainator,domain_search,all}` now
45
+ consistently selects annotation sources rather than implicitly adding search hits.
46
+ - The `domainator <command>` dispatcher, with `domainator --help`, `domainator completion
47
+ {bash,zsh,tcsh}` (shell tab completion) and `domainator doctor` (which optional programs
48
+ and packages are installed, and whether PyTorch can use the GPU).
49
+ - `-v/--verbose` and `-q/--quiet` on every command; errors you can fix are one-line messages.
50
+ - `--fasta_out` on every command that writes GenBank, alongside `-o/--genbank_out`.
51
+ - `docs/stability.md`, and a reference for every GenBank qualifier Domainator writes in
52
+ `docs/file_formats.md`.
53
+ - A `schema_version` key in the `--json_out` of summary_report, matrix_report and ssn_navigator.
54
+ - hmmer_compare `--alignments_out`.
55
+ - The Domainator Viewer: build_ssn, build_tree and build_projection now write one HTML page
56
+ (`--html_out`) and one bundle format (`--dvb_out`, `.dvb`, docs/file_formats.md) for networks,
57
+ trees and projections alike, with the same selection-driven metadata table, editing, colors,
58
+ presets, column charts and saved sessions for all three. `domainator viewer` writes the page
59
+ empty, or opening a bundle (`-i`).
60
+ - build_ssn `--html_out`, `--dvb_out`, `--merge_impact_metric`, `--label_by`, `--categorical` and
61
+ `--name`, replacing build_ssn_viewer; `--xgmml_out` is no longer required.
62
+ - build_tree `--html_out` and `--dvb_out`: the tree in the Domainator Viewer, with a multiple
63
+ sequence alignment beside it (`--msa`, aligned FASTA); clade selection, collapsing,
64
+ ladderizing, a cut slider that numbers the clades below it, and Newick and FASTA exports of
65
+ the selection. `--newick` reads a tree built elsewhere instead of a matrix. Also
66
+ `--color_by`, `--color_table`, `--color_table_out`, `--palette_offset`, `--max_color_groups`,
67
+ `--label_by`, `--categorical`, `--name`, `--subset`, `--subset_file` and `--max_output_gb`.
68
+ - build_projection `--dvb_out`, `--label_by`, `--categorical` and `--name`.
69
+ - `--palette_offset` on build_ssn, build_projection and plot_contigs, and a matching start
70
+ offset in the SSN viewer's color picker,
71
+ for coloring a second column without reusing the palette colors a first one used.
72
+ - A Zoom box in the SSN viewer's View Settings that shows and sets the zoom, so a zoom can
73
+ be copied from one viewer into another.
74
+ - `domainator describe`: a JSON description of every command and its options (the tool
75
+ manifest, docs/tool_manifest.md), for GUIs and workflow systems.
76
+ - A command-line reference generated from the parsers (docs/cli/), and a documentation site
77
+ with the Python API reference, published at https://nebiolabs.github.io/domainator/.
78
+ - Python extras: `projection` (UMAP), `structure` (torch and fair-esm), `dev`.
79
+ - `scripts/bench/bench.py`, a benchmark of common steps.
80
+ - The `domain_search` function searches SeqRecords as well as file partitions, reading a stream
81
+ of records only a few batches ahead of the search; it has a `batch_size` parameter.
82
+ - On free-threaded Python with the GIL off, parallel work runs in threads instead of processes
83
+ (`DOMAINATOR_MP_START_METHOD` overrides this). Domainator builds on free-threaded Python.
84
+
85
+ ### Changed
86
+ - Taxonomy follows NCBI's rank changes: `superkingdom` is gone from current taxdumps, so
87
+ enum_report's `taxid:`/`taxname:` examples use `domain` (Bacteria, Archaea, Eukaryota;
88
+ use `realm` for viruses). summary_report's taxonomy tree keeps the new `cellular root`
89
+ ("cellular organisms") and `acellular root` ("Viruses") ranks as nodes, as it does
90
+ domains, realms and kingdoms.
91
+ - Peptide and CDS-neighborhood selection now invert only the combined OR selectors,
92
+ never strand or other independent restrictions. With no selectors, both library
93
+ and CLI calls select all eligible CDSs; inversion warns and is ignored.
94
+ - domain_search and select_by_cds replace deduplication switches with the single-choice
95
+ `--dedup {none,id,sequence,sequence_rc}` policy. Their defaults remain
96
+ none and id, respectively. Ranked searches retain the top `--max_hits` winners
97
+ incrementally in each worker and the global merge, replacing weaker copies
98
+ without buffering all candidates. Deduplication relies on Domainator's
99
+ invariant that the same record ID identifies the same sequence.
100
+ The pre-release multi-value syntax is removed; configuration and library APIs
101
+ also use one policy string.
102
+ - Commands run as `domainator <command>`; the `<command>.py` scripts are gone.
103
+ - build_projection `--html_out` writes the Domainator Viewer, which selects points into a metadata
104
+ table; its on-screen legend is now the viewer's legend export.
105
+ - build_tree's xgmml output is laid out as a rectangular tree, colored with `--color_by`; its
106
+ internal nodes are named by their place in the tree in preorder.
107
+ - The SSN viewer is now the Domainator Viewer, and its sources moved from `ssn_viewer/` to
108
+ `viewer_app/` (`ssn_viewer_html.py` is now `viewer_html.py`).
109
+ - Networks for the viewer are `.dvb` bundles, and the viewer saves sessions and extractions as
110
+ `.dvb`. The viewer, `domainator viewer -i` and ssn_navigator still read `.dsnv` bundles.
111
+ - Every output is an explicit `--<content>_out` option, and nothing reads standard input or
112
+ writes standard output unless given `-`.
113
+ - Options with the same meaning have the same name everywhere (see MIGRATION.md).
114
+ - enum_report and hmmer_report choose their columns with one ordered `--columns` list
115
+ (`--columns domains length taxid:genus`) instead of one flag per column.
116
+ - Domainator uses upstream Biopython (1.85 to 1.88) instead of a bundled fork.
117
+ - Python 3.12 or newer is required; wheels use the stable ABI, so one wheel serves every
118
+ Python from 3.12 on (free-threaded Python builds its own).
119
+ - Matrix files are version 2.0 (symmetric matrices are stored as their upper triangle).
120
+ - The conda environment no longer installs TMbed and PyTorch; the README's "Optional: TMbed"
121
+ section says how to add them for `find_features --tmbed`.
122
+ - The command functions take only their main input positionally and are importable as
123
+ `from domainator.<command> import <command>`; their keyword parameters are named like the
124
+ command's options and default like them (domainate's e-value 0.001, not 10; `cpu=0`, all
125
+ cores). Every one has a docstring and type hints.
126
+ - Faster: neighborhood extraction (select_by_cds, domain_search) and extract_domains look only
127
+ at nearby features; HMM databases are prepared once per search, not once per batch.
128
+ - enum_report and hmmer_report `--html_out` pages work offline: the table (sort, per-column
129
+ filters, paging with first/last and go-to-page, movable and resizable columns, a right-click
130
+ "Copy cell value", CSV/TSV/JSON downloads) is Domainator's own JavaScript
131
+ instead of Tabulator from a CDN. The page carries the same rows as `--json_out`, so the
132
+ downloads keep full precision; the table still shows floats to one decimal place.
133
+ - summary_report's `--html_out` page works offline and no longer needs matplotlib or seaborn:
134
+ the contig length histogram (with hover counts, wheel zoom and drag to pan, a bin width box,
135
+ and SVG/PNG downloads) and the zoomable
136
+ taxonomy icicle are drawn by Domainator's own JavaScript instead of a seaborn PNG and d3
137
+ from a CDN, and the domain frequency and co-occurrence tables are sortable, filterable
138
+ tables like enum_report's. The page carries the `--json_out` document, so it shows the
139
+ same numbers. The taxonomy tree's children are now in a fixed order (most contigs first).
140
+ - summary_report's text report (`-o`) lays out its tables as plain aligned columns instead of
141
+ pandas' `to_string`, so the layout no longer changes with the pandas version: numbers are
142
+ right-aligned, `avg score` has one decimal place, and the co-occurrence and taxonomy tables
143
+ lose pandas' row numbers.
144
+ - matrix_report's `--html_out` page works offline: its charts are Domainator's own JavaScript
145
+ instead of Plotly and d3 from a CDN. The clusters-by-threshold and clusters-by-edges charts
146
+ zoom by dragging across them; the split chart lines up with the threshold slider under it,
147
+ and clicking it moves the threshold there; the arrow keys step the slider from stop to stop;
148
+ and each chart, the 100-largest-clusters bubble chart included, downloads as SVG or PNG. The
149
+ page carries the `--json_out` document, so its summary shows the same numbers, in a compact
150
+ block of figures beside each other. Dragging across a chart never selects the page's text.
151
+ - plot_contigs works offline: the plot is Domainator's own JavaScript instead of d3 from a CDN,
152
+ with zoom buttons, SVG/PNG downloads and a details box that lists every value in full. Each
153
+ part of a multi-part feature is now drawn where it is, not all at the feature's start. A
154
+ contig's details list a fixed set of record annotations (references and structured comments
155
+ are left out), and its metadata as the text in the file. `--color_by` needs `--metadata`
156
+ and must name one of its columns; a contig with no value is drawn gray instead of failing.
157
+ - build_projection `--html_out` replaces `--png_out`: an offline, interactive plot of the
158
+ projection, colored as the xgmml is, with each point's metadata on hover, legend entries that
159
+ hide and show their group, zoom and pan, a search by name, X/Y, X/Z and Y/Z views of a 3D
160
+ projection, and SVG/PNG downloads of the current view. A value missing from `--color_table`
161
+ is gray instead of failing.
162
+
163
+ ### Removed
164
+ - Taxonomy filters, `--hits_only`, and `--no_annotations` from domainate;
165
+ structure_domainate also drops the latter two. Their public Python functions
166
+ drop the corresponding keywords. Annotation tools retain every input record
167
+ and annotate hits; use the search tools for hit selection.
168
+ - `partition_seqfile` and `partition_seqids` (domainate and domain_search partition their
169
+ input themselves), and `--offset`/`--recs_to_read` (index the database with
170
+ `domainator format_db --index` instead).
171
+ - The `bashplotlib` dependency; `umap-learn` is now an optional extra.
172
+ - The matplotlib and seaborn dependencies: no command needs them. `build_projection
173
+ --png_out` is gone; its `--html_out` page downloads the plot as PNG or SVG.
174
+ - The bundled web GUI (`domainator_server`) and its Flask dependency; a separate GUI project is
175
+ being built on `domainator describe`.
176
+ - build_ssn_viewer: build_ssn `--html_out` and `--dvb_out` write the viewer and its bundle, and
177
+ `domainator viewer` writes the page on its own (see MIGRATION.md).
178
+
179
+ ### Fixed
180
+ - hmmer_build reads its input MSA by path, as hmmbuild does. Read through an open file, an
181
+ input whose format could not be guessed (including a blank one) crashed the interpreter with
182
+ a segmentation fault, a SELEX alignment failed with "illegal residue(s)", and the A2M,
183
+ sequential PHYLIP and PSI-BLAST formats were unreachable, since only a file's suffix tells
184
+ them apart (`.a2m`, `.phys`, `.pb`). Standard input is read from a temporary copy, with its
185
+ format guessed from the content.
186
+ - Strand-independent exact deduplication no longer collapses complement-only or
187
+ reverse-only nucleotide sequences; only reverse-complement copies are equivalent.
188
+ - A taxid missing from the NCBI taxonomy database (one newer than the database) crashed
189
+ summary_report and enum_report's taxonomy columns. It is now treated as unknown, with
190
+ blank names and ranks and one warning per taxid suggesting `--taxonomy_update`.
191
+ - summary_report listed domains with equal counts in an arbitrary order once there were more
192
+ than 16 domains; they are now in the order they were first seen.
193
+ - Many bugs found in the 1.0 review, including: `-e` cutoffs that dropped hits equal to the
194
+ cutoff; XGMML values escaped twice; Newick branch lengths rounded to two decimals;
195
+ build_tree crashing on deep trees; extract_peptides `-e` parsed as text; compressed output
196
+ ignored by some commands; a missing-qualifier error that printed a record to standard output;
197
+ matrix_report's kNN edge counts with long neighbor lists; build_projection with
198
+ `--color_table_out` and no colors, and `--pca_args` on sparse matrices.
199
+ - seq_dist's hmmer modes read the target profiles again for every query profile, and
200
+ hmmer_search and hmmer_compare sent every reference profile with every query; each worker
201
+ now gets them once.
202
+ - domain_search's `--batch_size` set the partition size but not how many CDSs were searched at
203
+ once.
204
+ - Output files were created readable only by their owner (mode 0600); they now get the usual
205
+ permissions from the umask.
206
+ - format_db `--shards` failed on compressed (gzip or BGZF) input, and format_db left an empty
207
+ temporary file next to the output whenever its input was compressed.
208
+ - db_download `--db uniprot` and `--db uniprot_gb` wrote only TrEMBL: the TrEMBL download
209
+ overwrote the SwissProt records already written. `--max_records` now caps the total across
210
+ both rather than each.
211
+ - db_download wrote NCBI genomes in the order their downloads finished, so the output, and
212
+ which genomes `--max_records` kept, depended on timing. Genomes are now appended in
213
+ assembly-summary order (rehydrated-file order for the datasets backend), by the parent
214
+ process, so a worker that fails partway never leaves part of a genome in the database.
215
+ - db_download `--append` was ignored for the UniProt databases, which overwrote the file.
216
+ - db_download `--db ncbi_nonredundant_all` failed unless a taxonomy filter was given, because
217
+ the taxonomy it needs to keep one genome per taxid was not loaded.
218
+ - db_download `--db ncbi_representative_all` kept genomes whose `refseq_category` is `na`,
219
+ the same set as `ncbi_all`; like `ncbi_representative_proks`, it now keeps only
220
+ representative and reference genomes.
@@ -0,0 +1,38 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use Domainator, please cite the paper below."
3
+ title: Domainator
4
+ type: software
5
+ license: MIT
6
+ repository-code: "https://github.com/nebiolabs/domainator"
7
+ authors:
8
+ - family-names: Johnson
9
+ given-names: Sean R.
10
+ - family-names: Ge
11
+ given-names: Andrew
12
+ - family-names: Lin
13
+ given-names: Yu-Cheng
14
+ - family-names: Sun
15
+ given-names: Zhiyi
16
+ preferred-citation:
17
+ type: article
18
+ title: "Domainator, a Flexible Software Suite for Domain-Based Annotation and Neighborhood Analysis, Identifies Proteins Involved in Antiviral Systems"
19
+ journal: Nucleic Acids Research
20
+ year: 2024
21
+ doi: 10.1093/nar/gkae1175
22
+ authors:
23
+ - family-names: Johnson
24
+ given-names: Sean R.
25
+ - family-names: Weigele
26
+ given-names: Peter
27
+ - family-names: Fomenkov
28
+ given-names: Alexey
29
+ - family-names: Ge
30
+ given-names: Andrew
31
+ - family-names: Vincze
32
+ given-names: Anna
33
+ - family-names: Eaglesham
34
+ given-names: James B.
35
+ - family-names: Roberts
36
+ given-names: Richard J.
37
+ - family-names: Sun
38
+ given-names: Zhiyi
@@ -0,0 +1,43 @@
1
+ Code derived from Biopython (found in src/domainator/Bio) is released under the "Biopython License Agreement" (given in full below). Unless stated otherwise in individual file headers, all Biopython's files are under the "Biopython License Agreement".
2
+
3
+ Some files are explicitly dual licensed under your choice of the "Biopython License Agreement" or the "BSD 3-Clause License" (both given in full below). This is with the intention of later offering all of Biopython under this dual licensing approach.
4
+
5
+ All other code (that is, code not in the "src/domainator/Bio" directory) is Licensed under the MIT License agreement (given in full below).
6
+
7
+ MIT License
8
+
9
+ Copyright (c) 2023 Sean R. Johnson
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+
29
+
30
+ Biopython License Agreement
31
+ Permission to use, copy, modify, and distribute this software and its documentation with or without modifications and for any purpose and without fee is hereby granted, provided that any copyright notices appear in all copies and that both those copyright notices and this permission notice appear in supporting documentation, and that the names of the contributors or copyright holders not be used in advertising or publicity pertaining to distribution of the software without specific prior permission.
32
+
33
+ THE CONTRIBUTORS AND COPYRIGHT HOLDERS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
34
+
35
+ BSD 3-Clause License
36
+ Copyright (c) 1999-2023, The Biopython Contributors All rights reserved.
37
+
38
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
39
+
40
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
41
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
42
+ Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
43
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,8 @@
1
+ # Include the native (Rust) extension sources in the sdist so source installs can
2
+ # compile domainator._gbfast (the build falls back to pure Python if Rust is absent).
3
+ include rust/Cargo.toml
4
+ recursive-include rust/src *.rs
5
+ exclude rust/.gitignore
6
+ prune rust/target
7
+ include rust/Cargo.lock
8
+ include CHANGELOG.md MIGRATION.md CITATION.cff