eigensoft 7.2.1

## shrinkmode added. 3/15

EIGENSOFT ver­sion 7.2.1, 06/30/17 (for Lin­ux only)


The EIGENSOFT pack­age imple­ments meth­ods from the fol­low­ing 2 papers:

Pat­ter­son et al. 2006 PLoS Genet 2:e190 (pop­u­la­tion struc­ture)

Price et al. 2006 Nat Genet 38:904–9 (EIGENSTRAT strat­i­fi­ca­tion cor­rec­tion)


1. 升级日志

NEW fea­tures of EIGENSOFT ver­sion 7.2.0

– shrinkmode


NEW fea­tures of EIGENSOFT ver­sion 6.1.4 include:

– pcas­e­lec­tion was omit­ted from 6.1.3 by acci­dent

– Sta­t­i­cal­ly linked GSL/openblas

– Fixed mem­o­ry allo­ca­tion bug in pcas­e­lec­tion

– Some rou­ti­nes moved into nick­lib

– Error mes­sage on allo­cate fail­ure now prints length as “%ld”

sup­port­ing long val­ues.


NEW fea­tures of EIGENSOFT ver­sion 6.1.3 include:

– Restored script file exten­sions to .perl instead of .pl

– Added updat­ed ploteig script that dis­ap­peared from the repos­i­to­ry


NEW fea­tures of EIGENSOFT ver­sion 6.1.2 include:

– Updat­ed license info to be GPL com­pli­ant required by link­ing the GSL


NEW fea­tures of EIGENSOFT ver­sion 6.1.1 include:

– Minor bug fix to cor­rect­ly merge ver­sion 6.0.2 and ver­sion 6.1 changes.

– pcas­e­lec­tion oper­ates on evec files. Added exam­ples.

– Back­port­ed twtable.c/h from EIGENSOFT 7al­pha


NEW fea­tures of EIGENSOFT ver­sion 6.1 include:

– The range find­ing step of PCA fast­mode only scales the mul­ti­plied matrix,

as orthog­o­nal­iza­tion is unnec­es­sary. This appears to improve accu­ra­cy.


NEW fea­tures of EIGENSOFT ver­sion 6.0.2 include:

– Fixed Make­file and doc­u­men­ta­tion to build eigen­strat prop­er­ly

– Moved Tra­cy-Widom table into a head­er file for eas­ier build­ing


NEW fea­tures of EIGENSOFT ver­sion 6.0.1 include:

– Minor bug fix which pre­vents smart­p­ca from try­ing to print out eigen­val­ues

if fast­mode is set.


NEW fea­tures of EIGENSOFT ver­sion 6.0.0beta includ­ed:

– New option fast­mode which imple­ments a very fast pca approx­i­ma­tion.

See POPGEN/README and Galin­sky 2014 ASHG talk.

– Changes to exter­nal pack­ages required.  EIGENSOFT ver­sion 5.0.2 required

lapack + blas.  On the oth­er hand, EIGENSOFT ver­sion 6.0beta requires

GSL + lapack + Open­BLAS (but does not require the native ver­sion of blas).

The Make­file has been changed accord­ing­ly.

EIGENSOFT ver­sion 6.0beta sup­ports mul­ti-thread­ing.  See POPGEN/README.

– Bug fix for ldregress option.


2. 手册位置

See CONVERTF/README for doc­u­men­ta­tion of pro­grams for con­vert­ing file for­mats.

See POPGEN/README for doc­u­men­ta­tion of pop­u­la­tion struc­ture pro­grams.

See EIGENSTRAT/README for doc­u­men­ta­tion of EIGENSTRAT pro­grams.



See https://www.hsph.harvard.edu/alkes-price/eigensoft-frequently-asked-questions/



For ques­tions about build­ing this soft­ware:

Matthew Mah <matthew_mah@hms.harvard.edu>


For ques­tions about smart­p­ca:

Nick Pat­ter­son <nickp@broadinstitute.org>


For ques­tions about eigen­strat:

Alkes Price <aprice@hsph.harvard.edu>


