Skip to main content

Wetlab protocols that follow the Unix philosophy.

Project description

https://img.shields.io/pypi/v/stepwise.svg https://img.shields.io/pypi/pyversions/stepwise.svg https://img.shields.io/readthedocs/stepwise.svg https://img.shields.io/github/workflow/status/kalekundert/stepwise/Test%20and%20release/master https://img.shields.io/coveralls/kalekundert/stepwise.svg

Stepwise is a program for authoring, planning, executing, and sharing scientific protocols. There are two main benefits it seeks to provide:

  1. Automate tedious calculations/remembering small details. For example, calculating how to setup master mixes, remembering which antibiotics to use with which plasmids, adding fragments to a DNA assembly reaction in the ideal molar ratios, choosing annealing temperatures and extension times for PCR reactions, etc. Stepwise can automatically work out all of these details and many more like them.

  2. Record every step of every experiment. We all know that we should keep careful notes of everything we do in lab, but having to repeatedly write down similar details for similar experiments is tedious and prone to ambiguities or inconsistencies. Stepwise helps by filling in all the little details after you specify the few important ones.

Warning: this software is still very much a work in progress!

If stepwise seems like it might be useful to you, I’d encourage you to give it a try! I use it every day, and it’s certainly functional. However, it’s not yet finished, and it’s certainly not yet polished. Let me know (preferably by opening an issue in the bug tracker) if you have a hard time understanding how anything is supposed to work, or if you encounter a cryptic error message, or anything like that. I ultimately want to make this into a broadly useful tool for as many scientists as possible, and getting feedback from other people will really help with that.

Example

An example makes the benefits mentioned above more clear. Here’s the command for a protocol to construct two plasmids, named “p216” and “p217”:

$ sw make p216 p217

This protocol needs to know what these plasmids are, and you would provide that information via an Excel spreadsheet or similar; see FreezerBox for more info. Below are some of the relevant entries from this spreadsheet:

Plasmids and fragments:

Name

Ready

Synthesis

Cleanup

p216

n

gibson f169,f172

transform; sequence o266; miniprep

p217

n

gibson f169,f173

transform; sequence o266; miniprep

f169

n

pcr template=p186 primers=o359,sr71

spin-cleanup

f172

y

order vendor=IDT

f173

y

order vendor=IDT

Oligos:

Name

Sequence

o359

CAACATTTCCGTGTCGCCCT

sr71

CCGGTTGTACCTATCGAGTG

Briefly, these tables describe how to make each construct. For example, p216 is made by doing a Gibson assembly with fragments f169 and f172. In turn, f169 is made by doing PCR with p186 as a template and o359 and sr71 as primers.

From just the names of the constructs to make, the information in these spreadsheets, and sequence information read from SnapGene or GenBank files, stepwise produces the following protocol:

$ sw make p216 p217
 1. Prepare 10x primer mix [1]:

    Reagent   Stock    Volume
    ─────────────────────────
    water             9.00 µL
    o359     100 µM   0.50 µL
    sr71     100 µM   0.50 µL
    ─────────────────────────
                     10.00 µL

 2. Setup 1 PCR reaction [2,3]:

    Reagent           Stock    Volume
    ─────────────────────────────────
    water                    15.00 µL
    p186           20 pg/µL   5.00 µL
    primer mix          10x   5.00 µL
    Q5 master mix        2x  25.00 µL
    ─────────────────────────────────
                             50.00 µL

 3. Run the following thermocycler protocol:

    - 98°C for 30s
    - Repeat 35x:
      - 98°C for 10s
      - 63°C for 20s
      - 72°C for 4 min
    - 72°C for 2 min
    - 4°C hold

 4. Label the product: f169

 5. Purify using QIAquick PCR purification kit
    (28104) [4,5]:

    - Perform all spin steps at 17900g.
    - Add 5 volumes PB to the crude DNA.
    - If not yellow: Add 0.2 volumes 3M sodium
      acetate, pH=5.0.
    - Load on a QIAquick column.
    - Spin 30s; discard flow-through.

    - Add 750 µL PE.
    - Spin 30s; discard flow-through.
    - Spin 1m; discard flow-through.
    - Add 50 µL EB.
    - Wait at least 1m.
    - Spin 30s; keep flow-through.

 6. Setup 2 Gibson assemblies [6]:

    Reagent               Stock   Volume     2.2x
    ─────────────────────────────────────────────
    Gibson master mix        2x  2.50 µL  5.50 µL
    f169               65 ng/uL  1.60 µL  3.51 µL
    f172,f173          10 ng/µL  0.90 µL
    ─────────────────────────────────────────────
                                 5.00 µL  4.10 µL/rxn

 7. Incubate at 50°C for 15 min.

 8. Label the products: p216, p217

 9. Transform the following plasmids: p216, p217 [7]

    - Pre-warm 2 LB+Carb plates.
    - For each transformation:

      - Thaw 25 µL competent MACH1 cells on ice.
      - Add 1 µL plasmid.
      - Gently flick to mix.

      - Plate 25 µL cells.
      - Incubate at 37°C for 16h.

