def _arrange_xfms(transforms, num_files, tmp_folder):
    """
    Convenience method to arrange the list of transforms that should be applied
    to each input file
    """
    base_xform = ['#Insight Transform File V1.0', '#Transform 0']
    # Initialize the transforms matrix
    xfms_T = []
    for i, tf_file in enumerate(transforms):
        # If it is a deformation field, copy to the tfs_matrix directly
        if guess_type(tf_file)[0] != 'text/plain':
            xfms_T.append([tf_file] * num_files)
            continue

        with open(tf_file) as tf_fh:
            tfdata = tf_fh.read().strip()

        # If it is not an ITK transform file, copy to the tfs_matrix directly
        if not tfdata.startswith('#Insight Transform File'):
            xfms_T.append([tf_file] * num_files)
            continue

        # Count number of transforms in ITK transform file
        nxforms = tfdata.count('#Transform')

        # Remove first line
        tfdata = tfdata.split('\n')[1:]

        # If it is a ITK transform file with only 1 xform, copy to the tfs_matrix directly
        if nxforms == 1:
            xfms_T.append([tf_file] * num_files)
            continue

        if nxforms != num_files:
            raise RuntimeError('Number of transforms (%d) found in the ITK file does not match'
                               ' the number of input image files (%d).' % (nxforms, num_files))

        # At this point splitting transforms will be necessary, generate a base name
        out_base = fname_presuffix(tf_file, suffix='_pos-%03d_xfm-{:05d}' % i,
                                   newpath=tmp_folder.name).format
        # Split combined ITK transforms file
        split_xfms = []
        for xform_i in range(nxforms):
            # Find start token to extract
            startidx = tfdata.index('#Transform %d' % xform_i)
            next_xform = base_xform + tfdata[startidx + 1:startidx + 4] + ['']
            xfm_file = out_base(xform_i)
            with open(xfm_file, 'w') as out_xfm:
                out_xfm.write('\n'.join(next_xform))
            split_xfms.append(xfm_file)
        xfms_T.append(split_xfms)

    # Transpose back (only Python 3)
    return list(map(list, zip(*xfms_T)))
def _arrange_xfms ( transforms , num_files , tmp_folder ) : base_xform = [ '#Insight Transform File V1.0' , '#Transform 0' ] xfms_T = [ ] for i , tf_file in enumerate ( transforms ) : if guess_type ( tf_file ) [ 0 ] != 'text/plain' : xfms_T . append ( [ tf_file ] * num_files ) continue with open ( tf_file ) as tf_fh : tfdata = tf_fh . read ( ) . strip ( ) if not tfdata . startswith ( '#Insight Transform File' ) : xfms_T . append ( [ tf_file ] * num_files ) continue nxforms = tfdata . count ( '#Transform' ) tfdata = tfdata . split ( '\n' ) [ 1 : ] if nxforms == 1 : xfms_T . append ( [ tf_file ] * num_files ) continue if nxforms != num_files : raise RuntimeError ( 'Number of transforms (%d) found in the ITK file does not match' ' the number of input image files (%d).' % ( nxforms , num_files ) ) out_base = fname_presuffix ( tf_file , suffix = '_pos-%03d_xfm-{:05d}' % i , newpath = tmp_folder . name ) . format split_xfms = [ ] for xform_i in range ( nxforms ) : startidx = tfdata . index ( '#Transform %d' % xform_i ) next_xform = base_xform + tfdata [ startidx + 1 : startidx + 4 ] + [ '' ] xfm_file = out_base ( xform_i ) with open ( xfm_file , 'w' ) as out_xfm : out_xfm . write ( '\n' . join ( next_xform ) ) split_xfms . append ( xfm_file ) xfms_T . append ( split_xfms ) return list ( map ( list , zip ( * xfms_T ) ) )
Convenience method to arrange the list of transforms that should be applied
    to each input file