SOLAR-Eclipse Genetics

Recent Releases

Linux Solar Eclipse General version 8.5.1 and Source Code for Solar is now available and allows CPU/GPU computing for accelerated FPHI, GWAS and similar fast matrix tests!


SOLAR-Eclipse is an extensive, flexible software package for genetic variance components analysis, including linkage analysis, quantitative genetic analysis, SNP association analysis (QTN and QTLD), and covariate screening. Operations are included for calculation of marker-specific or multipoint identity-by-descent (IBD) matrices in pedigrees of arbitrary size and complexity, and for linkage analysis of multiple quantitative traits and/or discrete traits which may involve multiple loci (oligogenic analysis), dominance effects, household effects, and interactions. Additional features include functionality for mega and meta-genetic analyses where data from diverse cohorts can be pooled to improve statistical significance.

What's New

SOLAR-Eclipse now offers tutorials on single trait and pedigree as well as voxel-wise heritability analyses on UK BioBank imaging and genetics data. Corresponding video tutorials are available on our Education page.


**** New in version 8.5.1 **** 2021-06-20

This version has been vetted with univariate genetic analyses in UKBB.
The heritability values can now be derived using the pedigree composed
of the UKBB empirical kinship coefficient. The video tutorial on how to
set up empirical heritability analyses in UKBB and HCP is forthcoming
shortly. The GPU version of FPHI can do voxelwise heritability analyses
in UKBB imaging data in under 6 hours on a Tesla P100 accelerator card
on our server.The polygenetic analyses such as genetic correlation
still crush in the UKBB sized dataset. We are debugging the issue but
this may take some time as the old fortran optimization code will need
to be rewritten in Intell math libraries. Mac version supports Intel
machines only for now. Some of the functionality may not work on
individual macs. We recommend downloading the source code from github
and compiling it on site.

****   New in version 8.1.1   **** 2015-11-20

1. Speed improvements in all SOLAR operations thanks to improved
   compiler optimization.  Polygenic runs 1.73 times faster compared
   with previous official version 7.6.4.  The biggest improvement is
   in C++ intensive mathmatrix operations based on Eigen; as a
   result of this and other changes "fphi -p" is now 25 times faster
   than in version 8.0.6.

2. The implentation of fphi p value estimation, working since 8.0.6,
   is made cleaner and slightly faster.  The use of a new mathmatrix
   operation PermuteY which eliminates the need to create an
   intermediate shuffled vector for each column of the permuted
   matrix (as had been done in 8.0.6).  Far fewer temporary matrices
   are created.  These changes had only a small effect on speed
   compared with the improved compiler optimizations.

3. fphi p value estimation now uses better random numbers to shuffle the
   Y matrix: Mersenne Twister mt19937 which has a period of 2^19937.
   AFAIK this is the best quality fast random generator available, and
   it is included in the recent C++11 standard so is widely available.

4. fphi p value calculation numerator was off by one.  Now p values
   from "fphi -p" are slightly smaller (better).

5. Other changes to fphi: Tcl code is cleaned up with much junk removed,
   variables given meaningful names, obsolete -method argument
   removed, -testonly is now called -indicator.

6. option ShuffleReseeding controls how the mt19937 random number
   generator used for matrix shuffling is seeded.  The default value
   is 1 which means the generator is reseeded to the default value
   5489u at the beginning of each matrix shuffle operation.  This
   gives consistent p value results every time, and the most
   comparable results when the same sample is used across a range of
   models.  The options are:

        1...seeded on every shuffle to 5489u for consistent results (DEFAULT)
        0...seeded first shuffle to 5489u, then free running
       -1...seeded every shuffle to time() for purely stochastic results
       -2...seeded first shuffle to time(), then free running
        Other values: seed to this value at beginning of each shuffle

7. Errors in test models in mga (either the regular test model or the
   interaction test model) would cause mga to exit.  Now such errors are
   reported to the screen and a line with SNP name but blank results is
   written to the output file.

