Designing Bispecific Antibodies

Click Here to Download This Article as a PDF

INTRODUCTION

The overarching goal of this workflow is to show Bench users how they may use their understanding of a complex protein-protein interface to generate specificity variants on that sequence, yielding orthogonal interfaces. To illustrate this general principle, this workflow describes the specific challenge of creating bispecific antibodies. One computational approach to this problem is described in the 2014 paper in Nature Biotechnology titled “Generation of bispecific IgG antibodies by structure-based design of an orthogonal Fab interface.” In this workflow, we reimplement its basic ideas using Bench, rather than Rosetta. Within this context, we will examine two strategies for creating new orthogonal interfaces based on knob-hole mutagenesis and a charge-pairing strategy.

SCIENTIFIC BACKGROUND

The scientific aim of this workflow is to obtain sequences for two sets of antibody heavy and light chains that, when co-expressed, will pair specifically to form a bispecific antibody. Ordinarily, coexpression of mixed heavy and light chains results in some mis-assembly products, to the point that many researchers have avoided this particular strategy to create bispecific antibodies altogether. This workflow describes a method to prevent mis-association of heavy and light chains by designing an orthogonal interface. There are two distinct interfaces where one may wish to install mutations: the CH1/CL interface, which is part of the antibody’s ‘constant region’, and the VH/VL interface, which is part of the variable region. Orthogonalizing the CH3 interfaces is also necessary, but outside the scope of this workflow; the same ideas can (and have) been used (Leaver-Fay et al., 2016).

In this example, we are starting from a crystal structure of the starting monoclonal antibody we would like to orthogonalize, PGT128, which is a broadly-neutralizing HIV-1 antibody. This method requires that you have a crystal structure to start with. [This method could also begin from a high quality antibody model, but in this particular workflow and publication, a crystal structure is used.]

WORKFLOW

PART ONE

First, we make two constant region redesigns that ought to be bispecific against the wild type:

1.) In Bench, fetch 3TV3. This structure contains the constant region of the heavy (H) and light (L) chains. This PDB also contains the CH3 interface, where we won’t be making any mutations, so for the purpose of this workflow we recommend removing it (as we have in the PDB file attached below).

Click to Download trimmed 3TV3 PDB

2.) Run ‘prepare’, producing a single decoy.

3.) Set up a design simulation starting from the prepared structure to install the mutation pattern of CRD1 (K129D, L135F on chain L; D146K, V190F, F174T on chain H).These design simulations should produce multiple decoys, perhaps 20.

4.) Set up a design simulation starting from the prepared structure to install the mutation pattern of CRD2 (S176W, L135Y on chain L; F174G, H172A on chain H). These design simulations should produce multiple decoys, perhaps 20.

5.) Run ‘prepare’ on the best-scoring design results for each of the simulations in (3) and (4).

6.) Set up design-and-prepare simulations for each of the cross-products above. For example, to model the complex between wild-type light chain and CRD1 heavy chain, we need to make mutations D146K, V190F, F174T on chain H.

7.) Repack the native structure (20 decoys) and ‘prepare’ the top few decoys as above to obtain a wild-type score that is comparable to the above.

8.) Compare the energies of the wild-type and the redesigns against the cross-interfaces. The wildtype and CRD1 should both have energies of about -296, with its cross-interfaces scoring -293 and -291; CRD2 has an energy of -294 and its cross-interfaces score -293 and -273.

PART TWO

Second, we make two variable region redesigns that ought to be bispecific against each other:

1.) In Bench, fetch 4LLU. This structure contains the Fab region of the heavy (H) and light (L) chains. It actually contains two copies, so you can either apply the following operations to each chain and divide any resulting energies by two, or you can manually remove two chains and then proceed with that PDB file. The latter method will run much faster, so we will assume that you have removed chains C and D in a text editor.

2.) Run ‘prepare’, producing a single decoy.

3.) Set up a design simulation starting from the prepared structure to install the mutation pattern of VRD1 (D1R, Q38D on chain B; R62E, Q39K on chains A). These design simulations should produce multiple decoys, perhaps 20.

4.) Set up a design simulation starting from the prepared structure to install the mutation pattern of VRD2 (Q38R on chains B, Q39Y on chains A). These design simulations should produce multiple decoys, perhaps 20.

