Eyegene Home >> Madeline 2.0 Home

Madeline 2.0 Pedigree Drawing Engine

2015.12.14 New "Collapsed" field - Madeline 2.0 PDE now supports a data field called Collapsed that allows you to "collapse" a group of siblings in a nuclear family into a single representative individual:

ObligateCarrier and SampleQuantity Fields

To use this option, first you need to add a Collapsed column in your data table and then identify the "collapse groups" using unique identifiers, such as "A" for the first group, "B" for the second group, "C" for the third group, etc.

After that, all you need to do is use the "-k" or "--collapsed" flag when you run Madeline. If individuals in the group differ in gender, the program will automatically use a diamond to represent the group. Affection status will be based on the affection status (or multiple affection statuses) of the first individual within each group as seen by the program. A number will be printed in the center of the individual icon indicating the number of individuals represented by that icon.

Currently, the implementation is somewhat limited in that collapsing is only supported for terminal individuals without children. Nevertheless, this new functionality can be extremely useful for collapsing large pedigrees into more compact forms.

To see the results for yourself, try executing the following command line:

madeline2 -nNkL "IndividualId SampleQuantity Collapsed" -C "A=salmon;A=purple" https://madeline.med.umich.edu/madeline/testdata/input/collapsed.data

You can also download collapsed.data here.

Remember, you can always type madeline2 by itself to see a list of all the option flags. Point your browser to https://github.com/piratical/Madeline_2.0_PDE to obtain the latest code tree with the improved custom color features enabled.

2015.12.14 New ObligateCarrier and SampleQuantity fields - Madeline 2.0 PDE now supports two new data fields:

ObligateCarrier and SampleQuantity Fields

(1) The ObligateCarrier is a boolean field. When ObligateCarrier is true, individuals are drawn with a small open circle in the middle. In contrast, individuals with a true in the Carrier field are drawn with a filled circle. Used together, these two fields allow you to distinguish between individuals who have been confirmed as carriers based on physical samples, versus individuals who are deduced to be obligate carriers based on inheritance but for whom confirmatory samples may not be available.

(2) The SampleQuantity field is similar in purpose but more flexible than the previously-available Sampled field. In SampleQuantity, you can specify either a boolean value or a numeric fractional value. If you specify a boolean value such as "Y" for yes or "S" for sample, the program will draw a small test tube to indicate that you have a sample, but the volume or quantity of the sample is unspecified. Alternatively, if you specify a numeric value between 0.00 to 1.00 inclusive, then the test tube will be drawn filled proportionally. (If you specify a number beyond 1.00, the test tube will still be drawn, but you will receive a warning and the test tube will not be filled with color). This field thus allows you to visually track available sample quantities both generally and with precision.

2015.10.29 Funding Cuts - Additional funding cuts are about to affect continued development of Madeline. Madeline is Open Source software, but we cannot continue to develop it without funding. If you have feature requests, please contact us to make arrangements so that we can continue to improve Madeline to meet your needs and the needs of all users.

Funding cuts!

Thank you for your continued support!

— Ed Trager, principal author, Madeline 2.0 PDE software
   October 29, 2015

obesity and hypertension pedigree example

2015.10.29 Improved Custom Colors! - Madeline 2.0 PDE now supports named colors and the assignment of colors to specific levels of a categorical variable. The command-line option for specifying custom colors is the same as before: --custom-icon-colors, or -C for short.

The 140 web color names recognized by modern web browsers are now also recognized by Madeline. You can of course still specify colors using HTML/CSS hex syntax, such as "#f00" or "#ff0000" for red. And you can freely mix-and-match hex syntax and named colors.

As before, each color in a custom color series is separated by a comma. Now however you can assign colors to specific keys using the equal sign, e.g., "NORMAL=lightgreen,AFFECTED=red,INDETERMINATE=gray", etc. To specify colors for multiple AFFECTION variables, just separate each series by a semicolon.

Try it out yourself with this test data using a command line such as this:

madeline2 -nNC "NORMAL=lightgreen,OBESE=salmon,OVERWT=orange,UNDERWT=skyblue;NORMAL=cyan,PREHYPT=#fdd,STAGE_1=#DCD,STAGE_2=purple" https://madeline.med.umich.edu/madeline/testdata/input/ObesityAndHypertension.data

