Auto General Reg (Elastix) with python interface

**Hi, I want to register all my CTP images to MNI space using General Reg. (Elastix). But I have over thousands images and don’t want to do all the images manually. Can I write a python code to register all my images using a loop. **
Previously I did the same for skull stripping using the following code:

def skull_stripping():
import vtkITK
#masterVolumeNode = slicer.util.loadVolume(‘E:/asdgdrhss/8 CTA_1_0__H20f_5.nrrd’)
for _ in range (1200):
masterVolumeNode = slicer.mrmlScene.GetFirstNodeByClass(“vtkMRMLScalarVolumeNode”)
threshold = 500
split_cavities = 30

    thresholdCalculator = vtkITK.vtkITKImageThresholdCalculator()
    thresholdCalculator.SetInputData(masterVolumeNode.GetImageData())
    thresholdCalculator.SetMethodToOtsu()
    thresholdCalculator.Update()
    boneThresholdValue = thresholdCalculator.GetThreshold()
    volumeScalarRange = masterVolumeNode.GetImageData().GetScalarRange()
    logging.info("Volume minimum = {0}, maximum = {1}, bone threshold = {2}".format(volumeScalarRange[0], volumeScalarRange[1], boneThresholdValue))
    slicer.app.processEvents()

    # Create segmentation
    slicer.app.processEvents()
    segmentationNode = slicer.vtkMRMLSegmentationNode()
    slicer.mrmlScene.AddNode(segmentationNode)
    segmentationNode.CreateDefaultDisplayNodes() # only needed for display
    segmentationNode.SetReferenceImageGeometryParameterFromVolumeNode(masterVolumeNode)

    # Create segment editor to get access to effects
    slicer.app.processEvents()
    segmentEditorWidget = slicer.qMRMLSegmentEditorWidget()
    # To show segment editor widget (useful for debugging): segmentEditorWidget.show()
    segmentEditorWidget.setMRMLScene(slicer.mrmlScene)
    if not segmentEditorWidget.effectByName("Wrap Solidify"):
        slicer.util.errorDisplay("Please install 'SurfaceWrapSolidify' extension using Extension Manager.")

    segmentEditorNode = slicer.vtkMRMLSegmentEditorNode()
    slicer.mrmlScene.AddNode(segmentEditorNode)
    segmentEditorWidget.setMRMLSegmentEditorNode(segmentEditorNode)
    segmentEditorWidget.setSegmentationNode(segmentationNode)
    segmentEditorWidget.setMasterVolumeNode(masterVolumeNode)

    # Create bone segment by thresholding
    slicer.app.processEvents()
    boneSegmentID = segmentationNode.GetSegmentation().AddEmptySegment("bone")
    segmentEditorNode.SetSelectedSegmentID(boneSegmentID)
    segmentEditorWidget.setActiveEffectByName("Threshold")
    effect = segmentEditorWidget.activeEffect()
    effect.setParameter("MinimumThreshold",str(threshold))#change if needed
    effect.setParameter("MaximumThreshold",str(volumeScalarRange[1]))
    effect.self().onApply()

    # Find largest object, remove all other regions from the segment
    slicer.app.processEvents()
    segmentEditorWidget.setActiveEffectByName("Islands")
    effect = segmentEditorWidget.activeEffect()
    effect.setParameterDefault("Operation", "KEEP_LARGEST_ISLAND")
    effect.self().onApply()

    # Create Margin
#     slicer.app.processEvents()
#     segmentEditorWidget.setActiveEffectByName("Margin")
#     effect = segmentEditorWidget.activeEffect()
#     effect.setParameterDefault("Operation", "Grow")
#     effect.setParameter('Margin_Size', 1)
#     effect.self().onApply()



    # Fill holes in the segment to create a solid region of interest
    slicer.app.processEvents()
    segmentEditorWidget.setActiveEffectByName("Wrap Solidify")
    effect = segmentEditorWidget.activeEffect()
    effect.setParameter("region", "largestCavity")
    effect.setParameter("splitCavities", str(split_cavities))
    effect.setParameter("outputType", "segment")
    #effect.setParameter("smoothingFactor", 0.2)  # speed up solidification by lowering resolution
    #effect.setParameter("remeshOversampling", 1.5)  # speed up solidification by lowering resolution
    #effect.setParameter("numberOfIterations", 6)  # speed up solidification by lowering resolution
    effect.self().onApply()



    # Blank out the volume outside the object segment
    slicer.app.processEvents()
    segmentEditorWidget.setActiveEffectByName('Mask volume')
    effect = segmentEditorWidget.activeEffect()
    effect.setParameter('FillValue', -1000)
    effect.setParameter('Operation', 'FILL_OUTSIDE')
    effect.self().onApply()

    # Remove temporary nodes and widget
    segmentEditorWidget = None
    slicer.mrmlScene.RemoveNode(segmentEditorNode)
    slicer.mrmlScene.RemoveNode(segmentationNode)
    slicer.mrmlScene.RemoveNode(masterVolumeNode)

    # Show masked volume
    maskedVolume = slicer.mrmlScene.GetFirstNodeByName(masterVolumeNode.GetName()+" masked")
    slicer.util.setSliceViewerLayers(background=maskedVolume)

shortcuts = [(“s”, lambda: skull_stripping())]
for (shortcutKey, callback) in shortcuts:
shortcut = qt.QShortcut(slicer.util.mainWindow())
shortcut.setKey(qt.QKeySequence(shortcutKey))
shortcut.connect( “activated()”, callback)

I need some help with the code for doing the same thing for registration.