Mercurial > repos > goeckslab > cell_intensity_processing
diff process_intensities.xml @ 0:34bb79f271fc draft
planemo upload for repository https://github.com/goeckslab/tools-mti/tree/main/tools/mti-utils commit 339f5497446066ca76c27460da2eef4f6e0fa36e
author | goeckslab |
---|---|
date | Thu, 29 Sep 2022 16:53:01 +0000 |
parents | |
children | 7f93f472a242 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/process_intensities.xml Thu Sep 29 16:53:01 2022 +0000 @@ -0,0 +1,116 @@ +<tool id="cell_intensity_processing" name="Process single-cell intensities" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> + <description>Options to correct for exposure time, autofluorescence subtraction, or compute signal-to-background ratio.</description> + <macros> + <import>macros.xml</import> + </macros> + <expand macro="requirements" /> + <command detect_errors="aggressive"><![CDATA[ + + ln -s '$quant_table' ./quant.csv && + + python '$script' + + ]]></command> + <configfiles> + <configfile name = "script"> +import os +import numpy as np +import pandas as pd + +cwd = os.getcwd() +quant = pd.read_csv(os.path.join(cwd, 'quant.csv'), index_col = 0) +marker_df = pd.read_csv('$channel_csv') + +markers_to_normalize = marker_df['marker_name'].to_list() + +for marker in markers_to_normalize: + +#if $exp.exposure == 'correct_exposure': + exp_time = marker_df.loc[marker_df['marker_name'] == marker, '${exp.exp_col}'].values[0] + quant[marker] = quant[marker] / exp_time +#end if + +#if $AF_method.select_method == 'dont_adjust': + pass +#elif $AF_method.select_method == 'subtract': + current_AF_channel = marker_df.loc[marker_df['marker_name'] == marker, '${AF_method.AF_col}'].values[0] + if current_AF_channel in markers_to_normalize: + quant[marker] = quant[marker] - quant[current_AF_channel] + quant[marker] = np.where(quant[marker] < 0, 0, quant[marker]) +#elif $AF_method.select_method == 'SBR': + current_AF_channel = marker_df.loc[marker_df['marker_name'] == marker, '${AF_method.AF_col}'].values[0] + if current_AF_channel in markers_to_normalize: + quant[marker] = quant[marker] / quant[current_AF_channel] +#end if + +quant.to_csv(os.path.join(cwd, 'processed_quant.csv')) + </configfile> + </configfiles> + <inputs> + <param name="quant_table" type="data" format="csv" label="Input quantification table (csv)" /> + <param name="channel_csv" type="data" format="csv" label="Channel Metadata (csv)" /> + <conditional name="exp"> + <param name="exposure" type="select" label="Select whether to divide intensities by exposure times"> + <option value="dont_correct_exposure">No exposure correction</option> + <option value="correct_exposure">Exposure correction</option> + </param> + <when value="dont_correct_exposure" /> + <when value="correct_exposure"> + <param name="exp_col" type="text" value="exposure_time" label="Name of column in markers file containing exposure times" /> + </when> + </conditional> + <conditional name="AF_method"> + <param name="select_method" type="select" label="Select method of autofluorescence/background adjustment"> + <option value="dont_adjust">No AF/background adjustment</option> + <option value="subtract">Autofluorescence subtraction</option> + <option value="SBR">Signal-to-background ratio</option> + </param> + <when value="dont_adjust" /> + <when value="subtract"> + <param name="AF_col" type="text" value="AF_channel" label="Name of column in markers file containing respective AF channel for each marker" /> + </when> + <when value="SBR"> + <param name="AF_col" type="text" value="AF_channel" label="Name of column in markers file containing respective AF channel for each marker" /> + </when> + </conditional> + </inputs> + <outputs> + <data name="processed_quant" from_work_dir="processed_quant.csv" format="csv"/> + </outputs> + <tests> + <test> + <param name="quant_table" value="intensities.csv" /> + <param name="channel_csv" value="intensity_channels.csv" /> + <conditional name="exp"> + <param name="exposure" value="correct_exposure" /> + </conditional> + <conditional name="AF_method"> + <param name="select_method" value="SBR" /> + </conditional> + <output name="processed_quant" ftype="csv"> + <assert_contents> + <has_n_columns n="15" sep="," /> + <has_n_lines n="15" /> + </assert_contents> + </output> + </test> + </tests> + <help><![CDATA[ +This tool can be used to perform several different common signal processing operations for single-cell mean marker intensities from multiplex +tissue imaging data. + +**Inputs** +1. Comma-separated feature observation matrix that is generated by **MCQuant** +2. Comma-separated channel metadata file that maps marker names to exposure times (optional) and respective AF/bg channels (optional) + +**Options** +1. Exposure correction - Divide single-cell intensities by respective exposure time in channel metadata +2. Background subtraction - Subtract single-cell mmean marker intensities by respective AF/bg channel mean intensity specified in channel metadata +3. Signal-to-background ratio - Divide single-cell mmean marker intensities by respective AF/bg channel mean intensity specified in channel metadata + +**Outputs** +1. Feature observation matrix with processed intensities for all markers in channel metadata file. + CellIDs, centroids, and morphological data remain unchanged. + ]]></help> + <expand macro="citations" /> +</tool> \ No newline at end of file