IMOD - naming objects

From NoskeWiki
Jump to: navigation, search

About

NOTE: This page is a daughter page of: IMOD


This page assists in and describes the importance of using consistent names and colors when segmenting images of cells. Although this page talks about naming objects within IMOD (a popular, free suite of tomography programs), these same principles apply to naming organelles in any segmentation software.


Why is it Important to Name Objects Consistently?

A common problem in segmentation programs (not just IMOD/3dmod) is that users often don't know how or forget to provide adequate labeling for the structures they segment. All over the world, science/electron tomography labs tell the same story of having dozens or hundreds of IMOD models with object names such as "blue object", "round things", "MT" or (more commonly) no label at all. Segmentation is usually carried out by students who are never taught the importance of labeling objects, who are allowed to choose their own colors and who only stay in the lab for a short-to-medium time period. Anyone else in the group who opens these model files thus has no idea what they're looking at.

Without a consistent naming system it become very difficult for scientists for analyze single models - let alone analyze differences between several models by several different people. As a result, such models often get disregarded. Wether it's poor segmentation or poor labeling, nobody wants to go back and fix someone else's model (it just doesn't seem to happen), thus if a model is to have any chance of being reused it's important the lab trains new users to identify, segment and label all objects correctly!


How to Name Objects in IMOD

To name an object in 3dmod you can simply go: Edit > Object > Type then enter a "name", and to change it's color go Edit > Object > Color. Making people name objects is only half the battle: the other half is doing it right! Even if students have been sufficiently trained to correctly identify an organelle, if left to their own devices, multiple students will give the same object type different labels and different colors. For example, what one student may (accurately) name "Mitochondrial Outer Membrane", others may name "Mitochondria", "mitochondrion", "Mito memb", "MITO23", "MT" and so on. To reduce these differences, every group should try and build and then enforce a set of standard names and colors which can be expressed as a simple table. As an example of this, below is an excerpt from a table (see full table) used to segment pancreatic beta cells:


Standard Names and Colors for Beta Cell Segmenation

# Object Name Red Green Blue Color
1 Plasma Membrane 255 60 255 pink
2 Nucleus 255 255 0 yellow
3 Mitochondrial Membrane Outer 0 125 0 dark green
4 Multivesicular Body 255 155 0 orange
5 Golgi Apparatus 100 100 100 grey
6 Microtubule 0 255 0 green
7 Transport Vesicle 255 255 255 white

Notice here that:

  1. all names are in full (using abbreviations is very bad practice)
  2. all names are in Title Case (i.e. first letter capitalized, the rest in lowercase)
  3. all names are Singular (eg: "Microtubule" instead of "Microtubules", even though the object is likely to contain many microtubules)
  4. all these names were taken from the NeuroLex "Subcellular Parts Table". (to ensure consistency with other cell biology groups)

Your own group can and should build a similar table using standard names from your field. Although difficult, it's also a good idea to try and use the same ordering of object types across similar models, since most IMOD analysis tools (such as mtk) require you to list the object's number. You can renumber objects using: Edit > Object > Renumber....


Using the "Name Wizard" Plugin

To help encourage consistent naming and coloring of objects I created a IMOD plugin called "Name Wizard". This plugin works by loading a table of standard names and colors, plus optional hyperlinks and unique IDs from a CSV (comma separated value) file in the "IMOD_CALIB_DIR" at: "/usr/local/standard_names_persistent.csv" or (if this does not exist) at in the IMOD_DIR under "$IMOD_DIR/lib/imodplug/standard_names.csv" (NOTE: The former file location is preferred because it will not get overwritten when IMOD is reinstalled). By default there are just over 200 entries which were taken from the NeuroLex "Subcellular Parts Table", and you can open these cvs files to modify them or create your own entries. In addition to auto-complete, this plugin helps rapidly enter and verify that all names match the entries in the csv file. There are also options here to manage objects by reordering, deleting, merging or splitting. Thus, if you are serious about making your group use consistent labels, I recommending installing the same "standard_names_persistent.csv" and installing Name Wizard on all computers in your group.

Name Wizard plugin

  • Installation Instructions:
    • Name Wizard was created Jan 2010, and as of March 2010 is part of the IMOD beta release (IMOD version 4.1.12). Name Wizard will become part of the standard release soon, but until then you can download the beta version (which matches your platform) from: ftp://bio3d.colorado.edu/latestIMOD/ and follow the IMOD install instructions.
  • Old Instructions (Obsolete Now):
    • You can install Name Wizard manually by downloading the latest alpha version (which matches your platform) from: ftp://bio3d.colorado.edu/latestIMOD/alpha/plugins/. Copy this file + "standard_names.csv" + "namewizard.html" to your $IMOD_CALIB_PLUGIN/plugins directory (or try the $IMOD_DIR/lib/imodplug/) directory, and the next time you start 3dmod you should be able the see and start the plugin under "Special > Name Wizard". E-mail me at andrew.noskeATSIGNgmail.com if you have any problems.


Watch "Name Wizard" video tutorial



Shared Vocabularies and Ontologies (Local Names vs. Global Identifiers)

Enforcing your own names is a good start, but how do you know your names are correct and the same as used in other groups? To ensure proper names are used between groups, cellular biology organizations/initiatives such as the "Neuroscience Information Framework (NIF)" have built large ontologies containing shared vocabularies by mapping together many smaller ontologies. An ontology is much more than just using standardized names: and ontology is "a formal representation of knowledge as a set of concepts with a domain and the relationship between those concepts". Effectively it's like a set of rules... for example:

  • Mitochondrial Outer Membrane "is part of" Mitochondrion
  • Mitochondrion "is an" Organelle
  • Organelle "is part of" Cell

This tells us wherever there is an Mitochondrion, it must be contained within a cell. This information can be very useful for analysis and even in segmentation algorithms. Since IMOD can be used over a broad number of domains (including material science), it does not contain or enforce any ontology rules/logic, however it's still a good idea to be aware of such ontologies, and adhere to the most relevant naming conventions. By finding the correct name, you are ensuring your model can, at a later point in time, directly map to ontology's and database searching and data mining algorithms can help other people find and make sense of your model.


Finding Correct Names for Cellular and Sub-cellular Compartments using the NIF Website

Although enforced standards are (unfortunately) very rare, a good standard to use in cell biology are the "NIF Vocabularies". NIF, an initiative at the University of San Diego California, provides the following website interface where you can begin typing the name of an organelle and an auto-complete feature will suggest the appropriate name:

Alternatively, you can access a nice alphabetical list of common sub-cellular compartments (and even add your own) here:

Clicking on any of these organelles will link to information and often pictures of that organelle. Note that each "object" in NeuroLex (part of the NIF ontology) contains a unique identifier. For example "Microtubule" has the unique identifier "sao1846835077".



Single Object Per Compartment Type vs. Multiple Objects

The way IMOD works, each "Object" contains: many contours and these contours are meshed together across the volume to form multiple surfaces. In other words you can (and in most cases should) use your "Granule" object to draw MANY granules - IMOD will work out how many surfaces there are for you when you later. The word "object" is confusing for new users - in real life we describe a single solid entity as an object, but in IMOD "object" is more like "object type" - thus it's important to learn this concept. The way I was taught to segment, was to create a SINGLE object for each type of organelle..... but some groups prefer to segment each individual organelle in a new object. When you do this it's still important to name objects consistently, and you may also want to add a number to the end, for example:


Segmenting Each Surface into a Separate IMOD Object

# Object Name Red Green Blue Color
1 Axon.001 0 0 255 blue
2 Axon.002 0 0 255 blue
3 Axon.003 0 0 255 blue
...
50 Axon.050 0 0 255 blue


Notice that an accurate label ("Axon") has been used, and a number suffixed to each object, separated by a period. The big drawback of this method is that you'll probably end up with a LOT of objects in your model file, and each will have to be individually renamed and colored, however there are also some advantages to such a method. The pros and cons of having multiple objects versus one object per "object type", are summarized in this table:


Single Object (per organelle type) Multiple Objects (one object/surface)
Pros:
  • Few objects per model (usually < 10) make it much easier to mange (i.e. to setup/recolor and rename objects).
  • Don't need to think about what contour belongs to what surface during segmentation (useful for convoluted surfaces).
  • Easy to show/hide whole "layers" at a time.
  • Easier to find and compare individual surface if needed.
  • Easy to see meshing errors since expect each object to mesh into 1 surface.
Cons:
  • Can't show/hide individual surfaces in ModelView.
  • Harder to see and find meshing errors.
  • Each time you modify then mesh contours, surfaces may be in a different order.
  • Can result in hundreds of objects, making it VERY difficult to mange.
  • Must create a new object for each new surface you segment (laborious).

The good news is it is possible to separate or combine surfaces:

  • To find then isolate a single surface into a new object, you must first mesh it (using "imodmesh" or the mesh feature via: ModelView [v] > View > Objects > Meshing tab), then run imodsortsurf using default parameters (eg: "imodsortsurf input.mod output.mod"). After reloading the model you can now go: Edit > Surface > Go To to jump between surfaces. After finding the surface you want to extract, you can go: Edit > Surface > Move to move this surface into a different object.
  • To automatically separate each surface into a separate object run imodsortsurf -s -c input.mod output.mod (this should also preserve the same color).
  • To combine two object/surfaces together, select the object you want to merge then use Edit > Object > Move to merge it into another object, then delete the empty object.

Since the latter approach (merging objects/surfaces) is very slow, I (personally) recommend creating imod models using a single object per "compartment type" and using imodsortsurf to break it apart only if you need to! If however, you do end up with hundreds of objects, I recommend you learn to use "Groups" in the ModelView window. Groups was added fairly recently to IMOD to allow users to turn off and on, and even to change object variables such as color, to multiple objects at a time. To create a group, open the ModelView window then go: Edit > Object List then click "New". Give this group a name (eg: Axons) then use the left-most checkboxes to select all the objects you want to add to that group - you can now use the "on" and "off" button to turn these objects on or off in one click, instead of having to click a hundred times!



Naming Non-Standard Objects in Capitals

Within IMOD you may often find yourself wanting or needing to create objects which don't represent standard 3D structures. For example, you may want to create an object with scattered points to show interesting features within your tomogram, or an object with open contours to measure distances between two types of organelles, or to show section boundaries, and so on. For such "non-standard" objects I suggest you use capital letters to make them stand out. I've listed some examples of these objects below:

Examples of Non-Standard Objects

Object Name Red Green Blue Color Description
POINTS OF INTEREST 255 0 255 purple When segmenting a cellular tomogram it's not uncommon to find features which are interesting which you want to show other people. To flag these interesting areas I recommend creating an object of type "scattered points", which you should call "POINTS OF INTEREST, set sphere size to about 20 and points per contor to 1. You may also want to add a label to each contour (to comment on what you see) by going Edit > Contour > Type... then enter a label. Next time your supervisor is around you can then use [c] to iterate through these points of interest, and see if any are biologically interesting.
MEASURING STICK 255 255 255 white Use this to measure from one point to another. Make sure you set the object type to "open contours" and you may also want to increase the line width to about 3 and set points per contour to 2 so that each "MEASURING STICK" appears as a nice thick white line. After clicking two points (often spanning several sections) you can then measure the (selected) line's length by going: Edit > Contour > Info.
TOMOGRAM BOUNDARIES 0 0 255 blue To just show a plain box around your boundary you can do so in the ModelView window via: Edit > View > Bounding Box, and you can change the color from yellow in the Objects dialog. However when I have multiple sections joined together in Z I sometime like to delimit/model the boundaries by creating a blue "TOMOGRAM BOUNDARIES" object.
UNKNOWN 255 255 0 yellow Often during segmentation you'll see organelles which you are unsure of. In this cases it makes sense to create an object such as this. At a later time you'll want to go through this object with someone more experienced, and make sure you shift all surfaces from here into their appropriate object.
GOLD FIDUCIAL 0 255 0 green Not often, but in some situations you may want to segment the gold fiducial particles which typically occur at the very top and bottom of your tomogram. To segment these you should use scattered points with a small sphere size for the object. These gold particles are typically 10, 15 or 20 nm in diameter and appear as dark dots. They are NOT part of the cell, but are often added to both sides of a section to aid in aligning tilt series, and if done well their distribution should be quite uniform with no clumping.
NOTE: If you are doing fiducial tracking on a tilt series it's not really necessary to label your objects, because it's pretty obvious that all your objects/contours are gold particles.
IMMUNOGOLD 255 200 0 gold Immunogold labelling or Immunogold staining (IGS) is a staining technique used in electron microscopy. Colloidal gold particles are most often attached to secondary antibodies which are in turn attached to primary antibodies designed to bind a specific protein or other cell component. It can also be attached to protein A or protein G instead of a secondary antibody, as these proteins bind mammalian IgG Fc regions in a non-specic way. Gold is used for its high electron density which increases electron scatter to give high contrast "dark spots". To segment these, use a scattered point object, with a small sphere size of about 1-5 (whatever fits best).
NOTE: Although they appear the same, these gold particles are different from "gold fiducials" (which are used purely for alignment).
MINDIST.Microtubules AND Vesicles 0 0 255 red Using the program mtk or my "Analysis Tools" plugin, you can automatically generate lines, representing the minimum distance between surfaces in two objects. If you come back to such objects in a few weeks time you'll forget what you did, hence I advise giving such objects long descriptive names!



Summary

In this article I've explained the importance of naming conventions, and suggested a set of standards you should follow. To revise:

Each group should create a table of standard object names and colors for all the common compartments which students will need to name and segment.

  • Standard object names should be:
    • Spelt in full
    • Title case
    • Singular
    • Tied to a shared vocabulary such as the NIF ontology.
    • some examples: "Free Ribosome", "Mitochondria Membrane Outer", "Peroxisome", "Autolysosome", "Nuclear Pore" ... and so on


  • The Name Wizard IMOD plugin provides a nice interface to help you implement this table as a CSV file and use this to verify all your objects have correct names and colors.


  • In cases where it make sense to use multiple objects per compartment type (such as one object per surface), use the same color and name, and use a period to separate the number.
    • some examples: "Multivesicular Body.001", "Multivesicular Body.002", "Multivesicular Body.003", ... ... and so on


  • For non-standard object (objects which don't represent cellular compartments), you can enforce your own standards, but I recommend using capitals to make them stick out.
    • some examples: "POINTS OF INTEREST", "UNKNOWN", "MINDIST Golgi Apparatus AND Transport Vesicle WITHIN 50nm", ... ... and so on

I hope this has convinced you to develop your own table of standard object names and colors to enforce within your group. If this article has convinced you (even a little bit) to create such a table I encourage you to forward this article to other people!


Links

  • IMOD - lists all the wiki page I've written about IMOD
  • IMOD - compiling - page I've written with instructions on how to compile IMOD code and create your own plugins
  • IMOD website