mappos=${1-50} awk -v pos=$mappos ' BEGIN { getline < "merlin.ibd" while(getline < "merlin.ibd") { if ($4==pos) ibd[$1,$2,$3]= 0.5*$6+$7 } maxibds=6 nc=5 header="famid id fa mo sex" npheno=0 while(getline < "merlin.dat") { if ($1=="M") { nc+=2 }else if ($1=="T" || $1=="C") { nc++ npheno++ pheno[npheno]=nc header=header " " $2 } } for(j=1;j<=maxibds;j++) { header=header " ibd" j } print header ped="" n=0 } $1!=ped { for(i=1;i<=n;i++) { onerow="" for(j=1;j<=n;j++) { if (ibd[ped,id[i],id[j]]!="") { onerow=sprintf("%s %8s",onerow,ibd[ped,id[i],id[j]]) }else{ onerow=sprintf("%s %8s",onerow,ibd[ped,id[j],id[i]]) } } for(j=(n+1);j<=maxibds;j++) { onerow=onerow " x" } print data[i] onerow } ped=$1 n=0 } $1==ped { n++ id[n]=$2 data[n]=$1 " " $2 " " $3 " " $4 " " tolower($5) i for(j=1;j<=npheno;j++) data[n]=data[n] " " $(pheno[j]) } END { for(i=1;i<=n;i++) { onerow="" for(j=1;j<=n;j++) { if (ibd[ped,id[i],id[j]]!="") { onerow=sprintf("%s %8s",onerow,ibd[ped,id[i],id[j]]) }else{ onerow=sprintf("%s %8s",onerow,ibd[ped,id[j],id[i]]) } } for(j=(n+1);j<=maxibds;j++) { onerow=onerow " x" } print data[i] onerow } }' merlin.ped | bester > merlin2R.rta