3. 可执行程序以及源代码


All C exe­cuta­bles are in the bin/ direc­to­ry.


We have placed source code for all C exe­cuta­bles in the src/ direc­to­ry,

for users who wish to mod­i­fy and recom­pile our pro­grams.  For exam­ple, to

recom­pile the eigen­strat pro­gram, type

cd src”

make eigen­strat”

mv eigen­strat ../bin”


Note that some of our soft­ware will only com­pile if your sys­tem has the

GSL + lapack + Open­BLAS pack­ages installed.


On Mac OSX, you can install gsl and Open­BLAS with lapack using home­brew:

brew install gsl”

brew install homebrew/science/openblas”


If the­se pack­ages are not in stan­dard direc­to­ries, you can spec­i­fy the

appro­pri­ate include and library direc­to­ries with the CFLAGS and LDFLAGS

make vari­ables.

For exam­ple, on the Har­vard Med­ical School O2 clus­ter, the com­mand is:

make CFLAGS=”-I/n/app/openblas/0.2.19/include –I/n/app/gsl/2.3/include” LDFLAGS=”-L/n/app/openblas/0.2.19/lib –L/n/app/gsl/2.3/lib/“‘

On Mac OSX:

make CFLAGS=”-I/usr/local/opt/openblas/include –I/usr/local/opt/gsl/include” LDFLAGS=”-L/usr/local/opt/openblas/lib –L/usr/local/opt/gsl/lib“‘


If you have issues with miss­ing lapacke sym­bols, for exam­ple “unde­fined ref­er­ence to ‘LAPACK­E_d­lange’”, run make with the cor­re­spond­ing addi­tion­al libraries linked:

make LDLIBS=”-llapacke“‘

This has been encoun­tered on Lin­ux Mint 18.


If you have trou­ble com­pil­ing and run­ning our code, try com­pil­ing and

run­ning the pca­toy pro­gram in the src direc­to­ry:

cd src”

make pca­toy”


If you are unable to run the pca­toy pro­gram suc­cess­ful­ly, please con­tact

your sys­tem admin­is­tra­tor for help, as this is a sys­tems issue which is

beyond our scope. Your sys­tem admin­is­tra­tor will be able to trou­bleshoot

your sys­tems issue using this triv­ial pro­gram.  [You can also try run­ning

the pca­toy pro­gram in the bin direc­to­ry, which we have already com­piled.]


To remake the entire pack­age:

cd src”

make clob­ber”

make install”


To remake EIG7.2 it is nec­es­sary to link to the Open­BLAS library. On orches­tra,

the path is /opt/openblas and should work auto­mat­i­cal­ly. On Broad insti­tute machi­nes,

the user should exe­cute “use .openblas-0.2.8” and “use GCC-4.9” at the com­mand

prompt before attempt­ing to remake. All oth­er users should install Open­BLAS and

set the vari­able OPENBLAS to the path at the make com­mand line,

e.g. “make install OPENBLAS=/usr/local/openblas”



4. 致谢

EIGENSOFT was writ­ten by Nick Pat­ter­son, Alkes Price, Samue­la Pol­lack,

Kev­in Galin­sky, Chris Chang, and Sasha Gusev.


We thank John Novem­bre and Mike Boursnell for code improve­ments, Matt Han­na

for the first imple­men­ta­tion of mul­ti-thread­ing, and Ange­la Yu for a bug­fix.




This soft­ware and its doc­u­men­ta­tion are copy­right (2010) by Har­vard Uni­ver­si­ty

and The Broad Insti­tute. All rights are reserved. This soft­ware is sup­plied

with­out any war­ran­ty or guar­an­teed sup­port what­so­ev­er. Nei­ther Har­vard

Uni­ver­si­ty nor The Broad Insti­tute can be respon­si­ble for its use, mis­use, or

func­tion­al­i­ty. The soft­ware may be freely copied for non-com­mer­cial pur­pos­es,

pro­vid­ed this copy­right notice is retained.


Leave a Reply

Your email address will not be published. Required fields are marked *