Skip to content

Instantly share code, notes, and snippets.

@mbk0asis
Created April 26, 2016 06:46
Show Gist options
  • Save mbk0asis/6592f91814f45824b39b830efa3f308a to your computer and use it in GitHub Desktop.
Save mbk0asis/6592f91814f45824b39b830efa3f308a to your computer and use it in GitHub Desktop.
mp_primer
#!/bin/bash
clear
printf "\n *** MULTIPLEX PCR PRIMER GENERATOR ***"
printf "\n\n !!! 'Primer3 & fastx-toolkit' must be installed on the system.\n\n !!! Both FASTA & .param files must be in this directory \n\n !!! Edit parameters (e.g. size, Tm, and etc) before start\n\n "
printf "\n\n Usage : \n ./mp_primer.sh FASTA PARAMETER \n\n\n Enter to continue... "
read
printf "\n\n\n ()()() Running... \n\n"
if [ $2 ]; then
mkdir tmp
cd tmp
cp ../$2 .
sed 's/ /_/g' ../$1 > $1 # replace spaces to "_" in fasta header
fasta_formatter -i $1 -o $1.tab -t # convert to tab
cut -f 1 $1.tab | while read line; do grep $line $1.tab > $line.split; done # split each seq into single files
####################################
# sequence file generator (Add titles to tab. "SEQUENCE_ID=", "SEQUENCE_TEMPLATE=")
for s in ./*.split
do
awk '{print "SEQUENCE_ID="$1,"\n","SEQUENCE_TEMPLATE="$2}' $s | sed 's/ //g' > $s.seq
done
####################################
# parameter file generator
for s in ./*.split # to generate a lis of target sequence (CpG) positions
do
cut -f 2 $s | grep -bo cg | sed 's/:/\t/g' | cut -f 1 | awk '{print $1+1",2"}' | tr '\n' ' ' | awk '{print "SEQUENCE_TARGET="$0}' | cat - $2 > $s.param
done
####################################
# combine sequence & parameter files
grep ">" $1 | sed 's/>//g'| while read line; do cat $line.split.seq $line.split.param > $line.p3in;done
####################################
# PRIMER3
for i in ./*.p3in # run PRIMER3
do
primer3_core $i > $i.p3out
done
####################################
# PRIMER3 result file
for r in ./*.p3out
do
grep 'ID\|0_SEQUENCE=\|0=\|0_TM=' $r | sed 's/=/\t/g' | cut -f 2 | tr '\n' '\t' | sed 's/,/\t/g' | awk 'BEGIN{FS=OFS="\t"}{print $1,$2,$3,$6-$4+1,$4,$6,$5,$7,$8,$9}'
done > $1.p3outs
echo 'ID Forward Reverse Product_Size Product_Start Product_End Len_forward Len_reverse Tm_forward Tm_reverse' | \
cat - $1.p3outs > ../$1.p3results.tsv
cd ..
rm -r tmp/
clear
printf "\n\n\n\n >>> '$INPUT.p3results.tsv' has been generated!\n\n\n\n"
else
clear
printf "\n\n !!! ERROR:: FASTA or parameter file is missing!\n\n"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment