BreakerLab / dimpl

DIMPL: Discovery of Intergenic Motifs PipeLine
MIT License
3 stars 3 forks source link

Replace Jupyter notebooks with Python CLI #26

Open kenibrewer opened 10 months ago

kenibrewer commented 10 months ago

Description

A good deal of DIMPL's logic occurs within Jupyter notebooks designed to visualize and select intergenic regions for processing. These notebooks have advantages around interactive data visualization, and narrative-style documentation of the pipeline. However, they also have important limitations that can be addressed by moving that programming logic into a python CLI. A rebuilt version of the notebooks can potentially still be maintained for data visualization purposes.

Reasons

Here are the primary reasons for moving to a Python CLI:

  1. Efficiency and Speed: CLI tools are generally faster and more efficient than interactive notebooks. Executing code through a CLI eliminates the overhead of running a full notebook environment, leading to quicker code execution and faster iteration.
  2. Automated Workflows: With a Python CLI, you can automate complex workflows and tasks by creating scripts that can be executed with a single command. This is particularly useful for repetitive or batch processing tasks.
  3. Version Control and Collaboration: Using a CLI allows for easier integration with version control systems.
  4. Reproducibility: CLI scripts offer better reproducibility than notebooks. The command-line approach enforces a linear and sequential execution, reducing the chances of running cells out of order and ensuring consistent results.
  5. Testing and Debugging: CLI scripts can be more easily unit tested and debugged since they are designed to be modular and well-organized. This can lead to more reliable and maintainable code.
  6. Customization and Flexibility: CLI tools provide greater flexibility for integrating with other systems, tools, and pipelines. You can create custom command-line options and arguments to tailor the behavior of your scripts to specific needs.