10. Sequence the following plasmids:

    Plasmid  Primers
    ────────────────
    p216     o266
    p217     o266

11. Miniprep.

Notes:
[1] For resuspending lyophilized primers:
    100 µM = 10 µL/nmol

[2] https://tinyurl.com/y27ralt4

[3] For diluting template DNA to 20 pg/µL:
    Dilute 1 µL twice into 7*sqrt([DNA]) µL

[4] https://tinyurl.com/xr8ruvr9

[5] Column capacity: 10 µg

[6] https://tinyurl.com/ychbvkra

[7] https://tinyurl.com/2cesd2hv

Note that we only had to specify the really meaningful details, like which constructs to make, which templates/primers to use for PCR, etc. Stepwise figured out everything else automatically, including:

  • Realizing that f169 needs to be made before p216 or p217.

  • Realizing that f172 and f173 don’t need to be made, because they are marked as “ready”.

  • Choosing all of the PCR parameters, including volumes for every reagent and a temperatures/times for every thermocycler step. Q5 polymerase is used in this example because that is what I order, but it easy to configure other vendors/mixes. The annealing temperature and extension times are based on the sequences of the template and the primers.

  • Realizing that both assemblies share the f169 fragment, and so it can be included in a master mix.

  • Estimating the concentration of the f169 fragment based on the typical yield from a PCR reaction and the typical recovery from a silica spin column.

  • Choosing all of the Gibson assembly parameters, most notably fragment volumes that give the recommended molar ratio of backbone to insert.

  • Which antibiotics to use when transforming the plasmids. This comes from searching the sequence of the plasmids for known antibiotic resistance genes.

Installation

Install stepwise from pip:

$ pip install stepwise

You may also want to install some related packages. First is Stepwise — Molecular Biology, which is a collection of pre-programmed protocols relating to molecular biology, e.g. PCR, Gibson/Golden Gate assembly, in vitro transcription, etc.:

$ pip install stepwise_mol_bio

Second is FreezerBox, which allows you to record useful information about your DNA/protein constructs (e.g. sequence, molecular weight, cloning strategy, etc.) in a way that is accessible to stepwise:

$ pip install freezerbox

Getting started

Stepwise aims to be something you can use for every single protocol you perform. However, that’s a big commitment. It’s easier to get started by just using stepwise for a few tasks that it really excels at:

  • sw make: See the example above. This command is great for routine cloning. The basic workflow is to record your cloning steps in a spreadsheet as you plan them, then to have stepwise generate a protocol once all of your primers etc. have arrived. Requires FreezerBox.

  • sw future/reactions: This command calculates the best way to use master mixes to setup groups of related reactions. It really shows its worth in complex situations that call for 3-4 master mixes. It knows how to make a little bit extra of each mix, and can account for all sorts of complicated reaction setups.

Quick hint: There isn’t yet any online documentation for stepwise, but each command has pretty extensive usage information if you use the -h flag. For example:

$ sw future/reactions -h

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stepwise-0.40.0.tar.gz (153.7 kB view details)

Uploaded Source

Built Distribution

stepwise-0.40.0-py2.py3-none-any.whl (98.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file stepwise-0.40.0.tar.gz.

File metadata

  • Download URL: stepwise-0.40.0.tar.gz
  • Upload date:
  • Size: 153.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/35.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.11 tqdm/4.64.0 importlib-metadata/4.12.0 keyring/23.7.0 rfc3986/2.0.0 colorama/0.4.5 CPython/3.9.13

File hashes

Hashes for stepwise-0.40.0.tar.gz
Algorithm Hash digest
SHA256 40394a34e808c368d6c871a1b09d1a13354fe2d68b76ce019e21fe1438fc9aca
MD5 ce75f18a6447f5487e715261ebebf534
BLAKE2b-256 97a806606e196daf40b4d3fded5d3993e20b7c252d7a47661cbaaece3dcd2553

See more details on using hashes here.

File details

Details for the file stepwise-0.40.0-py2.py3-none-any.whl.

File metadata

  • Download URL: stepwise-0.40.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 98.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/35.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.11 tqdm/4.64.0 importlib-metadata/4.12.0 keyring/23.7.0 rfc3986/2.0.0 colorama/0.4.5 CPython/3.9.13

File hashes

Hashes for stepwise-0.40.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 71511a9a700df637640951715c3c9ea93acd708f443c60754077ebaa46b710f2
MD5 74117dc0db14aaaa7ca362c295269aae
BLAKE2b-256 c9b9cde4bcf9ea2cdbf3205203c1eade9a512923e4693b4eeea5d6b2e92fa606

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page