Source code for drcme.bin.run_joint_ephys_morph_tsne

"""
Script to generate t-SNE coordinates using electrophysiology and morphological features.

The electrophysiology file is typically an sPCA value file. Both files should have
normalized features (e.g., z-scored features). The two data sets can be weighted differently
via the ``relative_ephys_weight`` parameter.

.. autoclass:: JointTsneParameters

"""

import pandas as pd
import argschema as ags
import drcme.tsne as tsne


[docs]class JointTsneParameters(ags.ArgSchema): """Parameter schema for joint t-SNE calculation""" ephys_file = ags.fields.InputFile( description="Path to electrophysiology data file") morph_file = ags.fields.InputFile( description="Path to morphology data file") output_file = ags.fields.OutputFile( description="Path to output file for t-SNE coordinates") relative_ephys_weight = ags.fields.Float(default=1., description="Relative weight of electrophysiology values (vs morphology values)") perplexity = ags.fields.Float(default=25., description="Perplexity parameter for t-SNE") n_iter = ags.fields.Integer(default=20000, description="Number of iterations for t-SNE")
def main(ephys_file, morph_file, output_file, relative_ephys_weight, perplexity, n_iter, **kwargs): """ Main runner function for script. See :class:`JointTsneParameters` for argument descriptions. """ ephys_df = pd.read_csv(ephys_file, index_col=0) morph_df = pd.read_csv(morph_file, index_col=0).dropna(axis=1) result = tsne.dual_modal_tsne(ephys_df, morph_df, relative_ephys_weight, perplexity, n_iter) result.to_csv(output_file) if __name__ == "__main__": module = ags.ArgSchemaParser(schema_type=JointTsneParameters) main(**module.args)