Major Updates to Functionality with rliger
Package:
Added new utility functions to interact with liger v2.0.0+ object
format change:
- Subset_LIGER
to quickly subset by cluster or other meta
data variable.
- Cells_by_Identities_LIGER
to extract list of barcodes
sorted by values within given meta data column.
Extended the following Seurat/SeuratObject generic functions to
work seamlessly with liger objects:
- Cells
to extract vector of all cells or list vectors of
cells by dataset.
- Features
to extract vector of all features or list
vectors of features by dataset.
- WhichCells
to extract vector or list of cells matching
identity criteria.
- Embeddings
to extract matrix containing dimensionality
reduction embeddings or iNMF h.norm matrix.
- Idents
and Idents<-
to extract and set
default identities/clusters.
Updated functions to interact with both old and new style liger
objects:
- plotFactors_scCustom()
- Fetch_Meta
- Top_Genes_Factor
- Add_Mito_Ribo
- Add_Cell_Complexity
- DimPlot_LIGER
- Variable_Features_ALL_LIGER
- Feature_Present
New functions compatible with old and new style liger
objects:
- Added new function Add_Hemo
to add hemoglobin gene
percentage for QC. Also added as parameter to
Add_Cell_QC_Metrics
. Add_Hemo
supports all
default species: (human, mouse, marmoset, zebrafish, rat, drosophila,
rhesus macaque, and chicken) and works with both Seurat and liger
objects.
New scCustomize generics to function across both Seurat and Liger
objects:
- Add_Hemo
(see above).
- Rename_Clusters
now S3 generic for setting new
active.ident (Seurat) or defaultCluster (Liger).
New functions for Seurat and rliger v2.0.0+ only: - Added
new function Find_Factor_Cor
to return correlation matrix
between factor gene loadings from liger or Seurat object.
- Added new function Factor_Cor_Plot
to plot positive
correlations from liger or Seurat object.
Updated functions to recommend new rliger equivalents for users
with rliger v2.0.0+:
- as.LIGER
- as.Seurat
General scCustomize Updates:
New functions:
- Added new function Add_Hemo
to add hemoglobin gene
percentage for QC. Also added as parameter to
Add_Cell_QC_Metrics
. Add_Hemo
supports all
default species: (human, mouse, marmoset, zebrafish, rat, drosophila,
and rhesus macaque) and works with both Seurat and liger objects.
- Added new function seq_zeros()
to create sequences with
preceding zeros.
- Added new function Read_Metrics_CellBender
to read in the
summary metrics csv file produced by CellBender. Can either read all
metrics files from parent directory of output folders or a single
metrics file.
- Added Updated_MGI_Symbols
to check for update gene
names/symbols in mouse data (#202).
- Added plotting function Proportion_Plot
to plot pie chart
or bar chart of proportion (or total counts) of cells in each identity
class.
- Added new function Random_Cells_Downsample
to return
either a vector or list with randomly downsampled cells for each
identity class.
- Added new function Cells_per_Sample
to quickly return
data.frame with just number of cells per sample.
Updated functions:
- Added new parameters data_name
and overwrite
to Add_Alt_Feature_ID
to support new storage
location.
- Added cells
parameter explicitly to
FeatureScatter_scCustom
.
- Added Chicken (Gallus gallus) to default species for QC functions.
Thanks @dpearton;
(#176).
- Added new plotting function SpatialDimPlot_scCustom
.
Thanks for encouragement @puapinyoying @nina-hahn (#160).
- Added ability of Read_Metrics_10X
to read a single
metrics csv file and return data formatted the same way as when reading
multiple files.
- Added parameter cutoff_line_width
to the
QC_Plot_*
family of plots to control line thickness of
cutoff lines.
- Cluster_Stats_All_Samples
now returns data.frame with row
order reflecting the frequency of cells.
- Add_Mito_Ribo
now supports datasets aligned to
multi-species reference genomes (#184).
- Added parameter add_prop_plot
to
DimPlot_scCustom
to return plot showing number or percent
of cells per identity along with the DimPlot.
- Added optional parameter colors_use_assay2
to
FeaturePlot_DualAssay
which allows for specification of
different palettes for the two plots (#182).
- Added new folder and scripts (see “data-raw/” on GitHub) detailing the
creation of gene lists used in Add_Cell_QC_Metrics
.
- Added ensembl ID support for percent hemoglobin, msigdb, and IEG gene
sets (#186).
- Add verbosity parameter to Store_Misc_Info_Seurat
and
Store_Palette_Seurat
.
- Explicitly reveal the reduction
parameter in
Cluster_Highlight_Plot
and Meta_Highlight_Plot
(#198).
- Added show_row_names
show_column_names
,
column_names_side
, row_names_side
,
legend_position
, legend_orientation
,
show_ident_legend
, and show_ident_colors
parameters to Clustered_DotPlot
. Thanks for idea and code
@johnminglu (#199).
- Updated Split_Vector
to allow user to specify number of
chunks or size of chunks for splitting vector.
- Update RenameClusters
with additional parameters to
enable storage of both old idents and new idents in meta.data within the
function.
- Update Add_Cell_QC_Metrics.Seurat
to explicitly reveal
list_species_names
parameter.
- Added new vignette for spatial plotting.
- Added new and expanded vignette on use of object QC functions for
better clarity on these functions and their uses (previously was part of
QC Plotting & Helpers/Utilities Vignettes). Plotting elements of QC
Plotting vignette are unchanged.
Add_Top_Gene_Pct_Seurat
is now S3 generic that works with
both Seurat and liger objects and has been renamed
Add_Top_Gene_Pct
.Add_Cell_QC_Metrics
is now S3 generic and works with
both Seurat and liger objects.Add_Alt_Feature_ID
to
@misc
slot of object for safer storage across object
filtering.as.anndata
to explicitly check for
installation of anndata before starting conversion (#162).Plot_Median_Genes
,
Plot_Median_UMIs
, Plot_Median_Mito
,
Plot_Median_Other
, Plot_Cells_per_Sample
to
understand “ident” as grouping variable.Store_Misc_Info_Seurat
to use Seurat
accessor/setter function Seurat::Misc()
.sample_names
in
Read_CellBender_h5_Multi_File
to clarify parameter behavior
(related to (#208)).Read_Metrics_10X
to support adjusts to metrics
summary format and metric names in output from Cell Ranger v9+.Plot_Density_Custom
and
Plot_Density_Joint_Only
have been re-enabled for users with
ggplot2 v3.5.0 following Nebulosa v1.12.1 update patch.Add_Cell_QC_Metrics
when
overwrite = TRUE
(#165).DotPlot_scCustom
(#158).as.anndata
from
Seurat conversion that previously caused failures (#168).Create_Cluster_Annotation_File
if for
file path and csv name errors.plot_median
and more than one
feature in VlnPlot_scCustom
(#169).DimPlot_scCustom
due to changes in guides updated with ggplot2 v3.5.0 (#171).Add_Sample_Meta
that still errored when
setting na_ok = TRUE
.Plot_Median_*
family that caused issues
when group_by
parameter was NULL.FeaturePlot_scCustom
when setting
combine = FALSE
.DimPlot_scCustom
that could cause blank
plot when rasterizing points.MAD_Stats
that didn’t respect
mad_num
parameter (#183).MAD_Stats
that could cause issues if
mad_num
was less than or equal to 0 and returned error if
setting group_by_var
to “ident”.all_of
/any_of
syntax.Cluster_Highlight_Plot
with split.by
parameter
(#201).Convert_Assay
(#205).Updated_HGNC_Symbols
due to change in
URL path for gene names (#209).DimPlot_scCustom
when
split.by
and label.box = TRUE
.DiscretePalette_scCustom
that didn’t error
when supplying invalid palette names.DimPlot_LIGER
that provided uniformative
error message when changing the default cluster ident.Plot_Density_Custom
and
Plot_Density_Joint_Only
due to error in Nebulosa following
ggplot2 v3.5.0 update. Functionality will be restored when Nebulosa
package is updated.as.liger
that prevented function
from running properly.title_prefix
parameter to
Iterate_DimPlot_bySample
to unify with
Meta_Highlight_Plot
.Split_Vector
to split vector in chunks
of predetermined sizes.Updated_HGNC_Symbols
to update human
gene symbols. After first use does not require internet
connection.Seurat::LogSeuratCommand()
.plot_legend
to
plotFactors_scCustom
to allow for removal to legend in
factor loading plots.Iterate_FeaturePlot_scCustom
to allow for plotting multiple plots per page when saving to single PDF
document (see new parameters: features_per_page
and
landscape
.LIGER_Features
utility function for LIGER objects
(analogous to Seurat::Features()
).as.LIGER()
as enhanced method for
conversion of Seurat objects or lists of Seurat objects to single LIGER
object.as.anndata()
to support conversion of
Seurat and LIGER objects to anndata format.Convert_Assay()
to perform easy
conversions of Seurat assays between V3/4 (Assay) and V5 (Assay5)
formats.assay_type
to allow manual control of
assay type when creating Seurat object from LIGER using
Liger_to_Seurat
. Now as.Seurat
.grid_color
to
Clustered_DotPlot
to control the color of grid lines
(default is no grid lines).Clustered_DotPlot
by additional variable and maintain expression information.Split_Layers()
function for V5 objects.Add_Alt_Feature_ID
to add alternative feature ids
to an Assay5 meta.data slot.Add_Mito_Ribo()
replaces
Add_Mito_Ribo_Seurat
and
Add_Mito_Ribo_LIGER
.Add_Cell_Complexity()
replaces
Add_Cell_Complexity_Seurat
and
Add_Cell_Complexity_LIGER
.Meta_Present_LIGER
has been deprecated and wrapped inside of
Meta_Present
.Liger_to_Seurat()
has been soft-deprecated. It is replaced
by new extension of Seurat generic as.Seurat
with added
support for Liger objects, using all the same parameters as
Liger_to_Seurat
. Full deprecation will occur in
v2.2.0.Gene_Present
has been soft-deprecated. It is replaced by
Feature_Present
which functions identically but better
reflects that features present may also be proteins. Full deprecation
will occur in v2.2.0.legend
in
Iterate_DimPlot_bySample
has been inverted to
no_legend
to match Meta_Highlight_Plot
parameters.Liger_to_Seurat()
for compatibility with Seurat
V5 structure (#153).
Now part of as.Seurat
.Stacked_VlnPlot
due
to rasterization defaults.alpha_na_exp
appropriately in
FeaturePlot_scCustom
.alpha_exp
between Seurat versions 4
and 5 (#144).DimPlot_scCustom
when levels
are missing from a split plot.FeaturePlot_scCustom
that could cause
plots to be mislabeled when using split.by
and depending on
the order of features provided (#150).DimPlot_LIGER
(#153).Add_Mito_Ribo_LIGER
that caused it to
return value of 0 for all cells (Now part of renamed
Add_Mito_Ribo
S3 generic).Clustered_DotPlot
to display
percentage instead of proportion to match legend text.Percent_Expressing
error when
group_by = "ident"
.DotPlot_scCustom
that didn’t correctly
pass group.by
when plotting (#158).VariableFeaturePlot_scCustom
now
fixed in Seurat release.Add_Mito_Ribo_Seurat
causing failure due
to error message when overwrite = TRUE
.Add_Top_Gene_Pct_Seurat
to avoid issue
that accidentally could call function on normalized data.Add_Top_Gene_Pct_Seurat
that caused
error if more than one counts layer was present.QC_Histogram
that prevented plotting or
titling of plots.multi
pipeline to Read10X_Metrics
via new parameter
cellranger_multi
.dot_size
parameter to Seq_QC_Plot_*
family of functions.Barcode_Plot
and
Iterate_Barcode_Rank_Plot
.ident_legend
parameter to
QC_Plot_UMIvsGene
to control show/hide of the identity
legend (#121).CellBender_Feature_Diff
.min_count_label
in
CellBender_Diff_Plot
to better control feature
labeling.Iterate_DimPlot_bySample
using new
sample_column
parameter.MAD_Stats
to calculate to the median
absolute deviation of meta.data columns by grouping variable and across
entire object.Add_Top_Gene_Pct_Seurat
to add
another QC measure of cell complexity to object meta.data. Returns
percentage of counts occupied by top XX genes in each cell.VariableFeaturePlot_scCustom
using
custom_features
parameter.Add_Cell_QC_Metrics
to simplify adding cell QC metrics.
Single function call to add Mito/Ribo Percentages, Cell Complexity, Top
Gene Percentages, MSigDB Percentages, IEG Percentages, and/or Cell Cycle
Scoring (human only).Add_Cell_QC_Metrics
function: “msigdb_qc_gene_list” and
“ieg_gene_list”.Add_Cell_QC_Metrics
.plot_median
and
plot_boxplot
to VlnPlot_scCustom
(and
VlnPlot_scCustom
-based plots; e.g., QC_Plot_*
family) for added visualization.QC_Histogram
to plot QC features (or any feature)
using simple histogram.FeatureScatter_scCustom
function to customize
Seurat’s FeatureScatter
plots.figure_plot
parameter to all 2D DR (t-SNE, UMAP,
etc) based plots (#127).Split_FeatureScatter
function has been completely deprecated and it’s functionality has been
moved to new FeatureScatter_scCustom
.gene_list
in Iterate_FeaturePlot_scCustom
and
Iterate_VlnPlot_scCustom
has been soft-deprecated and
replaced by features
parameter. Specifying
gene_list
will display deprecation warning but continue to
function until next major update.Read10X_Metrics
to use new internal
helper functions.Liger_to_Seurat
to transfer the liger_object@H
slot in addition to H.norm slot already moved.length(x = colnames(x = obj)
with
length(x = Cells(x = obj)
for accurate plotting based on V5
object structure.Gene_Present
now accepts assay
parameter.R/
for
better organization.scCustomize_Palette
). Now if number of colors is greater
than 2 but less than 8 the default palette will be
ColorBlind_Pal
(previously it was “polychrome”). Polychrome
remains the default when number of colors is between 9-36.scCustomize_Palette
to
ggplot_default_colors = FALSE
to avoid uncessary error when
no value supplied.DimPlot_scCustom
will now set label = TRUE
if label.box
is set to TRUE but label
is not
changed from default.PackageCheck
(now deprecated), with
rlang::is_installed()
for non-dependency checks.Read10X_Metrics
that caused errors when
reading files on windows operating system (#115).Create_CellBender_Merged_Seurat
when
feature names are changed (underscore to dash) during object creation
(#118).Read10X_h5_Mutli_Directory
when reading
Cell Ranger multi
directories.VlnPlot_scCustom
,
DimPlot_scCustom
, and DotPlot_scCustom
to
avoid otherwise ambiguous error messages (#120).VlnPlot_scCustom
(#122).Cell_Highlight_Plot
that could
cause function to error without proper error message.Read_*
functions to
avoid unnecessary errors.drop_na(.data[[var]]
, with current dplyr syntax.VlnPlot
-based plots when
split.by
is not NULL.group.by
when using DimPlot_scCustom
(#128).Add_Mito_Ribo_Seurat
and Add_Mito_Ribo_LIGER
which incorrectly stated the names of new meta.data/cell.data columns to
be added.DotPlot_scCustom
that prevented it from
working unless group.by
parameter was explicitly
added.Case_Check
caused by typo.Cluster_Highlight_Plot
and Meta_Highlight_Plot
that were too verbose.Add_Mito_Ribo_Seurat
and
Add_Mito_Ribo_LIGER
which caused error when supplying
custom list of features for non-default organism (#133).DimPlot_scCustom
preventing that errored
when trying to split plot and use figure_plot
at same
time.Merge_Seurat_List
.aspect_ratio
parameter to all dimensionality
reduction plots to control axes ratio of output plot.plot_median
and median_size
parameters to QC_Plots_*
functions.split_collect
parameter to
FeaturePlot_scCustom
to collect all guides when using
split.by
for a single feature (#94).Clustered_DotPlot
to allow
modification of sizes of column text labels, legend text labels, and
legend title labels (#96).Merge_Sparse_Multimodal_All
for
merging multi-modal data (1 matrix per modality) (#104).Clustered_DotPlot
named
row_label_fontface
to allow control of fontface used for
row labels (#103).Reduction_Loading_Present
, in part
to fix issue with FeaturePlot_scCustom
and internal feature
checking.Clustered_DotPlot
using new parameters:
cluster_feature
, cluster_ident
(#106).dot_size
parameter to statistics plotting
functions Plot_Cells_per_Sample
and
Plot_Median_*
family.no_legend
to
Iterate_Meta_Highlight_Plot
to allow for plotting with a
plot title instead of plot legend (#108).QC_Plots_Feature
to use
VlnPlot_scCustom
under the hood like rest of
QC_Plots_*
functions.abort
in Meta_Present
to
return_none
to align with Gene_Present
and
Reduction_Loading_Present
.summarise_at
, select(.data[[var]])
, and
rename(.data[[var]])
with current dplyr syntax.Iterate_Cluster_Highlight_Plot
and
Iterate_Meta_Highlight_Plot
to align with recent updates to
base Cluster_Highlight_Plot
and
Meta_Highlight_Plot
functions.QC_Plots_Feature
to respect parameters when
passing to VlnPlot
(#91).Read_CellBender_h5_*
functions to support
CellBender outputs from STARsolo- or Cell Ranger (pre-V3)-processed data
(#99).FeaturePlot_scCustom
to allow for plotting of
dimensionality reduction loadings (#97).Read10X_Multi_Directory
and
Read10X_h5_Multi_Directory
to support files processed with
Cell Ranger multi
pipeline.Merge_Seurat_List
that prevented
add.cell.id
from adding correct cell name prefixes (#113).label_color_num
parameter to
PalettePlot
allow control of color labeling.Stacked_VlnPlot
90
degrees or 45 (previously possible) (#84).Merge_Seurat_List
to avoid
ambiguous error messages on failure.Case_Check
checks/messages to all feature-based
plotting functions.PalettePlot
has been changed from palette
to
pal
.PalettePlot
to support pal
of
class “colors”.Cluster_Highlight_Plot
and
Meta_Highlight_Plot
.Fetch_Meta
is now S3 generic function that can handle
either Seurat or LIGER objects.R/
scripts for better
organization.Add_Mito_Ribo_Seurat
and
Add_Mito_Ribo_LIGER
.Add_Mito_Ribo_Seurat
to respect provided
mito_name
, ribo_name
and
mito_ribo_name
values.merge
parameter to Read10X_GEO
,
Read10X_h5_GEO
, Read_GEO_Delim
and
Read_CellBender_h5_Multi_File
.raster.dpi
parameter to
DimPlot_LIGER
.label
parameter to
FeaturePlot_scCustom
to avoid error collision (#80).vln_linewidth
parameter to control violin outline
line width (#32).Fetch_Meta
for
returning data.frame of object meta data.Extract_Sample_Meta
to extract sample-level meta
data from object.Cell_Highlight_Plot
for highlight plots of custom
cells not in active ident or meta data.flip
parameter to Clustered_DotPlot
to enable axes flipping (#69).R/
scripts for better
organization.FindMarkers
.CellBender_Feature_Diff
to return data.frame with
count sums and differences between raw and CellBender assays.CellBender_Diff_Plot
to plot differences between
raw and CellBender assays using data from
CellBender_Feature_Diff
.Add_CellBender_Diff
is new name for
Add_Cell_Bender_Diff
in order to unify function names for
CellBender related functions.mito_name
parameter to QC_Plots_Mito
to allow for custom specification of meta data column name that contains
mitochondrial information.QC_Plots_Combined_Vln()
function to return
patchwork layout of 3 QC plots.Add_Mito_Ribo_Seurat()
and
Add_Mito_Ribo_LIGER()
(#28).alpha_exp
and alpha_na_exp
parameters to FeaturePlot_scCustom
to allow for control of
color scale transparency (#21).*_Highlight_Plot
functions can now plot multiple
variables simultaneously using either one color for all variables or one
color per variable (#34).figure_plot
to
DimPlot_scCustom()
. This removes axes and axes labels and
adds axis legend on left bottom corner of plot (#40).plot_legend
to
Stacked_VlnPlot
. This solves issue with returning only one
shared legend across all features being plotted (#48).Add_Cell_Complexity_Seurat
and
Add_Cell_Complexity_LIGER
functions to add cell QC
complexity/novelty metric (log10(Genes) / log10(UMIs)).QC_Plots_Complexity
plot for quick plotting of
cell complexity score.Read_CellBender_h5_Mat
,
Read_CellBender_h5_Multi_Directory
,
Read_CellBender_h5_Multi_File
to enable easy reading of new
CellBender output files.raster.dpi
parameter from Seurat to all
DimPlot
FeaturePlot
or
FeatureScatter
based functions.add.noise
parameter from Seurat to
VlnPlot_scCustom
Stacked_VlnPlot
functions.group.by
as default listed parameter to added to
allVlnPlot
based QC_Plot_*
.ensembl_ids
parameter for
Add_Mito_Ribo_*
functions. If
ensembl_ids = TRUE
functions will retrieve stored ensembl
IDs representing mitochondrial and ribosomal genes for accepted default
species.label_feature_yaxis
to
FeaturePlot_scCustom
. Allows for plotting of feature names
on secondary y-axis when using split.by
(#60).Add_Sample_Meta
function for addition of
sample-level meta data to cell-level @meta.data
slot of
Seurat objects.Read_GEO_Delim
to check for
issues with imported matrices. Check is modified version of
SeuratObject::CheckMatrix
called
CheckMatrix_scCustom()
. Will warn if infinite, logical,
non-integer (whole), or NA/NaN values are detected in input
matrix.QC_Plot_UMIvsGene
will now returned filtered
correlation value that takes into account
meta_gradient_name
if provided in addition to nFeature_RNA
and nCount_RNA.Variable_Features_ALL_LIGER
which
allows for detection/selection of variable genes from entire LIGER
object instead of iterating by dataset.PackageCheck
warning has been added where needed.VlnPlot
has been changed to
Iterate_VlnPlot_scCustom
to reflect that it now uses
VlnPlot_scCustom
to generate plots.QC_Plot_*
functions now use
VlnPlot_scCustom
internally to unify color scheme and
rasterization parameters.*_Highlight_Plot
functions no longer display
“Unselected” in plot legend and uses DimPlot_scCustom
to
generate plots (#34).low_cutoff
from plotting via
QC_Plots_Mito
.Clustered_DotPlot
that prevented setting
identity colors (#29).FeaturePlot_scCustom
that returned NULL
when setting combine = FALSE
(#31).Seq_QC_Plot_*
functions which resulted in
groups being plotted out of order when specifying plot_by
parameter.Seq_QC_Plot_*
functions that created color
palette error when color palettes were not being used.DimPlot_scCustom
that caused mismatch of
colors between plots when using split.by
if one of the
plots was missing 1 or more of the group.by
levels (#37).VlnPlot_scCustom
that caused raster
warning messages to be displayed twice (#42).Iterate_PC_Loading_Plots
that caused error
when specifying current directory with file_path = NULL
or
file_path = ""
DotPlot_scCustom
that prevented plotting
of features in meta.data slot (#44).Stacked_VlnPlot
when
no supplied features were present.plotFactors_scCustom
that was ignoring
provided file name.plotFactors_scCustom
that caused progress
to only display progress up to 50% even when it was fully complete.Clustered_DotPlot
that resulted in error
related to color palettes if number of clusters was greater than 36 (#49).Add_Mito_Ribo_LIGER
that resulted custom
column names (e.g. mito_name = "pct.mt"
) being disregarded
and also therefore issue with overwrite
parameter. (#51).Store_Misc_Info_Seurat
that prevented
function from working.Plot_Density_Custom
when supplying
custom_palette
and multiple features. (#51).Clustered_DotPlot
so that legend with
identities is displayed by factor level of Seurat object idents (#55).Split_FeatureScatter
to remove test code
that prevented function from working properly (#57).DimPlot_All_Samples
,
Split_FeatureScatter
, and DimPlot_scCustom
that ignored factor order when plotting groups.FeaturePlot_scCustom
when setting split.by
and one or more of features provided
was not present in object (#64).VlnPlot_scCustom
function.Stacked_VlnPlot
make_unique
parameter to
Extract_Top_Markers
function.Clustered_DotPlot
function.Add_Mito_Ribo_Seurat
and
Add_Mito_Ribo_LIGER
.VlnPlot
.Read_Metrics_10X
errors that occurred due to
differing outputs depending on Cell Ranger version or type of
assay.importFrom
for
DefaultDimReduc
from SeuratObject package to avoid
potential errors.Read_Metrics_10X
errors that occurred due to
differing outputs depending on Cell Ranger version or type of
assay.importFrom
for
DefaultDimReduc
from SeuratObject to avoid potential
errors.Merge_Sparse_Data_All
. (#8)Read_Metrics_10X
,
Read10X_Multi_Directory
, and
Read10X_h5_Multi_Directory
.StackedVlnPlot
with
parameters plot_spacing
and spacing_unit
. (#6)scCustomize_Palette
function select palette to
use (simplify internal code).Iterate_VlnPlot
.Iterate_...
function checks for file path parameter
if file_path = NULL
.