Remember, you can always type madeline2 by itself to see a list of all the option flags. Point your browser to https://github.com/piratical/Madeline_2.0_PDE to obtain the latest code tree with the improved custom color features enabled.

obesity and hypertension pedigree example

2015.09.30 Custom Colors! - Madeline 2.0 PDE now supports custom colors via a simple command-line switch, --custom-icon-colors, or -C for short.

Colors are specified using HTML/CSS hex syntax, such as "#f00" or "#ff0000" for red. Each color in a custom color series is separated by a comma. To specify colors for multiple AFFECTION variables, just separate each series by a semicolon.

Try it out yourself with this test data using a command line such as this:

madeline2 -nNC "#4f4,#f44,#ffc800,#98d6ff;#fff,#cffdfd,8ff,#0ff,#433efe" ObesityAndHypertension.data

(Hint: use an online color picker or a program like Gimp or Photoshop to obtain the hex codes that you need.)

Remember, you can always just type madeline2 by itself to see a list of all the option flags. Point your browser to https://github.com/piratical/Madeline_2.0_PDE to obtain the latest code tree with the custom color feature enabled.

2015.09.30 Code repository has moved to GitHub! - Madeline 2.0 PDE's code repository is now on GitHub. The original code repository on SourceForge still exists, but is no longer being updated. Please point your browser to https://github.com/piratical/Madeline_2.0_PDE to obtain the latest code tree.

2014.08.13 Greatly improved spreadsheet support! - Subversion release 112 of Madeline 2.0 now provides greatly improved support for reading pedigree data from OASIS (Open Office, Libre Office) spreadsheets. Madeline previously required that missing data always be coded in spreadsheets using a period "." (full stop) character. However this requirement meant that if one accidently left one or more cells blank, the program would frequently fail to read the data table correctly. The program now treats empty cells as if they contained a missing value character, "."

Madeline now has a special display for pregnancies.

2014.07.10 New Pregnancy Feature! - Users may now include a column called Pregnancy in order to indicate pregnancies. In order to avoid confusion, pregnancies are displayed using a unique double-struck P, “ℙ”. Since the “ℙ” is printed in the center of the icons, be sure to set the --noiconlabels so that the “ℙ” will not over-print on top of affection status code letters. Here is a sample data file:


As an example, this file can be run using the following command line:

madeline2 --noiconlabels --Labels "Gestation DOB" pregnancies.data

Or, alternatively, you can let Madeline read the data file directly over the internet:

madeline2 --noiconlabels --Labels "Gestation DOB" http://eyegene.ophthy.med.umich.edu/madeline/testdata/input/pregnancies.data

2013.02.13 Improved Public Service! - Pedigrees displayed in the web service now also display the dates of birth of individuals. When dates of birth are present in the DOB column, siblings are automatically ordered by date of birth when possible.

Madeline's web service now display DOB by default.

2011.11.21 Enhanced flexibility in files and display! - Three new enhancements to Madeline 2.0 PDE are now available in SVN revision #99:

  1. More flexible coding in data files. Previous versions of Madeline accepted only abbreviations such as "Y" for "yes", "N" for "no", "M" for "male", "F" for "female" and so on. As of revision #99, Madeline now recognizes full-word codes such as "yes", "no", "true", "false", "male", "female", "divorced", "separated" and so on in the key categorical fields. This change should make Madeline easier to learn and use, especially in pedagogical and other situations where it is important to make data files as easy-to-read and transparent as possible.
  2. Display of IDs in tooltips. When a Madeline 2.0 SVG pedigree drawing is displayed in a conformant web browser, using the mouse to hover over an icon of an individual will now result in the display of a tooltip with the individual's ID shown. This can be quite useful, especially as very long IDs may be truncated in the tabular display that appears below the icons on a pedigree drawing.
  3. New command line flag to prevent label truncation.
  4. In the past, very long identifiers and other field data could be truncated when strings were excessively long. A new command-line option, --nolabeltruncation or simply -N now prevents truncation of labels on a drawing when they are too wide. While this option may comprise the overall layout quality of a pedigree and is not recommended for pedigrees intended for publication, it can nevertheless be quite useful on pedigree drawings used as part of a lab's internal process workflow.

