Add reduce_kwargs to Study and BaseData.plot_dimensionality_reduction to allow for passing arguments without breaking functionality
Move bins option of reduce to BaseData
Add xticklabels to violin
Move `plot_pooled_dot` from visualize.splicing --> visualize.generic
threshhold Expresssion.data so there's NaNs for data lower than the threshold
Set `binify` to default to False for splicing reduction
add checks for whether all the groups are present in the data, and leave an empty spot if not
Move feature subset (variant, all_genes, etc) creations to a property of BaseData
rename plot_feature_violins --> plot_violins
Add xticks to violinplots
add renamed_to_feature_ids and maybe_get_renamed so you can specify a common gene name and get all the expression/splcing/editing features associated with it
move violinplot call to BaseData, so splicing has Splicing.plot_event as a specific implementation
Add outliers to violinplot
Add outliers to violinplots, abstract out actual violniplot making
Fix subset_pooled_and_single to handle sample_ids=None
Pass DataModel to reducer for access to _violinplot, change violinplot calls to use the DataModel's
Add code to save violins figure
Clean up reduce code now that we send over the DataModel too
Remove old reduce code, and save the reduced space and violins fig separately as part of DecompositionViz
Save the expression threshold