def compute(self):
        """ compute() -> None
        Translate input ports into (row, column) location

        """
        loc = CellLocation.Location()

        def set_row_col(row, col):
            try:
                loc.col = ord(col) - ord('A')
                loc.row = int(row) - 1
            except (TypeError, __HOLE__):
                raise ModuleError(self, 'ColumnRowAddress format error')

        ref = self.force_get_input("SheetReference")
        if ref:
            loc.sheetReference = ref

        loc.rowSpan = self.force_get_input("RowSpan", -1)
        loc.colSpan = self.force_get_input("ColumnSpan", -1)
        if self.has_input("Row") and self.has_input("Column"):
            loc.row = self.get_input("Row")-1
            loc.col = self.get_input("Column")-1
        elif self.has_input("ColumnRowAddress"):
            address = self.get_input("ColumnRowAddress")
            address = address.replace(' ', '').upper()
            if len(address) > 1:
                if address[0] >= 'A' and address[0] <= 'Z':
                    set_row_col(address[1:], address[0])
                else:
                    set_row_col(address[:-1], address[-1])

        self.set_output('value', loc)
dataset/ETHPy150Open VisTrails/VisTrails/vistrails/packages/spreadsheet/basic_widgets.py/CellLocation.compute