2011.03.23 Improved Public Service! - A bug whereby the affection status of individuals was not shown correctly under certain circumstances when a pedigree was retrieved from online storage has been fixed on the Madeline public web service.

Ancestor cannot be descendant

2011.03.23 Improved Error Checking! - Accidental typing mistakes can lead to some very unusual error conditions in data sets. Certain error conditions may result in Madeline failing silently or even entering infinite loop conditions. Recently, the reincarnation of a paternal grandmother as a daughter of a certain father in a fairly large pedigree made me realize that such impossible conditions need to be checked in a generic manner. SVN revision #96 now includes an error-detection algorithm that looks for ancestral individuals who are also descendants. The program reports all individuals who are involved in such ancester-descendant loops so that the user can quickly determine where the error truly lies.

Fink Logo

2010.11.18 New Binary Package! - If you don't want to bother with building Madeline from the source tree, Daniel Johnson recently created a Fink package which will allow you to install the latest version of Madeline-2.0 PDE with relative ease on Apple OS X.

Quadrant shading implemented in Madeline.

2010.09.29 New Feature! - Madeline now supports quadrant shading of icons as an alternative to gray or color series shading. To use this feature, pass "--quadrantshading" or "-q" as a command line argument. The first "Affected" field encountered in the data set will be used. Any additional "Affected" fields will be ignored. Integer codes in the range from 0-15 inclusive produce the quadrant shaded patterns shown in the table below.

Note that zero produces an unshaded pattern. Non-integer codes as well as integer codes outside of the range 0-15 will simply be displayed in the middle of the icon without a shading pattern. This is illustrated in the pedigree above where:

  • The shading code for individual 17 is a zero
  • The code for individual 16 is "16" for which no shading pattern exists
  • The code for individual 18 is a missing value, and thus a dot is printed
  • The code for individual 19 is the letter "I" which is thus printed as shown
Quadrant shading patterns.

By default Madeline uses either shades of gray or bichromatic color series to indicate different levels of categorical affection variables. The gray and color shading models are useful for interactive pedigree displays such as might be encountered in a web applications. However for publication purposes, researchers often want to use quadrant shading patterns or hatching patterns to display levels of a categorical variable such as affection status. This new feature allows users to employ quadrant shading patterns. Hatching patterns are not supported. Also note that at the current time the program does NOT produce a legend when the quadrant shading option is specified.

Google plugin brings Madeline web app to IE.

2009.09.23 - Our experimental web-based Madeline service now works in all modern browsers, now including Internet Explorer versions 6, 7 and 8 thanks to Google's new Chrome Frame plugin. This Google plugin adds advanced features required by the Madeline web application that are missing from Microsoft's Internet Explorer series of browsers. Using Madeline's web service in other browsers such as Firefox, Safari, Google Chrome, and Opera does not require a plugin.

Support for display of adoptions

2009.05.23 New Feature! - Madeline 2.0 PDE now draws curved connectors in the background showing the placement of children adopted by relatives in a pedigree. Madeline 2.0 uses the Pedigree Standardization Task Force (PSTF) recommended graphics for children who are "adopted in". For showing "adopted out", Madeline uses square brackets that face outward. In addition, Madeline identifies "adopted in" children with individual ids prefixed with a plus sign, "+" while "adopted out" individual ids are prefixed with a negative sign, "-".

OpenHelix Tutorials

2009.05.22 - OpenHelix, LLC, has published a web tutorial on Madeline 2.0 PDE. OpenHelix provides on-demand multimedia narrated tutorials on a large number of popular free web-based bioinformatics tools. We are honored that OpenHelix decided to include Madeline 2.0 PDE as part of their suite of online tutorials.

Pedigree showing curved connectors.

2009.05.22 - New Feature! - Madeline 2.0 PDE now draws curved connectors in the background between individuals who are drawn more than once on a graph.

In the past, such individuals were only marked with unique indentifying letters, "A", "B", "C", etc. Tracking down matching individuals on large or complex graphs could be time-consuming. The new background connectors make large and complex graphs easier to read and understand with much less effort.

Pedigree showing PSTF-standard graphics for sterile and infertile individuals

