Three Protein Separation Chromatography Modeling Exercise


I wanted to share the chromatography modeling homework assignment from the RPI Chromatographic Separations course this year. The problem statement and code are attached. We have used this same problem statement (originally written by @alters) in past years with the free version of ChromX, but this year I set up the problem with CADET.

CADET_homework_problem.docx (17.2 KB)

three_protein_separation.ipynb (13.6 KB) (11.2 KB)

This class is a mix of undergraduate and graduate students who mostly have no prior experience with chromatography or programming, so the simulation is set up in such a way that the students only need to change the parameters that they are interested in, (e.g. salt concentrations and elution step lengths), to achieve the purity and yield goal set in the problem. The goal is mainly to help them understand how chromatography works by requiring them to manually determine process conditions that allow them to separate a target protein from weaker and stronger binding impurities.

To make this process as smooth as possible, I took a page out of the CADET workshop’s book and set up a JupyterHub that the students could log in to and run their simulations without needing to install anything. This worked well (as long as we weren’t all trying to run simulations at the same time…), and the students did not seem to have any technical difficulties or trouble setting up the simulations, which was an improvement over past years.

Overall it’s a fun little problem to play with, and we ended up offering extra credit to the student who could achieve the purity and yield requirements in the high load problem in the fewest total column volumes.


Much appreciated, Angela! Thanks a lot for both the example and your report on (no) technical issues :slight_smile:


Awesome! Really happy with the progress you made on this. I am a proud mentor :smiley:


Hello! I’m a graduate student trying to run this code on my own to learn CADET. I’m encountering this error when running the three_protein_separation.ipynb. All modules from the included zip file are in the same directory and seem to be accessed by the script without issue.

I would be grateful for any guidance on what to do. Thanks in advance to anyone willing to help.

Hey, yeah that line should read:

sim_solution = evaluate_sim.process_simulation_data(sim_solution, ms)

I guess I didn’t save that change before uploading, my bad.

After that it should run.


I got the simulation running, thanks a lot! This is a really well-designed training exercise!