8. option MatrixNumberFormat controls the formatting precision of numbers
   output by matrix operations such as "show".  The default of 15 eliminates
   long unrounded numbers such as 0.4999999999999999.

9. This version is the first ever to have a public source code
   release, along with the usual binary releases for Linux, Mac, and
   Microsoft Windows.  The binary releases are fully tested and
   replace Official Version 7.6.4 on the general download links at  Due to the now distributed
   nature of SOLAR Eclipse development, this release is not called
   Official but instead General as in intended-for-general-use.  An
   Official version with coordinated updates from all developers may
   be available soon.

**** New in version 8.0.4 **** 2015-05-26

1. fphi is now producing reasonable approximations of heritability.
   Several implementation errors from 8.0.3 had to be corrected to make
   this possible, and the procedure now uses "Method 1" consistently.
   See "help fphi" for more information on FPHI methods 1 and 2.

2. "option ResetRandom 1" will reset the random number sequence used during
   maximization to its initial starting value at the beginning of
   maximization for the current model. This is for experimental use in
   solving convergence inconsistencies.

3. fphi has a -method2 option which attempts to use "Method 2". This
  does not appear to be working yet.

4. The first value returned by fphi is now correctly labeled an
   "indicator variable." The actual test-statistic is still being
   implemented. The primary significance of the indicator variable is
   that heritability estimation is impossible if it is non-positive.

5. evdinx now loads the X matrix without a leading column of 1's as
   as required for Method 1. To get the column of 1's as required for
   Method 2, give the command "evdinx -method2", or simply use the
   command "fphi -method2" which takes care of this.

6. fphi now allows the direct specification of X, Y, and Z matrices.
   If all three are specified, it is not necessary to specify trait and
   covariates, and "evdout" is not invoked.

****   New in version 8.0.3 **** 2015-04-24

1.  New procedure fphi calculates a test statistic and fast estimated h2r.
   The model trait and covariates must have already been chosen.  If the
   -testonly option is specified, only the test-statistic is returned and
   h2r is not estimated.

2.  Matrix operations "ols" and "solve" now have X and Y arguments reversed
   as is common practice (octave, matlab, R). So now the commands are
   "ols y x" and "solve y x" corresponding to the standard description
   "regress y on x" where Y is the dependent variable and X is the design

3.  The diagonal command now does one of two things: it returns a vector
   when given a rectangular matrix, or (new) it returns a "diagonal
   matrix" when given a vector.  A "diagonal matrix" is a square matrix
   with non-zero values only on the diagonal.  A "rectangular matrix" has
   more than 1 rows and more than 1 columns.  A vector has either 1 row or
   1 column.  SOLAR does not keep track of which matrices are diagonal.

4.  New dinverse command does a fast matrix inversion on a diagonal matrix.
   The matrix must be a diagonal matrix and dinverse does not check this.

5.  The plus and minus commands now permit one or two scalar arguments
   so you can add or subtract: 1) matrix and matrix, 2) scalar and matrix,
   and 3) scalar and scalar.  The times command already allowed scalars like

****   New in version 8.0.2 **** 2015-03-20

1.  evdout is entirely redesigned to output the just the EVD transformed
    variables, unless the -evectors option is used.  The transformed
    variables are writted to evddata.out.

2.  New procedures evdinx (reads in X matrix), evdiny (reads in Y matrix),
    and evdinev (reads in eigenvectors matrix) added to read EVD data written
    by evdout into matrixes.

3.  evdmat is obsoleted.  Use evdout then evdinx, evdiny, and/or evdinev.
    Memory-to-matrix commands evdmatx, evdmaty, and evdmatev were designed
    but not finished in time for version 8.0.2.

****   New in version 8.0.1 **** 2015-03-03

