Filament model

From Dynamo
Revision as of 16:29, 15 August 2016 by Daniel Castaño (talk | contribs) (→‎Types of filaments)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Filament models are used for geometries where location and orientation of particles to be cropped (called subunitsin this context) can be defined with relation to tubular estructures.

The usual way of handling them is by opening a small fraction of a tomogram inside dtmslice and mark manually positions that will be used to define a "backbone". Loosely speaking, we call the "backbone of the filament" to the series of ordered points that arise from defining successive orthogonal sections along the path of the filament and picking the central point. Different models are available for the different relationships between the "backbone" of the filament and the locations and positions of the particles to be cropped.

Input stage

The input points in a filament model are used to define a smooth interpolant called backbone.

Clicking input points in dtmslice

A [video tutorial] explains with detail the process of picking points and converting them into subunit locations.

The basic tool for tracking filaments is dtmslice. In this tools, creating the points of a filament can be done manually in three steps:

  1. Select extremal points,
  2. Create orthogonal sections
  3. Click on the center of each section.

Select extremal points (anchors)

Click on [1] and [2] to select two extremal points in the filament, typically in two different sections. [1] will appear as a red diamond, [2] appears as a blue diamond.

Click on anchor 1
Click on anchor 2

Create orthogonal sections

In the Filament Tools panel, you can select a partition of the space between the anchor points. The default value is 1:10:100, meaning: "divide the distance between the anchor points in 100 parts, and create an orthogonal section every 10 points".

You can also select a sidelength different to the default value of 32. Here, the units are pixels.

Control for creating filament sections in dtmslice

After clicking the [extract] button, two things will happen:

  1. An animation on the dtmslice scene will show the sections that will be extracted (using a small cyan rectangle).
  2. The sections will appear as a montage in a new window.
Popup window with the created sections.

Define section centers

In the currently released version, the user is asked to click on the the center of each shown section.

Each click on a section in the montage determines a 3d point added to the model.

Geometric computation stage

The manually introduced points need to be converted into particle points.

Types of filaments

Different models are provided to account for different ways of relating particles to the points provided by the user during the input stage:

  1. along the path
  2. helically distributed pointing outwards
  3. in rings orthogonal to the path, pointing outwards.
  4. randomlly distributed in the tube of the filament.
Crop positions generated by the different filament types. The central points are common in all types. Matlab syntax can be consulted Filament types code example here


The subunits will be defined along the backbone. The center of each subunit will be defined in the backbone. The zdirection of the subunit is defined to be colineal with the orientation of backbone at that point, and the distance between two subsequent subunits is defined by the model parameter dz. The torsion effect referred to by the name of the model refers to the fact that the x direction of two subsequent subunits can be chosen to vary a fixed amount (with parameter dphi)


  • subunits_dz distance of the subunits along the backbone (in pixels).
  • subunits_dphi torsion between subunits (in degrees).


In this case, the subunits to be cropped are supposed to be located on a helix that turns along the backbone of the filament. The center of the subunits is on a fixed distance from the backbone of the filament (defined by parameter radius), and the z direction points radially from the backbone, while x points along the way of the filament.


  • subunits_dz distance of the subunits along the backbone (in pixels).
  • subunits_dphi angular distance between the subunits (in degrees) .
  • radius distance of the subunits to the backbone (in pixels).


Several equally spaced rings of subunits are distributed along the path of the filament.


  • ringSeparation in pixels.
  • subunitsPerRing
  • radius distance of the subunits to the backbone (in pixels).

Computation of the particles

Using a workflow tool

The Active model option in dtmslice includes the option Step-by-step workflow for model.

Opening the model workflow from dtmslice
Workflow steps on a workflow GUI opened onto an unprocessed filament model


The methods used for the processing of a filament objects are typically:

  • createBackbone
derives a smooth backbone that interpolates the points introduced by the user.
normally does not require to change any parameter.
  • updateCrop
creates the crop_points and crop_angles corresponding to the particular model.
uses the geometrical parameters of the model: dz, dphi, etc....
  • saveIntoCatalogue

The syntax for invoking these models can be consulted in this matlab code example .