@classmethod
def from_dataframes(cls, data_df, sample_meta_df, gene_meta_df):
    """Dataset constructor method from multiple dataframes

        Parameters
        ----------
        data_df : dataframe, shape (n_samples, n_genes)
                Contains the expression data from experiment. Must have 
                shared row index with ``sample_meta_df``.

        sample_meta_df : ``dataframe``, shape (n_samples, n_meta_features)
                Contains the metadata for each of the samples in experiment.

        gene_meta_df : dataframe, shape (n_genes, n_gene_features)
                Contains the metadata for each of the genes in experiment.
        """
    data = data_df.join(sample_meta_df)
    return cls(data, gene_meta_df, len(gene_meta_df))