5.) Run ‘prepare’ on the best-scoring design results for each of the simulations in (3) and (4).

6.) Set up design-and-prepare simulations for each of the cross-products above. For example, to model the complex between VRD1 light chain and VRD2 heavy chain, we need to make mutations D1R, Q38D on chains B and Q39Y on chains A. (This produces an anion-anion charge pair and an anion-pi interaction.)

7.) Compare the energy of the desired dimers (VRD1/VRD1; VRD2/VRD2) to the cross-products.

PART THREE

Third, we show how to use Bench to create new specificity mediating mutations using the knob-in-hole or charge-swapping strategy. Though in the first two sections we illustrated how to recapitulate and support mutations obtained through expert knowledge, here we establish how one might pick a set of mutations over another by measuring for specificity.

1.) Load the trimmed 3TV3 PDB we provided previously.

2.) Run ‘prepare’, producing a single decoy.

3.) Locate a charge pair at the interface; for this workflow, suppose you located D1 on chain B and R62 on chain A.

4.) Set up a selector that includes those two residues and their immediate neighbors.

5.) Using a design simulation that repacks those residues’ neighbors, force a mutation to one side of the interface to match the charge of the other side — for the purpose of this workflow, demand that D1 mutate to either K or R. (Do not permit it to remain D or E.)

6.) Run ‘prepare’ on the design results and compare its score to the prepared wildtype structure to confirm that the mismatched charges give a poor score. Pick the worse-scoring sequence of the resulting options.

7.) Using the same selector, applied to the design result from step 5, set up a similar design simulation, to demand that R62 mutate to either D or E.

8.) Run ‘prepare’ on the design results and compare its score to the prepared wildtype structure to confirm that the swapped charges give a good score. Pick the best-scoring sequence of the resulting options.

FAQ

Q: How can I identify sets of ‘complementary’ mutations that force this bispecific phenomenon?

A: To review, the heterodimerization problem works like this: given one sequence A/B, generate a related new sequence A’/B’ such that the complexes A/B and A’/B’ are greatly favored over formation of A/B’ or A’/B. Two straightforward strategies for generating these new sequences can be implemented in Bench. First, you may use Bench to find locations where well-oriented hydrogen bonding interactions or charge pairs are anchoring an interface together, and make simple pairs of mutations on either side, as we show in Part Three. For example, if A/B have an E/K charge pair, swapping to give A’/B’ a K/E charge pair should disfavor the A’/B complex (K/K) as well as the A/B’ complex (E/E). Second, you may conduct ‘mutation-rescue’ simulations intended to perturb the interface with more aggressive mutations, doing this with large/small amino acid alterations is the classic “knobs in hole” approach to interface engineering (see for example Ridgway JB et al., Protein Eng, 1996). To wit – suppose you force a mutation that introduces a ‘bump’ at the A/B interface, on sequence A. This mutation is unfavorable; it destabilizes the A/B interface to form a poorer A’/B interface. Then, you may set up a design simulation on the interface sequence of B to ‘rescue’ good binding to produce A’/B’. Finally, you may use the procedure outlined above in Parts One and Two to validate your predictions about how these complementary mutations should behave.

Q: Why is the final step for the constant region redesigns important for quantitative energy comparison – why can’t I just compare the CRD1 and CRD2 scores to the wild type score obtained in the second step (initial prepare)?

A: We always want to compare structural models to which the same amount of sampling and optimization have been applied. The design results have been prepared, then globally repacked, then prepared again. Comparing to the original structure that has just been prepared once and experienced no global repack is ‘unfair’.

NUMBERING REFERENCE

Bench uses sequential numbering, where residues are numbered from 1 and do not reset when a new chain starts. To ensure the workflow reads usefully even if you’re looking at the whole 3TV3 or 4LLU structure, we’re using the actual residue numbers and chains from that PDB. Here, though, is a reference to what those residues are in Bench-numbering:

3TV3 Chain L: K129 = 24; L135 = 30; S176 = 70; 3TV3 Chain H: V190 = 171; F174 = 156; H172 =; D146 = 134 4LLU Chain A: R62 = 62 ; Q39 = 39 4LLU Chain B: D1 = 221; Q38 = 258

Updated: