David Duffy's QIMR Homepage

This contains links to genetics, statistics, and computer programs for linkage and association analysis, including my own. It was last updated on 30-Jul-2010.

David L. Duffy, MBBS PhD.
QIMR Berghofer Medical Research Institute,
300 Herston Road,
Herston, Queensland 4029, Australia.
Email: davidD@qimr.edu.au.

Some photos from our Tasmanian holiday 2000.
Some photos showing climbing 2001-9.

Stuff on this site

QIMR and departmental links My software
My CV/Publications
About asthma
About genetics
A genetic map
My links to other sites: genetics etc
Cycling at QIMR

QIMR and departmental links

Curriculum Vitae/Publication list


Reviews of the genetic epidemiology of asthma and allergic disease

These are periodically updated reviews of the genetics of atopy and asthma. The articles include:

  1. Defining asthma and atopy (Apr 2002)
  2. Measuring asthma and atopy (Jun 2004)
  3. Epidemiology of asthma and atopy (Sep 2005)
  4. Pathology of asthma and atopy (Sep 2005)
  5. Genetic epidemiology of asthma and atopy (May 2004)
  6. Twin studies of asthma and atopy (Nov 2002)
  7. Molecular genetics of asthma and atopy (Sep 2009)
  8. A partial list of references

These chapters are based on my doctoral thesis, which is available in PDF format here.

Our publications on the genetics of allergic disease include:

Other documents that may be of interest

An integrated genetic map

This table (last updated 20060618 18:40) contains interpolated genetic map positions for 128115 marker loci. The positions are in "Rutger's" cM (Kong X, Murphy K, Raj T, He C, White PS, Matise TC. A combined linkage-physical map of the human genome. Am J Hum Genet 2004; 75:1143-1148), estimated via locally weighted linear regression (lo(w)ess) from the Build 35.1 (and 34.3) physical map positions and published Rutgers genetic map positions ( R code here), and linearly interpolated "Oxstats" cM positions (Myers S, Bottolo L, Freeman C, McVean G, Donnelly P. 2005. A fine-scale map of recombination rates and hotspots across the human genome. Science 2005; 310: 321-324). A major difference between these two metrics is the model for recombination across the centromere.

For the pseudoautosomal region, I have interpolated a male map based on the sperm typing data of Lien et al [2000]. This is a separate file.

A research note describing this map is:
Duffy DL (2006). An integrated genetic map for linkage analysis. Behavior Genetics 36: 4-6.

Physical versus genetic position chrom 20

Duplicate markers have been removed. Beware of name modifications (eg Marshfield names often have letter code suffixes such as Z i.e. "Primer moved from its initial position; the allele size changed").

1Marker name
2Alternative name
3Alternative name 2
4Locus type (STS or SNP)
5Decode marker (D or .)
6Marshfield marker (M or .)
8Alternative chromosome (occasionally differs!)
9Decode order number (1-5136)
10Marshfield order number (1-8010)
11Decode physical position on chromosome (bp)
12Decode genetic map position (cM)
13Marshfield genetic map position (cM)
14Rutger genetic map position (cM)
15Rutger male genetic map position (cM)
16Rutger female genetic map position (cM)
17Build 34.3 physical map position (bp)
17Build 35.1 physical map position (bp)
18Interpolated physical map position (bp)
19Interpolated Rutger genetic map position (cM)
20Interpolated Oxstats genetic map position (cM)

I have taken the chromosome band data used by NCBI Mapview to draw ideograms, and interpolated the band positions onto the above map (as opposed to the perhaps more logical approach of mapping linkage findings to a physical map!):

My Software


I am making Fortran 95 source code and some binaries for my programs SIB-PAIR available for downloading.

Sib-pair is now close to a state I consider suitable for general release, and so is now available in a beta-test version. While loading data could still be further improved for large datasets, analysis of data once in memory is fairly fast, so the program can be used for handling and analysis of genome-wide association study (GWAS) data.

The most recent version of SIB-PAIR (1.00b) is dated 30th July 2010 (see the list of new features). With respect to urgency of upgrading, for SIB-PAIR it is always a good idea! For example, on 2010-05-21, I fixed a regression introduced in August 2009, where PLINK .bed files could be read, but some dataset manipulations would crash the program.

Program SIB-PAIR performs a number of simple analyses of family data that tend to be "nonparametric" or "robust" in nature. The name is a misnomer in that Sib-pair is actually for the analysis of arbitrary pedigrees. It is modelled to some extent on the Genetic Analysis System [Young, 1995] in terms of the command language and types of analysis. Included are routines for:

The most recent releases of SIB-PAIR add flexible manipulation of pedigree data, MLE of allele frequencies, segregation analysis, variance components (linkage) analyses that now allow multiple fixed effects including measured genotypes, the combined sibship/transmission disequilibrium score test for allelic association, an extension of the WQLS test to categorical traits, a quantitative trait TDT, mixtures of normal (and other) distributions for quantitative traits, generalized linear (mixed) models, simple classical twin analysis.

The program executable is usually called sib-pair or sib-pair.exe. Precompiled executables are available for Linux and for Windows (see below), but there should be no problems compiling and running on platforms that have a Fortran 95 compiler. There are no hard coded constraints on number of loci, number of pedigree members or number of alleles at a marker (providing your computer has enough memory).

