Exemple #1
0
class ProjectSource(DataSourceMixin):
    """An Intake data source for reading `rubicon` projects.

    Parameters
    ----------
    urlpath : str
        The root directory the `rubicon` data is logged to.
    project_name : str
        The name of the `rubicon` project to load.
    """

    version = __version__

    container = "python"
    name = "rubicon_project"

    def _get_schema(self):
        """Load the project named `self._project_name`."""
        self._rubicon = Rubicon(persistence="filesystem",
                                root_dir=self._urlpath)
        self._rubicon_object = self._rubicon.get_project(self._project_name)

        self._metadata.update({
            "project": {
                "name": self._rubicon_object.name,
                "id": self._rubicon_object.id,
                "description": self._rubicon_object.description,
                "created_id": self._rubicon_object.created_at,
            }
        })

        return super()._get_schema()
Exemple #2
0
class ExperimentSource(DataSourceMixin):
    """An Intake data source for reading `rubicon` experiments.

    Parameters
    ----------
    urlpath : str
        The root directory the `rubicon` data is logged to.
    project_name : str
        The name of the `rubicon` project to load.
    experiment_id : str
        The ID of the `rubicon` experiment to load.
    """

    version = __version__

    container = "python"
    name = "rubicon_experiment"

    def __init__(self,
                 urlpath,
                 project_name,
                 experiment_id,
                 metadata=None,
                 storage_options=None,
                 **kwargs):
        self._experiment_id = experiment_id

        super().__init__(urlpath,
                         project_name,
                         metadata=metadata,
                         storage_options=storage_options,
                         **kwargs)

    def _get_schema(self):
        """Load the experiment with ID `self._experiment_id`
        from the project named `self._project_name`.
        """
        self._rubicon = Rubicon(persistence="filesystem",
                                root_dir=self._urlpath)
        self._rubicon_object = self._rubicon.get_project(
            self._project_name).experiment(self._experiment_id)

        self._metadata.update({
            "experiment": {
                "name": self._rubicon_object.name,
                "id": self._rubicon_object.id,
                "created_id": self._rubicon_object.created_at,
                "commit_hash": self._rubicon_object.commit_hash,
                "tags": self._rubicon_object.tags,
                "project": self._rubicon_object.project,
            }
        })

        return super()._get_schema()