# MultiAssayExperiment Cheatsheet

# Summary of the MultiAssayExperiment API

Updated from Ramos et al., Cancer Research 2017; DOI: 10.1158/0008-5472.CAN-17-0344

## API Overview

### Constructors

Function | Description | Returned Class
--- | --- | ---
`MultiAssayExperiment` | Create a MultiAssayExperiment object | MultiAssayExperiment
`ExperimentList` | Create an ExperimentList from a List or list | ExperimentList

### Accessors

Function | Description | Returned Class
--- | --- | ---
`colData` | Get or set data that describe patients / biological units | DataFrame
`experiments` | Get or set the list of experimental data objects | ExperimentList
`assays` | Get the list of experimental numeric matrices | SimpleList
`assay` | Get the first experimental numeric matrix | matrix, matrix-like
`sampleMap` | Get or set the map relating observations to subjects | DataFrame
`metadata` | Get or set additional data descriptions | list
`rownames` | Get row names for all experiments | CharacterList
`colnames` | Get column names for all experiments | CharacterList
`getWithColData` | Extract a single assay with whole or assay colData | (varies)

### Subsetting

Syntax | Description | Returned Class
--- | --- | ---
`mae[i, j, k]` | Get rows, columns, and/or experiments | MultiAssayExperiment
`mae[i,,]` | – `i:` GRanges, character, integer, etc. | MultiAssayExperiment
`mae[,j,]` | – `j:` character, integer, logical, etc. | MultiAssayExperiment
`mae[,,k]` | – `k:` character, integer, logical | MultiAssayExperiment
`mae[[n]]` | Get/set object from experiments | (varies)
`mae$column` | Get/set `colData` column vector | (varies)
`getWithColData(mae, k)` | Extract a single assay with colData; k: char, int | (varies)
`subsetByColData(mae, ..)` | Select rows from colData and re-harmonize data | MultiAssayExperiment

### Management

Function | Description | Returned Class
--- | --- | ---
`prepMultiAssay` | Troubleshoot constructor problems constructing class | list
`complete.cases` | Identify subjects with complete data | logical vector
`replicated` | Identify replicate observations per experiment | list of LogicalLists
`anyReplicated` | Whether any replicate observations exist | logical vector
`showReplicated` | Show actual technical replicate obs. in assay | list of CharacterLists
`mergeReplicates` | Merge replicate observations within each experiment | MultiAssayExperiment
`intersectRows` | Features present in all experiments | MultiAssayExperiment
`intersectColumns` | Subjects with data in all experiments | MultiAssayExperiment
`renameColname` | Rename the assay column names for a single assay | MultiAssayExperiment
`renamePrimary` | Rename the colData rownames | MultiAssayExperiment
`splitAssay` | Separate columns from assays using a ‘hitList’ of logical vectors | MultiAssayExperiment
`makeHitList` | Create a ‘hitList’ list based on patterns for matching assay colnames | list

### Reshaping

Function | Description | Returned Class
--- | --- | ---
`longForm` | Long tidy DataFrame with optional `colData` columns | DataFrame
`wideFormat` | Wide format, one row per subject | DataFrame

### Combining

Function | Description | Returned Class
--- | --- | ---
`c` | Concatenate experiment to MAE | MultiAssayExperiment

### Coercion

Function | Description | Returned Class
--- | --- | ---
`MultiAssayExperimentToMAF` | Convert MAE to `MAF` using ‘non_syn’ and ‘syn’ assays | maftools::MAF

### Export

Function | Description | Returned Class
--- | --- | ---
`exportClass` | Save all data from a MAE to a series of text files (‘.csv’) | (files)
`saveHDF5MultiAssayExperiment` | Save a MAE in ‘.h5’ and ‘.rds’ formats similar to `HDF5Array::saveHDF5SummarizedExperiment` | (files)

## Notes

- assay: Procedure for measuring biological activity (e.g., RNA-seq).
- experiment: Application of an assay to a sample set.
- mae: A `MultiAssayExperiment` object.
- subject: Patient, cell line, or other biological unit.
- observation: Results of an assay (e.g., gene expression).
- features: Measurement units labeled by row names or genomic ranges.
- `duplicated()` was deprecated in Bioconductor 3.7 and replaced by `replicated()`.