<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def select(self, **kwargs):
 #select='*', where=None, inner_joins=None, left_joins=None, #group=None, order=None, limit=None, db=None, role='replica'):
 """ Perform a SELECT statement on the model's table in the replica database. :param select: Columns to return in the SELECT statement. :type select: string, array, dict :param where: WHERE clause of the SELECT statement. This can be a plain string, a dict or an array. :type where: string, dict, array :param inner_joins: Specifies an INNER JOIN clause. Can be a plain string (without the INNER JOIN part), an array of strings or an array of classes if the relationship was defined in the model. :type inner_joins: string, array :param left_joins: Specifies an LEFT JOIN clause. Can be a plain string (without the LEFT JOIN part), an array of strings or an array of classes if the relationship was defined in the model. :type left_joins: string, array :param group: Specifies a GROUP BY clause. :type group: string :param having: Specifies a HAVING clause. :type having: string :param order: ORDER BY clause. :type order: string :param limit: LIMIT clause. :type limit: integer :param db: Database name from your ``jardin_conf.py``, overrides the default database set in the model declaration. :type db: string :param role: One of ``('master', 'replica')`` to override the default. :type role: string :returns: ``jardin.Collection`` instance, which is a ``pandas.DataFrame``. """

        db_adapter = self.db_adapter(
            db_name=kwargs.get('db'),
            role=kwargs.get('role', 'replica')
            )

        kwargs['stack'] = self.stack_mark(
            inspect.stack(),
            db_conn=db_adapter.db
            )

        return self.collection_instance(db_adapter.select(**kwargs))