1.  Interactive and scriptable matrix algebra is now supported.  Commands
    include new, load, show, row, col, diagonal, rows, cols, times, plus
    minus, transpose, inverse, ols, solve, evalues, evectors, mean, min
    and max.  See "help mathmatrix" for details.  MathMatrix objects are
    different from the sample relationship matrixes used during maximization.
    They are implemented in C++ using Eigen.

2.  evdout will output phi2 eigenvectors and eigenvalues as
    used by SOLAR for EVD2 maximization.  See 'help evdout' for details
    on evdout, evdin, and evdmat.

3.  evdin will read in the matrix file(s) created by evdout and
    create MathMatrix object(s) representing them.

4.  evdmat creates MathMatrix object(s) directly from the
    current phi2 eigenvectors without writing or reading a file.
    See  'help evdmat' for details.

5.  zscoring using a command like "define zt = zscore_trait" generated
    spurious messages about zscores being deleted.  These messages had no
    useful meaning and have been removed.  The zscoring feature works fine.

****   New in version 8.0.0 **** 2014-12-31

1.  Version 8.0.0 is compiled with 64 bit memory model (linux releases
    only) to enable handling larger numbers of traits, parameters, and/or
    individuals per pedigree.  However, memory beyond 2 Gb can not usually
    be allocated because contiguous memory is currently required.  That may
    be addressed in future updates.  However 64 bit compilation is a
    necessary first step, it sometimes helps, and also failed memory
    allocation is now usually reported with an error message rather than
    causing an unexplained crash as usually happened before.
    Maximization is about 2% faster for all model types.

****   New in version 7.6.6 **** 2014-12-29

1.  polygenic -residinor fixed, was mistakenly using previous null output.

****   New in version 7.6.5 **** 2014-12-9

1.  polygenic -residinor computes a residual trait from the final
   sporadic model and inormalizes it as the final trait to determine

2.  restore_phen restores the original phenotypes file after running
   polygenic -residinor

****   New in version 7.5.9 **** 2014-07-01

1.   Up to 20000 mztwins are now supported.

2.   "load pedigree" will use 5 columns for the mztwin id in the pedindex
     if more than 999 mztwin groups are found in the pedigree.
     Otherwise, it will use only 3 columns, to ensure compatibility with
     previous checksums stored in matrixes.

****   New in version 7.5.8 **** 2014-07-01

1.   Up to 15000 mztwins are now supported (7500 pairs of twins).

2.   CSV matrixes can now be loaded even if they have ID's not in the
     current pedigree.  Warnings are displayed and written to a file
     named matrix.load.err, but in the end the matrix is loaded and
     may be useable.

****   New in version 7.4.4 **** 2014-04-11

1.   polygenic now has option -testcovar, to test a single covariate.
     All other covariates are fixed and untested.  The tested covariate
     is not removed from the final model in any case.  The default
     probability level for declared significance is changed to 0.05.
     The proportion of variance is reported only for the tested covariate.

****   New in version 7.4.1 **** 2014-03-12

1.  A new session option ExpNotation has been added, to force output in
    exponential notation (such as -1.004e-4) in specific cases where needed.
    Normally, many commands such as mga output in fixed point notation as
    long as there are a few digits shown, and then they switch to exponential
    for tiny values which would otherwise be reported as zero.  So if a value
    is shown as 0.00000 by mga it must actually be zero.  But sometimes
    people wonder if that is actually correct.  So the ExpNotation
    option has been added to force output of all numbers in exponential
    notation, so there can be no doubt.  Currently this option only affects
    the output of mga, but it may be applied to other commands in the future.
    It defaults to 0 (zero) meaning to use the default auto mode, and is set
    to 1 to force exponential:

        option ExpNotation 1

    This option remains in effect during a single session of SOLAR.  It is
    not saved to models, and will return to default for subsequent or
    concurrent sessions of SOLAR.

****    New in version 7.3.5 **** 2014-01-17

1.  polyclass function -maxsnp option was added to perform multi-pedigree
    association analysis. The -intrait functionality is used for data