Scientific software standards

Most research code is written once and never reused because it is hard to install, untested, and undocumented. scikit-package, developed with Prof. Simon Billinge, gives scientists a path from a script to a tested, documented, public package, one level at a time.

  • Packaging standards, project templates, automated reusable workflows, and tutorials

  • Five levels of sharing, from a reusable function to a released pip/conda package

  • Documentation · Code · Paper

Diagram of the five levels of sharing code in scikit-package

Five levels of sharing code, from reusing a function within a file (level 1) to releasing a public package with pip/conda distribution, release notes, and hosted documentation (level 5), with the scikit-package command for each level.

Academic software built with scikit-package

  • PDFfit2 and PDFgui: Computer programs for studying nanostructure in crystals (J. Phys. Condens. Matter)

  • cifkit: A Python package for coordination geometry and atomic site analysis (JOSS)

  • Composition and structure analyzer/featurizer for explainable machine learning models to predict solid state structures (Digital Discovery)

  • Stretched non-negative matrix factorization (npj Comput. Mater.)

  • Real-space texture and pole-figure analysis using the 3D pair distribution function on a platinum thin film (IUCrJ)

Co-authored publications

  • scikit-package: software packaging standards and roadmap for sharing reproducible scientific software. S. Lee et al., Digital Discovery (2026).