Advanced Programming Techniques for Bioinformaticians 1000-713ZTP
Part I - professional Python in a scientific project
How to write code that can be maintained, checked, and run again?
- Work organization: virtual environments, uv, pip/conda, PyCharm, terminal, basics of working on a server, and good practices for directory structure.
- From notebook to program: modules, scripts, command-line arguments, argparse, project configuration, JSON/YAML files, basics of building CLI interfaces.
- Object-oriented Python: an introduction “from class to metaclass”.
- Code quality: debugging, profiling, unit tests with pytest, typing, data validation, pydantic, mypy, code formatting and linting, documentation.
- Python packages: pyproject.toml, src layout, development installation, versioning, building packages, releases, and basics of tool distribution.
- Generative models supporting work with code: ChatGPT, Codex, GitHub Copilot; practical use for prototyping, refactoring, writing tests and documentation, with
emphasis on critical verification of generated code.
Part II - data analysis and making results available
How to transform data into a reliable analysis result?
- Working with data in pandas; broadcasting and vectorization in numpy.
- Data cleaning, combining sources, sanity checks, aggregations, trend analysis, and preparing data for reporting.
- Visualization of results: matplotlib, seaborn, plotly, and basics of interactive and map-based data presentations (bokeh, geoplot).
- Selected scientific and statistical tools: SciPy and elements of predictive modeling in scikit-learn.
- Communication with web services: requests, APIs, downloading data from the internet, parsing websites with BeautifulSoup, and browser automation with Selenium.
- Making results and models available: basics of FastAPI, input data validation with pydantic, running applications with Uvicorn, serving scikit-learn models
through prediction endpoints, and good practices for working with external services.
Part III - collaboration, reproducibility, and workflows
How to run a project so that others can check, extend, and run it?
- Git, GitHub/GitLab, branches, conflicts, pull/merge requests, code review, and work in a model known from open-source projects.
- Tests and continuous integration: automatic test execution after code changes, project quality control, and building artifacts.
- Versions, tags, releases, basics of FAIR principles, and preparing code and results for citation or further use.
- Computational workflows in Snakemake: rules, dependencies between files, configuration, reports, and running CLI tools in pipelines.
- Basics of containerization, Docker/Apptainer, as tools supporting reproducibility.
Part IV - bioinformatics tools
How to use the Python ecosystem in computational biology?
- Biopython: sequences, records, FASTA/FASTQ/GenBank formats, SeqIO, annotations, simple sequence analyses, GC-content, ORF, alignments, and BLAST.
- Working with NCBI and PubMed databases through Bio.Entrez: searching records, downloading metadata, literature analysis.
- Calling external programs from Python through subprocess.
Course coordinators
Type of course
Prerequisites (description)
Learning outcomes
Upon successful completion of the course, the student:
- Has a working knowledge of the Python programming language and its libraries sufficient to develop medium-scale applications.
- Is familiar with commonly used tools for data analysis, visualization, and general data science workflows.
- Understands widely adopted tools and practices for collaborative software development and project management in both academic and industrial settings.
- Is able to clearly present the structure, tools, and rationale behind a software project.
- Has gained practical experience through the staged development of their own bioinformatics project, applying the introduced tools and methods in a real-world context.
Bibliography
1. Fluent Python (2nd edition). Luciano Ramalho
2. Python Distilled, David M. Beazley
3. Effective Python: 90 specific ways to write better Python (2nd edition). Brett Slatkin