<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def createAlignment(self, resultFormat=dict):
 """ Run the alignment algorithm. @param resultFormat: Either C{dict} or C{str}, giving the desired result format. @return: If C{resultFormat} is C{dict}, a C{dict} containing information about the match (or C{None}) if there is no match. If C{resultFormat} is C{str}, a C{str} containing a readable version of the match info (see _alignmentToStr above for the exact format). """

        table = self._initialise()
        alignment = self._fillAndTraceback(table)
        output = alignment[0]
        if output[0] == '' or output[2] == '':
            result = None
        else:
            indexes = alignment[1]
            result = {
                'cigar': self._cigarString(output),
                'sequence1Start': indexes['min_col'],
                'sequence1End': indexes['max_col'],
                'sequence2Start': indexes['min_row'],
                'sequence2End': indexes['max_row'],
                'text': self._formatAlignment(output, indexes),
            }

        return self._alignmentToStr(result) if resultFormat is str else result