## this patch turns all protein residue backbone atoms (N,H,C,O, [1H, 2H, OXT]) into virtual atoms
## can be useful if you want sidechain-only energy terms, while still allowing residue repacking
NAME ProteinVirtBB
TYPES  VIRTUAL_BB

BEGIN_SELECTOR
PROPERTY PROTEIN
END_SELECTOR

BEGIN_CASE ### upper-cutpoint ###
BEGIN_SELECTOR
VARIANT_TYPE CUTPOINT_UPPER
END_SELECTOR

SET_ATOM_TYPE N VIRT
SET_ATOM_TYPE C VIRT
SET_ATOM_TYPE O VIRT
END_CASE


BEGIN_CASE ### lower-cutpoint ###
BEGIN_SELECTOR
VARIANT_TYPE CUTPOINT_LOWER
END_SELECTOR

SET_ATOM_TYPE N VIRT
SET_ATOM_TYPE C VIRT
SET_ATOM_TYPE O VIRT
END_CASE


BEGIN_CASE  ### N-terminal proline ###
BEGIN_SELECTOR
VARIANT_TYPE LOWER_TERMINUS
AA PRO
END_SELECTOR

SET_ATOM_TYPE N VIRT
SET_ATOM_TYPE C VIRT
SET_ATOM_TYPE O VIRT
SET_ATOM_TYPE 1H VIRT
SET_ATOM_TYPE 2H VIRT
END_CASE


BEGIN_CASE  ### N-terminus ###
BEGIN_SELECTOR
VARIANT_TYPE LOWER_TERMINUS
END_SELECTOR

SET_ATOM_TYPE N VIRT
SET_ATOM_TYPE C VIRT
SET_ATOM_TYPE O VIRT
SET_ATOM_TYPE 1H VIRT
SET_ATOM_TYPE 2H VIRT
SET_ATOM_TYPE 3H VIRT
END_CASE


BEGIN_CASE  ### C-terminus ###
BEGIN_SELECTOR
VARIANT_TYPE UPPER_TERMINUS
END_SELECTOR

SET_ATOM_TYPE N VIRT
SET_ATOM_TYPE C VIRT
SET_ATOM_TYPE O VIRT
SET_ATOM_TYPE OXT VIRT
END_CASE


BEGIN_CASE ### Proline ###
BEGIN_SELECTOR
AA PRO
END_SELECTOR

SET_ATOM_TYPE N VIRT
SET_ATOM_TYPE C VIRT
SET_ATOM_TYPE O VIRT
END_CASE


BEGIN_CASE ### general case ###
SET_ATOM_TYPE N VIRT
SET_ATOM_TYPE H VIRT
SET_ATOM_TYPE C VIRT
SET_ATOM_TYPE O VIRT
END_CASE