Using the japi library, a graphical file picker or directory browser is now working under Windows and Linux. An alternative uses the GTK2+ based pilib library. If these are not activated, there is a fallback simple text based file chooser.

One feature of the g95 compiler I am using is checkpointing: you can save the current state of a long Sib-pair job by sending the QUIT command (Ctrl-\). This creates a new program called "dump" that when run, will continue from that state. You can then safely stop the original Sib-pair run and resume later. Use "sib-pair --g95" to see information about this and other runtime options.

I might note that the gfortran compiled code on linux is currently much faster reading in large binary files from disk, and about 40-50% faster overall, eg on the regression test suite.

Links to SIB-PAIR

[Documentation about Sib-pair]

[Download Sib-pair]

[Compiling, altering and testing Sib-pair]

[Sib-pair utilities and ancillary programs]


Program LOGLIN is a Fortran 77 program for performing generalised log-linear modelling of complete or incomplete count data. There are two versions of the source code here: one requires the NAG subroutine library to be available, while the other contains equivalent public domain routines. In addition, there is an R library with much the same functionality. LOGLIN may be used for:
  1. Models where imprecise measures have been calibrated using a "perfect" gold standard, and the true association between imperfectly measured variables is to be estimated.
  2. Where data is missing for a subsample of the population.
  3. Latent variable models - eg ML gene frequency estimation from counts of observed phenotypes, latent class analysis.
  4. Specialised measurement models eg where observed counts are mixtures due to perfect measures and error prone measures.
  5. Standard models which are difficult to fit in some packages, such as symmetry and quasi-symmetry models.


This program generates nuclear families, a proportion of which contain monozygotic twins, in which multiple quantitative trait loci are segregating. One of these QTLs is linked to multiple markers. Families can be selected to contain high and/or low values at the quantitative or ordinal trait.


This is a Basic program that performs a number of simple statistical analyses of contingency tables useful in epidemiology and genetics. One can estimate tetrachoric correlations and odds ratios for 2x2 tables (with exact confidence intervals), combine multiple 2x2 tables via Mantel-Haenszel and maximum likelihood procedures (jackknife standard error for pooled MLE odds ratio), test for symmetry and quasi-symmetry in square contingency tables, and obtain exact (Pearson-Clopper) 95% confidence intervals on a proportion. A calculator (double precision) with scientific functions including inht(), fact(), and ran() is also accessible via the same menu.

R Programs

Other programs

rcexact. A program that calculates Fisher exact P-values for RxC contingency tables. Written by Mehta in Fortran 77 (Algorithm 643 from the ACM). I have altered the driving program slightly.

drawhap.sh. Takes SIMWALK2 haplotyping output file and draws the pedigree as a marriage-node graph with haplotypes using Graphviz (needs sh, awk, dot). Not completely satisfactory in terms of placement of haplotypes on the drawing. Colouring is of alleles, rather than haplotypes.

join.unsorted. Just like (unix) join, but files do not have to be sorted. Returns a file following the order of the key in the first named file:

  Usage: join.unsorted [OPTION]... FILE1 FILE2
  For each pair of input lines with identical join fields, write a line to
  standard output.  The default join field is the first, delimited
  by whitespace.  When FILE1 or FILE2 (not both) is -, read standard input.

    -a FILENUM        print unpairable lines coming from file FILENUM, where
                        FILENUM is 1 or 2, corresponding to FILE1 or FILE2
    -e EMPTY          replace missing input fields with EMPTY
    -i, --ignore-case ignore differences in case when comparing fields
    -j FIELD          equivalent to -1 FIELD -2 FIELD
    -o FORMAT         obey FORMAT while constructing output line
    -t CHAR           use CHAR as input and output field separator
    -v FILENUM        like -a FILENUM, but suppress joined output lines
    -1 FIELD          join on this FIELD of file 1
    -2 FIELD          join on this FIELD of file 2
        --help        display this help and exit
        --version     output version information and exit

  Unless -t CHAR is given, leading blanks separate fields and are ignored,
  else fields are separated by CHAR.  Any FIELD is a field number counted
  from 1.  FORMAT is one or more comma or blank separated specifications,
  each being FILENUM.FIELD or 0.  Default FORMAT outputs the join field,
  the remaining fields from FILE1, the remaining fields from FILE2, all
  separated by CHAR.

fscheme. Port of the tinyscheme (and minischeme) small Scheme interpreter to Fortran 95. Hopefully useful as an embedded interpreter (a stripped down version is present as a module in Sib-pair).

grapheps. Port of Aubrey Jaffer's grapheps Postscript data plotting package to a Fortran 95 module. As used in Sib-pair.

fortransockets. Minimal Fortran 95 sockets library for linux. Enough functionality for a simple server. Includes wrappers for socket(), setsockopt(), bind() and listen(); accept(); send(); recv(); close(); gethostbyname(). This code last updated 2007-12-19.

Interface for curses. Fortran 2003 module that interfaces to the PDCurses or ncurses library. With PDCurses, this runs nicely using gfortran or g95 on linux or Windows. This code last updated 2009-05-13.

Interface to zlib. After Janus Weils's example on comp.lang.fortran (May 2009) and fgzlib (plus templates in fgsl). As others have noted, it is much faster to use gzread() and a buffer, rather than gzgets().

Genetics Links


Statistical Genetics Links

Statistics and Statistical Software Links


Comments to DLD

To other home page (internal users)

Up to QIMR Home Page