flins.proteins package

Submodules

flins.proteins.actin module

Actin’ up.

These actin filaments are the backbones of the filament systems. They transmit force, are the common binding target for most other proteins, and move in response to gradual remodeling.

class flins.proteins.actin.Actin(x, tract=None, n_pair=None, length=None, polarity=None)[source]

Bases: flins.proteins.base.Protein

A 1D actin filament that has binding sites, diffusion behavior, etc.

An actin at x with n pairs of g-actin in a tract.

Parameters
  • x (float) – X location of the actin within the tract. This is where the first pair will be located, with all others calculated in reference to it.

  • tract (flins.space.Tract, optional) – 1D tract that the actin lives in. Is the parent of the filament in organizational hierarchy.

  • n_pair (int, optional) – Number of g-actin pairs in the filament. We use this to set filament length. Takes precedence over length.

  • length (float, optional) – Alternate method of setting number of g-actin pairs. Will set n_pair to number that results in filament extent closest to length.

  • polarity (boolean, optional) – Is the plus end to the right? Governs myosin binding shortening. If not passed, we answer None and let the motors figure it out.

property bound

Do you have any attached pairs?

property boundaries

How far do you extend?

property energy

How much energy does the filament bear at its current location?

property force

How much force does the filament feel at its current location? See _hypothetical_force for more detail.

freely_diffuse()[source]

Move around a bit, see AlphaActinin.diffuse for more explanation

property length

How long are you?

nearest(x)[source]

What is the nearest pair to the given location

nearest_unbound(x)[source]

What is the nearest unbound pair to the given location

step()[source]

Take a timestep: move subject to force and diffusion As with α-actinin, we take free diffusion to be subject to an Einstein-Smoluchowski diffusive processes (as documented in flins.support.diffuse).

When bound we treat the movement of actin as subject to equipartition of energy stored in each of the bound α-actinins. We first find the x-location where the force from bound α-actinins is balanced, representing relaxation into the local lowest-energy state. We then draw a Boltzmann distributed energy, use its sign as a directionality indicator, and move in the given direction until the energy stored in the system has changed by the drawn amount.

property x

What is the starting location of the actin filament? It is assumed to go in the positive direction afterwards.

class flins.proteins.actin.GActinPair(filament, index)[source]

Bases: flins.base.Base

Two g-actin with a site that can bind and unbind.

A binding site on actin filament at location index.

Parameters
  • filament (flins.Actin) – Parent actin filament to this pair.

  • index (int) – Pair location in the list of pairs on the parent filament.

energy(x=None)[source]

What energy does this g-actin store?

Energy is only stored in the case that the binding site is attached, since we are treating actin as inflexible.

force(x=None)[source]

What force does the g-actin experience?

property polarity

Myosin is plus-end directed. For a review of polarity in the sarcomere, see this book section.

Type

Is the plus end to the right? NB

property x

Where are you at? Referenced from parent actin.

flins.proteins.alpha_actinin module

αaas: α-actinin as a service

But seriously, α-actinin is the primary cross-linker in this system. It requires two heads separated by a flexible (or extensible) backbone that are able to bind adjacent actin filaments.

class flins.proteins.alpha_actinin.ActininHead(actinin, side)[source]

Bases: flins.proteins.base.Head

One of the two heads of an α-actinin

A head on one side of a parent protein

Parameters
  • parent (:obj: Protein subclass) – The protein on which this head is located

  • side (int) – Index of this head’s position on the parent

energy(x=None)[source]

What energy is stored in the α-actinin backbone? This exists because we want to be able to propose alternate ActininHead locations and find the energy without changing states.

force(x=None)[source]

What force does this α-actinin head exert or feel?

This accounts for the fact that heads feel equal and opposite forces and that these forces change as the spring is compressed or extended from rest. Let’s think of two heads, a and b at either end of an α-actinin spring. The default force sign returned from the spring is negative when the spring is shortened and positive when it is lengthened. The desired sign is that which reflects the force exerted by the spring on the binding site.

Head

Orientation

Spring

Default

Desired

Flip needed?

A

A>B

Short

-

+

Yes

A

A>B

Long

+

-

Yes

A

B>A

Short

-

-

No

A

B>A

Long

+

+

No

B

A>B

Short

-

-

No

B

A>B

Long

+

+

No

B

B>A

Short

-

+

Yes

B

B>A

Long

+

-

Yes

Looking at this it becomes obvious that force direction flips are needed in cases where the current head is the right-most of the two.

step()[source]

Take a timestep: bind, unbind, or stay current

property x

Location derived from α-actinin

class flins.proteins.alpha_actinin.AlphaActinin(x, tract=None)[source]

Bases: flins.proteins.base.Protein

A 1D α-actinin molecule with heads on either end

As this head is considered as a semi-physical object, we care about its dimensions and material properties. The dimensions of α-actinin are readily available from crystallization, and more recently cryo-EM, studies.

Property

Value

Units

Source

Length

24-36

nm

1, 2

Thickness

0.5-6.5

nm

1, 2

Stiffness values are far harder to find. The flexural stiffness and persistence length of α-actinin have been measured or calculated via simulation multiple times, but I am unable to locate an extensional stiffness. So, let’s calculate the Young’s modulus from persistence length measurements made on generic α-helices and translate that to the specific dimensions of α-actinin. We take the persistence length of an α-helix to be 80nm 3, and therefore for our tetrameric spectrin repeat backbone to be 240nm. This assumes linear scaling, but is supported in 3 for scaling from single helices to coiled-coils. More structural detail can be found, amongst other places, in Autore_2013.

