Bioprocess Engineering
Fermentation, bioreactors, and downstream processing.
Bioprocess Engineering
Bioprocess engineering is the application of engineering principles to design, develop, and optimize processes involving biological systems. It encompasses upstream processes (cell culture and fermentation) and downstream processes (separation and purification) to produce biologics, pharmaceuticals, chemicals, and other bio-based products.
Introduction to Bioprocesses
Process Overview
Types of Bioprocesses
Based on Process Duration
- Batch: Single feed, single harvest
- Fed-batch: Multiple feeds, single harvest
- Continuous: Continuous feed and harvest
Based on Aeration
- Aerobic: Requires oxygen
- Anaerobic: No oxygen required
- Microaerophilic: Low oxygen requirements
Bioreactor Design and Operation
Bioreactor Types
Stirred Tank Reactor (STR)
Where is power input, is fluid density, is impeller speed, and is impeller diameter.
Design Considerations
- Impeller configuration: Rushton turbines, marine propellers, or hydrofoils
- Baffles: Prevent vortex formation and improve mixing
- Spargers: For gas dispersion and mass transfer
- Aspect ratio: Typically 3:1 height-to-diameter ratio
Bubble Column Reactor
Where is gas flow rate and is cross-sectional area.
Packed Bed Reactor
(Dutta formula for packed beds)
Mass Transfer
Oxygen Transfer
\frac{dC_L}{dt} = KLa(C_L^* - C_L) - r_O_2Where is dissolved oxygen concentration, is saturation concentration, and is oxygen consumption rate.
Aeration Strategies
- Surface aeration: Mechanical agitation
- Subsurface aeration: Sparged gas
- Membrane aeration: Gas-permeable membranes
Mixing
Mixing Time Correlations
Where is mixing time, is circulation time, is tank diameter.
Power Consumption
Where is the mixing power number.
Heat Transfer
Where is the overall heat transfer coefficient, is area, and is log mean temperature difference.
Fermentation Kinetics
Growth Kinetics
Monod Model
Where is specific growth rate, is maximum growth rate, is substrate concentration, and is saturation constant.
Substrate Utilization
Where is yield coefficient for biomass, and is maintenance coefficient.
Product Formation
Where and are constants for growth-associated and non-growth-associated product formation.
Batch Fermentation
Material Balances
For batch systems with no inflow/outflow.
Fed-Batch Operation
Where is feed flow rate and is feed substrate concentration.
Downstream Processing
Recovery and Separation
Primary Recovery
- Cell disruption: Mechanical, enzymatic, or chemical
- Solid-liquid separation: Centrifugation, filtration, flocculation
- Phase partitioning: Aqueous-two-phase systems
Product Isolation
Liquid-Liquid Extraction
Where is the ratio of solvent volumes and is the number of extractions.
Purification Methods
Chromatography
Where is mobile phase retention time, is retention factor, and is peak width.
Types of Chromatography
- Ion Exchange: Separation by charge
- Size Exclusion: Separation by molecular size
- Affinity: Separation by specific binding
- Hydrophobic Interaction: Separation by hydrophobicity
Filtration
Where is flux, is pressure difference, is viscosity, and is total resistance.
Buffer Systems and pH Control
Concentration and Formulation
Membrane Separation
Where is permeability coefficient.
Protein Stabilization
Where is the folding equilibrium constant.
Process Integration and Control
Process Economics
Process Control Systems
Where is controller output, is controller gain, is error, and is reset term.
Controlled Variables (CVs)
- Dissolved oxygen
- pH
- Temperature
- Agitation rate
- Feed rate
Manipulated Variables (MVs)
- Air flow rate
- Agitation speed
- Coolant flow
- Acid/base flow
- Feed pumps
Downstream Processing Design
Process Flow Diagrams
Unit Operations Selection
Criteria for Selection
- Product stability: Consider pH, temperature, shear stress
- Feed characteristics: Viscosity, particulates, concentration
- Product properties: Size, charge, hydrophobicity, stability
- Required purity: Clinical vs. industrial grade
- Throughput: Batch vs. continuous operation
Membrane Processes
Ultrafiltration
Where is membrane resistance.
Microfiltration
Nanofiltration and Reverse Osmosis
Where is water flux, is solute flux, is water permeability, and is solute permeability.
Equipment Considerations
Vessel Design
Where is pressure, is radius, is allowable stress, and is joint efficiency.
Sterilization
Scale-Up Considerations
Constant Parameters
- Power per volume:
- Volumetric mass transfer:
- Tip speed:
Geometric Scaling
Regulatory Considerations
Good Manufacturing Practice (GMP)
- Process validation: Demonstrate reproducible quality
- Change control: Document all modifications
- Documentation: Maintain detailed records
- Contamination control: Prevent cross-contamination
Quality by Design (QbD)
Real-World Application: Monoclonal Antibody Production
Monoclonal antibody production through mammalian cell culture is a complex bioprocess that demonstrates multiple bioprocess engineering principles.
Antibody Production Process
# Mammalian cell culture for monoclonal antibody production
process_params = {
'cell_line': 'CHO (Chinese Hamster Ovary)',
'vessel_size': 2000, # Liters (production bioreactor)
'operation_mode': 'fed_batch',
'culture_duration': 14, # Days
'inoculum_density': 0.3, # x10^6 cells/mL
'target_titer': 3.5, # g/L
'viability_goal': 85, # % (at harvest)
'osmolality': 320, # mOsm/kg
'pH_target': 7.1, # pH
'temperature': 37.0 # °C
}
# Calculate culture kinetics
initial_cells = process_params['inoculum_density'] * 1e6 * process_params['vessel_size'] # cells
target_growth = 10 # cells/cell (typical fold increase in fed-batch)
final_cell_density = process_params['inoculum_density'] * target_growth # x10^6 cells/mL
total_cells_harvest = final_cell_density * 1e6 * process_params['vessel_size'] # cells
# Calculate productivity
antibody_titer = process_params['target_titer'] # g/L
total_antibody = antibody_titer * process_params['vessel_size'] # g
# Mass transfer requirements
kla_target = 15 # 1/hr (typical for CHO cultures)
oxygen_demand = 1.5e-12 # mol/cell/hour (for mammalian cells)
cell_density_max = 20 # x10^6 cells/mL (typical maximum)
max_oxygen_consumption = oxygen_demand * cell_density_max * 1e6 # mol/L/hour
# Calculate required oxygen transfer rate
rotor_diameter = (process_params['vessel_size'] * 0.2 / math.pi)**(1/3) # m (estimate for 20% filling factor
impeller_speed = 150 # RPM (typical for large vessels)
# Power consumption estimation (for mixing)
density_medium = 1020 # kg/m³
power_number = 5 # typical for Rushton turbines
impeller_diameter = rotor_diameter # assume 1:1 ratio
power_input = power_number * density_medium * ((impeller_speed/60)**3) * (impeller_diameter**5) # Watts
# Calculate energy consumption
culture_time_hrs = process_params['culture_duration'] * 24
energy_consumption = power_input * culture_time_hrs / 1000 # kWh
print(f"Mammalian cell culture for monoclonal antibody production:")
print(f" Bioreactor size: {process_params['vessel_size']:,} L")
print(f" Cell line: {process_params['cell_line']}")
print(f" Culture duration: {process_params['culture_duration']} days")
print(f" Target titer: {process_params['target_titer']} g/L")
print(f" Initial cell density: {process_params['inoculum_density']} x10⁶ cells/mL")
print(f" Estimated final cell density: {final_cell_density:.1f} x10⁶ cells/mL")
print(f" Total antibody production: {total_antibody:.0f} g")
print(f" Required KLa: {kla_target} hr⁻¹")
print(f" Estimated power input: {power_input:.0f} W")
print(f" Estimated energy consumption: {energy_consumption:.0f} kWh")
# Downstream processing estimation
capture_efficiency = 0.95 # 95% for Protein A chromatography
polish_efficiency = 0.85 # 85% for ion exchange chromatography
total_recovery = capture_efficiency * polish_efficiency # Overall recovery
final_product = total_antibody * total_recovery # g (accounting for losses)
print(f" Estimated final product: {final_product:.0f} g")
print(f" Overall process recovery: {total_recovery*100:.1f}%")
# Economic implications
antibody_value = 100 # $/g (simplified for example)
revenue_potential = final_product * antibody_value
print(f" Revenue potential: ${revenue_potential:,.0f}")
# Scale considerations
if process_params['vessel_size'] > 1000:
scale_category = "Large-scale manufacturing"
else:
scale_category = "Clinical or pilot scale"
print(f" Scale category: {scale_category}")
Manufacturing Considerations
Optimization of cell culture for therapeutic protein production.
Your Challenge: Fermentation Process Design
Design a fermentation process for producing a recombinant protein and optimize the key process parameters for maximum yield.
Goal: Engineer a complete fermentation process with optimal operating conditions.
Process Design Parameters
import math
# Fermentation design for recombinant protein production
fermentation_design = {
'product': 'Recombinant human insulin',
'host_organism': 'E. coli BL21(DE3)',
'bioreactor_volume': 500, # liters
'target_productivity': 2.0, # g/L/day
'substrate_glucose': 20, # g/L initial concentration
'initial_od600': 0.1, # Optical density at start
'target_od600': 50, # Maximum optical density
'temperature': 37, # °C
'ph_target': 7.0, # pH
'dissolved_oxygen': 30, # % air saturation
'agitation_rate': 300, # RPM
'aeration_rate': 1.0 #vvm (volume of air per volume of medium per minute)
}
# Calculate fermentation parameters
initial_cell_mass = fermentation_design['initial_od600'] * 0.3 # g/L (assuming 0.3 g/L per OD unit)
target_cell_mass = fermentation_design['target_od600'] * 0.3 # g/L
# Growth rate calculations
# For E. coli under optimal conditions
mu_max = 0.7 # hr⁻¹ (maximum specific growth rate for E. coli)
substrate_saturation_const = 0.2 # g/L (Ks for glucose)
# Calculate specific growth rate using Monod model
specific_growth_rate = mu_max * fermentation_design['substrate_glucose'] / (substrate_saturation_const + fermentation_design['substrate_glucose'])
# Calculate growth time to reach target density
growth_time = math.log(target_cell_mass / initial_cell_mass) / specific_growth_rate # hours
# Calculate substrate consumption
maintenance_coefficient = 0.1 # g glucose/g biomass/h
yield_coefficient = 0.5 # g biomass/g glucose
substrate_consumed = target_cell_mass / yield_coefficient # g/L consumed
substrate_remaining = fermentation_design['substrate_glucose'] - substrate_consumed # g/L remaining if not fed
# Calculate oxygen demand
oxygen_req = 2.0 # g O₂/g biomass (stoichiometric requirement)
oxygen_demand = target_cell_mass * oxygen_req # g/L oxygen needed
# Calculate mass transfer requirements
kla_required = (oxygen_demand * specific_growth_rate) / (0.05 * 32) # Simplified mass transfer requirement
# Assuming we need to supply oxygen at the rate it's consumed
# Calculate power requirements for mixing and aeration
# Power number for Rushton turbine: P = Np * ρ * N³ * D⁵
power_number = 5
density = 1000 # kg/m³ (density of medium)
impeller_diameter = (fermentation_design['bioreactor_volume'] / math.pi)**(1/3) * 0.3 # Approximate impeller size
rpm = fermentation_design['agitation_rate'] / 60 # Convert to rev/sec
theoretical_power = power_number * density * (rpm**3) * (impeller_diameter**5) # Watts
# Calculate fed-batch requirements
if substrate_remaining < 0:
# Need fed-batch operation
feed_rate_needed = abs(substrate_remaining) / growth_time # g/L/hour
feed_solution_concentration = 400 # g/L (concentrated glucose solution)
volumetric_feed_rate = (feed_rate_needed * fermentation_design['bioreactor_volume']) / feed_solution_concentration # L/hour
total_media_addition = volumetric_feed_rate * growth_time # L
else:
# Batch operation possible
feed_rate_needed = 0
total_media_addition = 0
# Estimate product formation
product_yield_per_biomass = 0.1 # g product/g biomass
estimated_product = target_cell_mass * product_yield_per_biomass # g/L
# Calculate overall process metrics
reactor_utilization = growth_time / 24 # Assume 24h turnaround time
productivity = estimated_product / (growth_time / 24) # g/L/day
Design and optimize a fermentation process for maximum recombinant protein yield.
Hint:
- Calculate growth kinetics using Monod model
- Consider oxygen transfer requirements
- Optimize feeding strategy for substrate limitation
- Evaluate power and energy requirements
# TODO: Calculate fermentation process parameters
specific_growth_rate = 0 # hr⁻¹ (growth rate constant)
substrate_utilization_rate = 0 # g/L/hr (substrate consumption rate)
oxygen_transfer_rate = 0 # mmol/L/hr (oxygen consumption rate)
biomass_yield = 0 # g biomass/g substrate (yield coefficient)
productivity_index = 0 # g/L/day (overall process productivity)
process_efficiency = 0 # fraction (0-1) of substrate converted to product
# Calculate specific growth rate using Monod model
substrate_constant = 0.2 # g/L (glucose saturation constant for E. coli)
mu_max_ecoli = 0.7 # hr⁻¹ (maximum growth rate)
specific_growth_rate = mu_max_ecoli * fermentation_design['substrate_glucose'] / (substrate_constant + fermentation_design['substrate_glucose'])
# Calculate substrate utilization rate (considering maintenance)
maintenance_coeff = 0.05 # g glucose/g biomass/hr
biomass_concentration = target_cell_mass # g/L
substrate_utilization_rate = (specific_growth_rate / yield_coefficient) * biomass_concentration + maintenance_coeff
# Calculate oxygen transfer rate
oxygen_demand_coeff = 2.0 # g O₂/g biomass
oxygen_transfer_rate = oxygen_demand_coeff * biomass_concentration * specific_growth_rate * 32000 # Convert to mmol/L/hr
# Calculate biomass yield coefficient
biomass_yield = yield_coefficient # g biomass/g substrate
# Calculate overall productivity
process_duration = growth_time + 2 # Add 2 hours for inoculation and harvest
productivity_index = estimated_product / (process_duration / 24) # g/L/day
# Calculate process efficiency
total_substrate_used = substrate_consumed
theoretical_product_yield = total_substrate_used * yield_coefficient * product_yield_per_biomass
process_efficiency = estimated_product / theoretical_product_yield if theoretical_product_yield > 0 else 0
# Print results
print(f"Specific growth rate: {specific_growth_rate:.3f} hr⁻¹")
print(f"Substrate utilization rate: {substrate_utilization_rate:.3f} g/L/hr")
print(f"Oxygen transfer rate: {oxygen_transfer_rate:.1f} mmol/L/hr")
print(f"Biomass yield: {biomass_yield:.3f} g/g substrate")
print(f"Process productivity: {productivity_index:.2f} g/L/day")
print(f"Process efficiency: {process_efficiency:.3f}")
# Process optimization assessment
if productivity_index > fermentation_design['target_productivity']:
optimization_status = "Meets target productivity"
elif productivity_index > fermentation_design['target_productivity'] * 0.8:
optimization_status = "Approaching target - minor optimizations needed"
else:
optimization_status = "Below target - significant process improvements required"
print(f"Optimization status: {optimization_status}")
# Suggested improvements
improvement_suggestions = []
if specific_growth_rate < 0.5:
improvement_suggestions.append("Increase temperature or optimize medium")
if substrate_utilization_rate > 2.0:
improvement_suggestions.append("Consider fed-batch to avoid substrate inhibition")
if oxygen_transfer_rate > 100:
improvement_suggestions.append("Increase aeration/agitation or consider oxygen-enriched air")
if process_efficiency < 0.7:
improvement_suggestions.append("Optimize maintenance energy requirements")
print(f"Suggested improvements: {improvement_suggestions}")
How would you modify your fermentation process design if you wanted to minimize the overall operating costs while maintaining the required product titer?
ELI10 Explanation
Simple analogy for better understanding
Self-Examination
What are the key design considerations for bioreactor systems used in fermentation?
How do you optimize fermentation conditions for maximum product yield?
What are the main unit operations in downstream processing and how are they selected?