def transfer_2Darray(self, rowstart, fieldstart, rowend, fieldend=None):
        """Grabs a 2D array of variables relative to the current anchor. Each
        line of data is placed in a separate row.

        rowstart: integer
            Row number to start, relative to the current anchor.

        fieldstart: integer
            Field number to start.

        rowend: integer
            Row number to end relative to current anchor.

        fieldend: integer (optional)
            Field number to end. If not specified, grabs all fields up to the
            end of the line.

        If the delimiter is set to 'columns', then the values contained in
        fieldstart and fieldend should be the column number instead of the
        field number.
        """

        if fieldend and (fieldstart > fieldend):
            msg = "fieldend must be greater than fieldstart"
            raise ValueError(msg)

        if rowstart > rowend:
            msg = "rowend must be greater than rowstart"
            raise ValueError(msg)

        j1 = self.current_row + rowstart
        j2 = self.current_row + rowend + 1
        lines = list(self.data[j1:j2])

        if self.delimiter == "columns":

            if fieldend:
                line = lines[0][(fieldstart-1):fieldend]
            else:
                line = lines[0][(1-fieldstart):]

            parsed = self._parse_line().parseString(line)
            row = array(parsed[:])
            data = zeros(shape=(abs(j2-j1), len(row)))
            data[0, :] = row

            for i, line in enumerate(list(lines[1:])):
                if fieldend:
                    line = line[(fieldstart-1):fieldend]
                else:
                    line = line[(fieldstart-1):]

                parsed = self._parse_line().parseString(line)
                data[i+1, :] = array(parsed[:])

        else:
            parsed = self._parse_line().parseString(lines[0])
            if fieldend:
                row = array(parsed[(fieldstart-1):fieldend])
            else:
                row = array(parsed[(fieldstart-1):])

            data = zeros(shape=(abs(j2-j1), len(row)))
            data[0, :] = row

            for i, line in enumerate(list(lines[1:])):
                parsed = self._parse_line().parseString(line)

                if fieldend:
                    try:
                        data[i+1, :] = array(parsed[(fieldstart-1):fieldend])
                    except:
                        print data
                else:
                    data[i+1, :] = array(parsed[(fieldstart-1):])

        return data
dataset/ETHPy150Open OpenMDAO/OpenMDAO-Framework/openmdao.util/src/openmdao/util/filewrap.py/FileParser.transfer_2Darray/swapped operands of `-`