Persistence length, \(L_p\), is related to the bending stiffness, \(B_s\), and therefore to Young’s modulus, \(E\), via \(L_p=\frac{B_s}{k_B T}=\frac{E I}{k_B T}\) where \(I\) is the second moment of area. For a rod \(I=\frac{\pi r^4}{4}\). So our \(E\) becomes \(E=\frac{4 L_p k_B T}{\pi r^4}\). What we really want is the spring constant, \(k\) which we get from \(E\) by \(k=\frac{E \pi r^2}{L_0}\) and thus

\[k = \frac{4 L_p k_B T}{r^2 L_0}\]

Where with \(L_p=240nm\), \(k_B=0.0138pN*nm/K\), \(T=288K\), \(r=1.5nm\), and \(L_0=36nm\) to give \(k=3.75pN/nm\)

While we’ll use this extensional stiffness below, it is worth noting that bending may be the primary mechanism by which α-actinin deforms (Grum_1999).

Property

Value

Units

Source

Stiffness

3.75

pN/nm

3

1(1,2)

https://dx.doi.org/10.1007/s00018-008-8080-8

2(1,2)

https://dx.doi.org/10.1016%2Fj.cell.2014.10.056

3(1,2,3)

https://dx.doi.org/10.1103/PhysRevLett.97.248101

An α-actinin at location x in a tract

property bound

Are you bound?

property energy

Current energy born by the stretched (or not) α-actinin

freely_diffuse()[source]

Diffuse to a new location. We know the approximate dimensions of the α-actinin backbone are 24-36 nm by 0.5-6.5 nm as specified in Sjöblom_2008 and Ribeiro_2014. We treat this as an ellipsoid of radii 18 by 3 nm to account for the heads at either end.

An alternate treatment would be to use the Stoke’s radius for actinin described in BNID_104395.

property fully_bound

Are both sides bound?

step()[source]

Take a timestep

flins.proteins.anchor module

Don’t stray far now.

Anchor keeps a linked binding site strongly attached to a given location. It is intended to be used to represent focal adhesions and their movements.

class flins.proteins.anchor.Anchor(x, anchor_to=None, tract=None, k=1000, rest=0)[source]

Bases: flins.proteins.base.Protein

A strongly anchored spring that stays put We need to be able to specify the locations of, e.g., the ends of an actin being treated as bound to a focal adhesion or simply a boundary of the simulation. To do this while keeping our force solvers happy, we use very stiff springs attached to actin binding sites.

Create our anchor

Parameters
  • x (float) – Initial x location of the anchor

  • anchor_to (component with BindingSite, optional) – Protein segment with a binding site to anchor down

  • tract (flins.space.Tract, optional) – Tract in which this anchor exists

  • k (float, optional) – Stiffness of the anchor’s attachment to its location in pN/nm [1000]

  • rest (float, optional) – Rest length of the spring tethering the anchor in nm [0]

energy(x)[source]

Energy stored in anchor spring with other end stretched to x

force(x)[source]

Force exerted by anchor if other end is stretched to x

step()[source]

Sit there and remain bound

flins.proteins.base module

Base protein class

class flins.proteins.base.Head(parent, side)[source]

Bases: flins.proteins.base.Protein

Generic head located on a parent protein

A head on one side of a parent protein

Parameters
  • parent (:obj: Protein subclass) – The protein on which this head is located

  • side (int) – Index of this head’s position on the parent

property other_head

The other head

class flins.proteins.base.Protein(kind, tract=None)[source]

Bases: flins.base.Base

flins.proteins.motor module

Crank it.

This is a simple simple motor. It isn’t intended to do more than create some sliding forces:

Head 1        Head 2
   |             |
   v             v

   *--\/\/\/\/\--*

          ^
          |
       Backbone
class flins.proteins.motor.Motor(x, tract=None)[source]

Bases: flins.proteins.base.Protein

property bopped_locs

Locations after perturbation, may not need this?

property bound
property fully_bound
property locs

Location of each node in motor. 2 in this case

property state
step()[source]

Take one step forward in time.

If the motor isn’t bound, it freely diffuses. Both heads have the chance to transition from their current state to a new one.

property x
class flins.proteins.motor.MotorHead(motor, side)[source]

Bases: flins.proteins.base.Head

A head that tracks binding, rates, and states

Create a motor head.

A note on states: typically we talk about a motor being in states that are one indexed (1, 2, …) but since lists in python are zero indexed (0, 1, …) we treat states as such to make it far easier to avoid off-by-one errors.

Parameters
  • motor (Motor) – The parent motor to this head

  • side (0 or 1) – Whether this head is on the left (0) or right (1) side of the motor

energy(x=None)[source]

What energy is stored in the motor backbone?

force(x=None)[source]

What force does this head exert or feel?

property polarity

Return true if this is the right-most head.

The polarity of the actin filaments is defined as True when the plus end is to the right. As myosin is plus-end directed we want it to bind only when the backbone-to-face direction is facing the plus end of the actin filament. So we’ll return a polarity of True when this head’s location is greater than the other head’s and False when it isn’t.

step(bs=None, length=None)[source]

Take a timestep, transitioning to a new state as needed

property x

Module contents