Hydrophobic-polar protein folding model: basics #
A treatment of the hydrophobic-polar protein folding model in a generality
that covers rectangular, triangular and hexagonal lattices: P_rect
, P_tri
, P_hex
.
We formalize the non-monotonicity of the objective function, refuting an unpublished conjecture of Stecher.
We prove objective function bounds:
P_tri ≤ P_rect ≤ P_hex
(using a theory of embeddings)
and for any model, P ≤ b * l
and P ≤ l * (l-1)/2
[see pts_earned_bound_loc'
]
(The latter is worth keeping when l ≤ 2b+1
.)
where b
is the number of moves and l
is the word length.
We also prove P ≤ b * l / 2
using "handshake lemma" type reasoning
that was pointed out in Agarwala, Batzoglou et al. (RECOMB 97
, Lemma 2.1)
and a symmetry assumption on the folding model that holds for rect
and hex
but not for tri
.
The latter result required improving our definitions.
We prove the correctness of our backtracking algorithm for protein folding.
To prove some results about rotations
(we can always assume our fold starts by going to the right)
we use the type
Fin n → α
instead of Vector α n
The original protein folding model introduced by Ken Dill in 1985.
Equations
Instances For
move_hex represents the degree-6 hexagonal/triangular lattice, although that in itself requires checking. This representation was designed to make the y-axis vertical to fit with a computer game. def move_hex : Fin 6 → ℤ×ℤ → ℤ×ℤ | 0 => go_D | 1 => go_A | 2 => go_X | 3 => go_W | 4 => go_E | 5 => go_Z #eval move_hex 0 (0,0) #eval move_hex 5 (1,0) If computer games are not to be used we can use this simpler implementation.
Equations
Instances For
The (H-P reduced) amino acid sequence phobic
has a match at locations
i
, j
, according to the fold fold
.
Equations
Instances For
The number of matches achieved with the fold fold
for the amino acid sequence ph
.
Equations
Instances For
φ maps φ⁻¹' P to P.
Equations
- map_predicate P φ i = ⟨φ ↑i, ⋯⟩
Instances For
Cast a member of P to a member of P.
Equations
- embed_pred k P = map_predicate (fun (i : Fin l) => P i k) Fin_trans_pred
Instances For
embed_pred
casting is injective.
embed_pred
casting is surjective.
embed_pred
casting is bijective.
The number of P
's is the same if we count beyond the greatest element of P
.
The number of points is the same if we count beyond the last point.
Inductively defined path, starting at base
(the origin, say),
and proceeding through all moves
according to the rules of go
.
Equations
Instances For
.
Equations
- «term_≼_» = Lean.ParserDescr.trailingNode `«term_≼_» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≼ ") (Lean.ParserDescr.cat `term 51))
Instances For
For tri we can only assert a pointwise version of embed_models: It follows from tri_rect_embedding that any sequence of moves under tri generates a sequence in ℤ×ℤ that can also be generated using quad.
Equations
Instances For
rect₃_rect_embedding
works as advertised.
rect_hex_embedding
works as advertised.
tri_rect_embedding
works as advertised.
A function of two variables is left injective if it is injective in its first argument.
Equations
- left_injective go = ∀ (a : α), Function.Injective fun (b : β) => go b a
Instances For
A function of two variables is right injective if it is injective in its second argument.
Equations
- right_injective go = ∀ (b : β), Function.Injective fun (a : α) => go b a
Instances For
rect₃_rect_embedding
is left injective.
tri_rect_embedding
is left injective.
If Anna has a brother, return a boy who has a sister.
Instances For
If each girl has at most one brother, the map from girl-who-has-a-brother to boy-who-has-a-sister is injective.
Anna is a sister of a chosen brother who has Anna as his sister.
If each girl has at most one brother, the map from girl-who-has-a-brother to boy-who-has-a-sister is surjective.
If each boy has at most one sister, and each girl has at most one brother, then the map that sends a boy who has a sister to a girl who has a brother is bijective.
If each boy has at most one sister, and each girl has at most one brother, then there are an equal number of boys who have a sister and girls who have a brother is bijective.