Zmapqtl can perform permutation tests using interval mapping, but if you want to do a proper permutation test using composite interval mapping and reselecting your background markers during each permutation, you will need to do it in a batch file similar to the one for bootstrapping. Prune can create a single permuted dataset by using the -b option with a value of 2 or 6. If you use 2, then each trait is permuted against the genotypes. Alternatively, using a 6 means that the traits as a block are permuted against the genotypes to retain any correlation the traits may have.
Suppose qtlcart is the filename stem, and use as the integer code for the model, for the Zmapqtl output file column to test, and for the number of repetitions, then this snippet of psuedo-code will do a permutation test
Zmapqtl -A -V -X qtlcart -M
GetMaxLR.pl -i qtlcart.z qtlcart.z.ewt
CWTupdate.pl -C qtlcart.z qtlcart.z.cwt
move qtlcart.z qtlcart.z.save
Prune -A -V -i qtlcart.cro -b 2
Zmapqtl -A -V -M -i qtlcart.crb
GetMaxLR.pl -r -C qtlcart.z qtlcart.z.ewt
CWTupdate.pl -f qtlcart.z.cwt -C qtlcart.z qtlcart.z.new
move qtlcart.z.new qtlcart.z.cwt
move qtlcart.z.save qtlcart.z
The Perl scripts GetMaxLR.pl, EWThreshold.pl and CWTupdate.pl are in the doc/scripts subdirectory. A C shell example script, Permute, also resides there.
You could also have SRmapqtl redo the stepwise regression in the above script so that the background markers in composite interval mapping reflect the permuted data set rather than the original. There is a small quirk in this type of simulation if you are using SRmapqtl with stepwise forward-backward regression and Zmapqtl with model 6. Sometimes a permuted data set will result in no markers being sufficiently correlated with the trait of interest to be added in the forward phase of the stepwise regression. Thus, Zmapqtl will think there are no markers to be used as covariates, and default to interval mapping. Thus, you may not get the exact number of permutations specified to the above script.