<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read(self, table_name, limit=None, decode_geom=False, shared_user=None, retry_times=3):
 """Read a table from CARTO into a pandas DataFrames. Args: table_name (str):
 Name of table in user's CARTO account. limit (int, optional):
 Read only `limit` lines from `table_name`. Defaults to ``None``, which reads the full table. decode_geom (bool, optional):
 Decodes CARTO's geometries into a `Shapely <https://github.com/Toblerity/Shapely>`__ object that can be used, for example, in `GeoPandas <http://geopandas.org/>`__. shared_user (str, optional):
 If a table has been shared with you, specify the user name (schema) who shared it. retry_times (int, optional):
 If the read call is rate limited, number of retries to be made Returns: pandas.DataFrame: DataFrame representation of `table_name` from CARTO. Example: .. code:: python import cartoframes cc = cartoframes.CartoContext(BASEURL, APIKEY) df = cc.read('acadia_biodiversity') """

        # choose schema (default user - org or standalone - or shared)
        schema = 'public' if not self.is_org else (
            shared_user or self.creds.username())

        dataset = Dataset(self, table_name, schema)
        return dataset.download(limit, decode_geom, retry_times)