This is a test version of Biostars. For the public version, visit https://www.biostars.org.
ADMIXTURE Segmentatio fault

Hi everyone,

I was trying to run ADMIXTURE using a merged vcf file with 82 samples. I pruned the data using a set of plink command:

plink --vcf 82_samples.vcf.gz --make-bed --double-id

plink --bfile 82_samples --indep-pairwise 50 5 0.5 --out 82_samples_pruned
plink --bfile plink --extract 82_samples_pruned.prune.in --make-bed --out 82_samples_pruned

Then I edited the .bim file ADMIXTURE does not accept chromosome names that are not human chromosomes using an awk command:

awk '{$1=0;print $0}' 82_samples_pruned.bim > 82_samples_pruned.bim.tmp

After this, I ran ADMIXTURE using k=2,3,4,5 with a for loop:

for i in {2..5}; do  admixture --cv 82_samples_pruned.bed $i > log${i}.out; done

But I'm geting a Segmentation Fault error.

The log file for k=2 has the following information:

****                   ADMIXTURE Version 1.3.0                  ****
****                    Copyright 2008-2015                     ****
****           David Alexander, Suyash Shringarpure,            ****
****                John  Novembre, Ken Lange                   ****
****                                                            ****
****                 Please cite our paper!                     ****
****   Information at www.genetics.ucla.edu/software/admixture  ****

Cross-validation will be performed.  Folds=5.
Random seed: 43
Point estimation method: Block relaxation algorithm
Convergence acceleration algorithm: QuasiNewton, 3 secant conditions
Point estimation will terminate when objective function delta < 0.0001
Estimation of standard errors disabled; will compute point estimates only.
Size of G: 82x35511617

Can anyone help me?

Thanks in advance,
Pedro

admixture plink vcf

Could it be due to memory issues. Most of time segmentation fault are related to memory issues.

Hi.

I've tried running the time command but I can't seem to be able to. I'm getting the "command not found" error and I think it's because the executable either doesn't have this name or isn't there.

$ time -v echo hello
bash: -v: command not found

real    0m0.001s
user    0m0.000s
sys     0m0.001s

Check the mentioned post replies, please

Using the 32-bit version of the admixture worked for me in WSL.

How to change to 32 bit version? Thank you

Thanks. I had this same issue while running linux ubuntu in WSL. Segmentation fault with admixture while the run is successful with admixture32.

What can be done to WSL admixture to run? I saw a suggestion below about editing the grub file. Unfortunately, I donot have grub file in etc directory.

I have re-run the analysis in linux ubuntu in virtualbox, it runs perfectly - no segmentation fault.

3 answers

Hello! Maybe this little thing will be useful to someone. I also encountered a problem "Segmentation fault (core dumped)". Installing admixture32 helped me. But I didn’t immediately understand that to run version 32, the command should look like this

admixture32 hapmap3.bed 3

not

admixture hapmap3.bed 3

With best regards, Olesya

First check your syslog (might require sudo):

grep admixture /var/log/syslog

If you see something that looks like

admixture[26825] vsyscall attempted with vsyscall=none ...

Try this:

  1. Edit your /etc/default/grub file
  2. Add vsyscall=emulate to the line that starts with GRUB_CMDLINE_LINUX_DEFAULT (example: GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nomodeset vsyscall=emulate")
  3. Run update-grub
  4. Reboot and try admixture again. This fixed it for me. It's an option in the Linux kernel that is disabled by default on new distributions (happened to me following Debian update from 9 to 10).

Hello,

I encountered the same problem of getting segmentation faults only when trying to compute bootstraps with ADMIXTURE v1.30. I figured out the problem comes at least in part from chromosome names in the input files. For some reason, it seems ADMIXTURE expects chromosome names that correspond to the standard code for human karyotype. See plink doc for details.

Using admixture32 as suggested in this thread did not work for me.

I work with a fragmented assembly of >200 contigs, so I replaced my chromosome names by "fake" numbers expected for the human karyotype (1,2,3...23).

Of course this is not an ideal solution but it did the trick.

Etienne DVRK, but if you have >200 contigs how does numbers 1-23 help? What do you enter as the names for the other contigs?

Log in to answer this question.