I would probably try with align_epi_anat.py which calls 3dAllineate. Datasets are masked and weighted - depending on which is assigned to be the base dataset and which is the source input. You can also do this directly with 3dAllineate. The aea script can apply the affine transformations as "-child_dset1" or "-child_dset2". You can also choose a -rigid_body alignment if you think the shape doesn't change. Another way to apply the affine transformation is with "3dAllineate -1Dmatrix_apply". The affine alignment will be the harder part here. If you get that working, you can then do the nonlinear alignment with 3dQwarp and apply the combination with 3dNwarpApply.