2009.05.20 - New Feature! - Madeline 2.0 PDE now supports the display sterile and infertile individuals using PSTF-recommended graphics. To display sterile individuals, include a column called Sterility in the data file. To display infertile individuals, include a column called Infertility in the data file. Then simply include labels such as "azoospermia" or "tubal ligation" in the appropriate column for the relevant individuals. Labels will appear in small type below the symbols as shown in the pedigree above. Leave these columns blank (or containing the standard dot "." as a missing symbol) for fertile individuals.

Pedigree showing divorced, separated, and other relationship-ended couples

2009.05.12 - New Feature! - Madeline 2.0 PDE now supports the display of divorced (double-slash), separated (single slash), and other relationship-ended (squiggle slash) couples. To use this feature, simply include a column called RelationshipEnded in the data file.

Since individuals can have multiple partners, be sure to mark both individuals of a pair. For example, mark divorced couples using D or divorced. Mark separated couples using S or separated. If the reason why a relationship ended is unknown, or if the relationship represents a casual relationship which has ended, you can use any non-missing label of your choosing. A general label such as Y or yes is sufficient.

In order to indicate multiple relationship breakups such as is shown in the example above, we mark individual m103 with a generic label Y as shown, and then mark his partners respectively with one of the more specific labels (i.e., D for m106 or S for m105). When more specific information is not available, or the relationship represents a casual relationship which has ended, then we just use a generic label such as Y (m113).

The Madeline 2.0 Pedigree Drawing Engine is a pedigree drawing program designed to handle large and complex pedigrees with an emphasis on readability and aesthetics. Although the program takes inspiration from Madeline v. 0.935, the Madeline 2.0 Pedigree Drawing Engine, or just Madeline 2.0 for short, is in fact a completely new and different program written from scratch by Ed Trager, Ritu Khanna, and Adrian Marrs.

For complex pedigrees we use a hybrid algorithm in which consanguinous loops are drawn as cyclic graphs whenever possible, but we resort to acyclic graphs when matings can no longer be connected without line crossings. A similar hybrid approach is used to avoid line crossings for matings between far-flung descendants of different founding groups. Written in object-oriented C++ and released under the GNU General Public License (GPL), Madeline 2.0 reads input files specified on the command line and generates pedigree drawings without user interaction. Pedigree output in scalable vector graphics (SVG) format can be viewed in browsers with native SVG rendering support such as Firefox 1.5+ and Opera 9.0+, or in vector graphics editors such as Inkscape.

A Brief History

Sometime around 1996 Ed Trager began to writing a program for preparing, visualizing, and exploring human pedigree data used in genetic linkage studies. This became the program known as Madeline which remains in use by researchers worldwide. In addition to converting pedigree and marker data into various formats required by linkage analysis software, including Crimap, Genehunter, Allegro, Mendel, Merlin, PedCheck, and Simwalk2, Madeline also provides functionality for querying pedigree data sets and for drawing pedigrees. The current development version is 0.936 and the stable version is 0.935.

Madeline 0.935 remains a capable program, but it's pedigree drawing routines have many limitations because the program was originally only designed to handle single descent trees of simple nuclear families. Consanguinous loops, multiple mated individuals, and multiple founding groups often occur in the extended family pedigrees used in modern genetic studies, and much work has been invested in finding better ways to visualize these kinds of pedigrees.

In the Madeline 2.0 pedigree drawing engine, we have tried to create a much more robust pedigree drawing engine to address the limitations of the older program and to provide the worldwide research community with a better tool for pedgiree visualization.

Find Out More

Click on the following resources to find out more about Madeline 2.0:

Fun Facts About Madeline 2.0 from Ohloh

Using Madeline 2.0 on the Web

If you are using a web browser with the ability to render SVG graphics natively (currently this means Firefox 1.5+ or Opera 9.0+), then you can use our interactive public web service:

Madeline 2.0 Web Service

Please note that this is currently an experimental service. By using this service, you agree to use at your own risk as there is no warranty of performance or protection against data loss.

Quick Download: Getting Madeline 2.0 PDE

Code Repository on GitHub

The latest updates to Madeline 2.0 PDE are now available on Github at https://github.com/piratical/Madeline_2.0_PDE. Assuming you have the git command-line client available on your machine, you can check out the repository using the following command:

git clone https://github.com/piratical/Madeline_2.0_PDE.git

Checking out the code from the Github repository guarantees that you will be getting the latest code and access to the most recent features and bug fixes.


For more information, contact the developers: