Breaking PLINK.bim .bed .fam files into chromosomes
Hello,
I am trying to get haplotypes for one locus on chromosome19 and for that, I need phased data. However, prior to the phasing, I am supposed to split my PLINK files into separated files by chromosome. I found this script online but it doesn't work (see below). Can you please give me advice on how to do this? I am rather a newbie in the data processing so I am sorry if this is a too basic question.
Thank you!
#!/usr/bin/perl
# This script takes as input the base filename of binary pedfiles (*.bed,
# *.bim, *.fam) and a base output filename and splits up a dataset by
# chromosome. Useful for imputing to 1000 genomes.
chomp(my $pwd = `pwd`); my $help = "\nUsage: $0 <BEDfile base> <output base>\n\n"; die $help if @ARGV!=2;
$infile_base=$ARGV[0]; #base filename of inputs $outfile_base=$ARGV[1]; #base filename of outputs $plink_exec="plink
--nonfounders --allow-no-sex --noweb"; $chr=22; #last chromosome to write out
for (1..$chr) { print "Processing chromosome $_\n"; `$plink_exec
--bfile $infile_base --chr $_ --make-bed --out ${outfile_base}$_;` }
• 12,706 views
•
link
3 answers
No need for scripts, simple loop should work, something like:
for chr in {1..23}; do \
plink --bfile myPlink --chr $chr --make-bed --out myPlink_${chr}; \
done
• 0 views
•
link
I think the correct format is (in case some codes are commented out):
#!/usr/bin/perl
# This script takes as input the base filename of binary pedfiles (*.bed,
# *.bim, *.fam) and a base output filename and splits up a dataset by
# chromosome. Useful for imputing to 1000 genomes.
chomp( my $pwd = `pwd` );
my $help = "\nUsage: $0 <BEDfile base> <output base>\n\n";
die $help if @ARGV != 2;
$infile_base = $ARGV[0]; #base filename of inputs
$outfile_base = $ARGV[1]; #base filename of outputs
$plink_exec = "plink --nonfounders --allow-no-sex --noweb";
$chr = 22; #last chromosome to write out
for ( 1 .. $chr ) {
print "Processing chromosome $_\n";
`$plink_exec --bfile $infile_base --chr $_ --make-bed --out ${outfile_base}$_;`;
}
• 0 views
•
link
Nice solution, zx8754. However, a --make-bed or --recode flag is necessary, otherwise there won't be any output:
for chr in {1..23}; do \ plink --bfile myPlink --chr $chr --make-bed --out myPlink_${chr}; \ done
• 0 views
•
link
Log in to answer this question.