comparison import.xml @ 13:d330b3082107 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/anndata/ commit 67b3808b56df343798263ff0c905df8cb789edfa
author iuc
date Sat, 14 Sep 2024 19:58:24 +0000
parents 93dd15e13e6a
children
comparison
equal deleted inserted replaced
12:93dd15e13e6a 13:d330b3082107
1 <tool id="anndata_import" name="Import Anndata and loom" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.09"> 1 <tool id="anndata_import" name="Import Anndata" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">
2 <description>from different format</description> 2 <description>from different formats</description>
3 <macros> 3 <macros>
4 <import>macros.xml</import> 4 <import>macros.xml</import>
5 <xml name="params_10x"> 5 <xml name="params_10x">
6 <param name="barcodes" type="data" format="tabular,txt" label="Barcodes"/> 6 <param name="barcodes" type="data" format="tabular,txt" label="Barcodes (whitelist) file with one barcode per line"/>
7 <param name="var_names" type="select" label="Variables index"> 7 <param name="var_names" type="select" label="Variables index">
8 <option value="gene_symbols">gene_symbols</option> 8 <option value="gene_symbols">gene_symbols</option>
9 <option value="gene_ids">gene_ids</option> 9 <option value="gene_ids">gene_ids</option>
10 </param> 10 </param>
11 <param name="make_unique" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Make the variable index unique by appending '-1', '-2'?"/> 11 <param name="make_unique" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Make the variable index unique by appending '-1', '-2'?"/>
12 <param name="gex_only" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Keep only 'Gene Expression' data and ignore other feature types?"/> 12 <param name="gex_only" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Keep only 'Gene Expression' data and ignore other feature types?"/>
13 </xml> 13 </xml>
14 </macros> 14 </macros>
15 <expand macro="requirements"> 15 <expand macro="requirements">
16 <requirement type="package" version="1.9.6">scanpy</requirement> 16 <requirement type="package" version="1.10.2">scanpy</requirement>
17 </expand> 17 </expand>
18 <expand macro="version_command"/> 18 <expand macro="version_command"/>
19 <command detect_errors="exit_code"><![CDATA[ 19 <command detect_errors="exit_code"><![CDATA[
20 #if $hd5_format.filetype == 'anndata' 20 #if $in.adata_format == 'mtx'
21 #if $hd5_format.in.adata_format == 'mtx' 21 mkdir mtx
22 mkdir mtx 22 #if $in.tenx.use == 'legacy_10x'
23 #if $hd5_format.in.tenx.use == 'legacy_10x' 23 && cp '$in.matrix' 'mtx/matrix.mtx'
24 && cp '$hd5_format.in.matrix' 'mtx/matrix.mtx' 24 && cp '$in.tenx.genes' 'mtx/genes.tsv'
25 && cp '$hd5_format.in.tenx.genes' 'mtx/genes.tsv' 25 && cp '$in.tenx.barcodes' 'mtx/barcodes.tsv'
26 && cp '$hd5_format.in.tenx.barcodes' 'mtx/barcodes.tsv' 26 #else if $in.tenx.use == 'v3_10x'
27 #else if $hd5_format.in.tenx.use == 'v3_10x' 27 && cp '$in.matrix' 'mtx/matrix.mtx'
28 && cp '$hd5_format.in.matrix' 'mtx/matrix.mtx' 28 && gzip 'mtx/matrix.mtx'
29 && gzip 'mtx/matrix.mtx' 29 && cp '$in.tenx.features' 'mtx/features.tsv'
30 && cp '$hd5_format.in.tenx.features' 'mtx/features.tsv' 30 && gzip 'mtx/features.tsv'
31 && gzip 'mtx/features.tsv' 31 && cp '$in.tenx.barcodes' 'mtx/barcodes.tsv'
32 && cp '$hd5_format.in.tenx.barcodes' 'mtx/barcodes.tsv' 32 && gzip 'mtx/barcodes.tsv'
33 && gzip 'mtx/barcodes.tsv'
34 #end if
35 &&
36 #else if $hd5_format.in.adata_format == 'umi_tools'
37 ## avoid gzipping in the inputdir
38 gzip -c '$hd5_format.in.input' > umi_tools_input.gz
39 &&
40 #end if 33 #end if
41 34 &&
42 @CMD@ 35 #else if $in.adata_format == 'umi_tools'
43 36 ## avoid gzipping in the inputdir
44 #if $hd5_format.in.adata_format == 'mtx' 37 gzip -c '$in.input' > umi_tools_input.gz
45 && rm -rf mtx 38 &&
46 #end if
47
48 #else:
49 python '$__tool_directory__/tsv_to_loompy.py'
50 -c '${hd5_format.coldata}'
51 -r '${hd5_format.rowdata}'
52 -f '${hd5_format.mainmatrix}'
53 #if $hd5_format.other_files:
54 '${hd5_format.other_files}'
55 #end if
56 #end if 39 #end if
40
41 @CMD@
57 ]]></command> 42 ]]></command>
58 <configfiles> 43 <configfiles>
59 <configfile name="script_file"><![CDATA[ 44 <configfile name="script_file"><![CDATA[
60 @CMD_imports@ 45 @CMD_imports@
61 #if $hd5_format.filetype == 'anndata' 46 #if $in.adata_format == 'loom'
62 #if $hd5_format.in.adata_format == 'loom'
63 adata = ad.read_loom( 47 adata = ad.read_loom(
64 '$hd5_format.in.input', 48 '$in.input',
65 sparse=$hd5_format.in.sparse, 49 sparse=$in.sparse,
66 cleanup=$hd5_format.in.cleanup, 50 cleanup=$in.cleanup,
67 X_name='$hd5_format.in.x_name', 51 X_name='$in.x_name',
68 obs_names='$hd5_format.in.obs_names', 52 obs_names='$in.obs_names',
69 var_names='$hd5_format.in.var_names') 53 var_names='$in.var_names')
70 54
71 #else if $hd5_format.in.adata_format == 'tabular' 55 #else if $in.adata_format == 'tabular'
72 #set delimiter=$hd5_format.in.input.metadata.delimiter 56 #set delimiter=$in.input.metadata.delimiter
73 #if $delimiter != ',' 57 #if $delimiter != ','
74 #set delimiter='\\t' 58 #set delimiter='\\t'
75 #end if 59 #end if
76 adata = ad.read_csv( 60 adata = ad.read_csv(
77 '$hd5_format.in.input', 61 '$in.input',
78 delimiter='$delimiter', 62 delimiter='$delimiter',
79 first_column_names=$hd5_format.in.first_column_names) 63 first_column_names=$in.first_column_names)
80 64 ## convert into sparse matrix. Dense matrix needs large disk space and higher access times
81 #else if $hd5_format.in.adata_format == '10x_h5' 65 from scipy.sparse import csr_matrix
66 adata.X = csr_matrix(adata.X)
67
68 #else if $in.adata_format == '10x_h5'
82 import scanpy as sc 69 import scanpy as sc
83 adata = sc.read_10x_h5('$hd5_format.in.input') 70 adata = sc.read_10x_h5('$in.input')
84 71
85 #else if $hd5_format.in.adata_format == 'mtx' 72 #else if $in.adata_format == 'mtx'
86 #if $hd5_format.in.tenx.use == 'no' 73 #if $in.tenx.use == 'no'
87 adata = ad.read_mtx(filename='$hd5_format.in.matrix') 74 adata = ad.read_mtx(filename='$in.matrix')
88 #else 75 #else
89 import scanpy as sc 76 import scanpy as sc
90 adata = sc.read_10x_mtx( 77 adata = sc.read_10x_mtx(
91 'mtx', 78 'mtx',
92 var_names='$hd5_format.in.tenx.var_names', 79 var_names='$in.tenx.var_names',
93 make_unique=$hd5_format.in.tenx.make_unique, 80 make_unique=$in.tenx.make_unique,
94 cache=False, 81 cache=False,
95 gex_only=$hd5_format.in.tenx.gex_only) 82 gex_only=$in.tenx.gex_only)
96 #end if 83 #end if
97 84
98 #else if $hd5_format.in.adata_format == 'umi_tools' 85 #else if $in.adata_format == 'umi_tools'
99 adata = ad.read_umi_tools('umi_tools_input.gz') 86 adata = ad.read_umi_tools('umi_tools_input.gz')
100 #end if
101 adata.write('anndata.h5ad')
102 #end if 87 #end if
88 adata.write('anndata.h5ad', compression='gzip')
89 print(adata)
103 ]]></configfile> 90 ]]></configfile>
104 </configfiles> 91 </configfiles>
105 <inputs> 92 <inputs>
106 <conditional name="hd5_format"> 93 <conditional name="in">
107 <param name="filetype" type="select" label="hd5 format to be created"> 94 <param name="adata_format" type="select" label="Create annadata from">
108 <option value="anndata" selected="true">Anndata file</option> 95 <option value="loom">Loom data</option>
109 <option value="loom">Loom file</option> 96 <option value="tabular">Tabular, CSV, TSV</option>
97 <option value="10x_h5">H5 format from Cell ranger or not</option>
98 <option value="mtx">Matrix Market (mtx), from Cell ranger or not</option>
99 <option value="umi_tools">UMI tools count matrix</option>
110 </param> 100 </param>
111 <when value="anndata"> 101 <when value="loom">
112 <conditional name="in"> 102 <param name="input" type="data" format="loom" label="Annotated data matrix"/>
113 <param name="adata_format" type="select" label="Format for the annotated data matrix"> 103 <param name="sparse" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Is the data matrix to read sparse?"/>
114 <option value="loom">Loom</option> 104 <param name="cleanup" type="boolean" truevalue="True" falsevalue="False" checked="false" label="Cleanup?"/>
115 <option value="tabular">Tabular, CSV, TSV</option> 105 <param name="x_name" type="text" value="spliced" label="X_name"/>
116 <option value="10x_h5">H5 format from Cell ranger or not</option> 106 <param name="obs_names" type="text" value="CellID" label="obs_names"/>
117 <option value="mtx">Matrix Market (mtx), from Cell ranger or not</option> 107 <param name="var_names" type="text" value="Gene" label="var_names"/>
118 <option value="umi_tools">UMI tools</option> 108 </when>
109 <when value="tabular">
110 <param name="input" type="data" format="tabular,csv,tsv" label="Annotated data matrix"/>
111 <param name="first_column_names" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Does the first column store the row names?"/>
112 </when>
113 <when value="10x_h5" >
114 <param name="input" type="data" format="h5" label="Data matrix"/>
115 </when>
116 <when value="mtx">
117 <param name="matrix" type="data" format="mtx" label="Matrix in Matrix Market format"/>
118 <conditional name="tenx">
119 <param name="use" type="select" label="Use 10x Genomics formatted mtx">
120 <option value="no">No</option>
121 <option value="legacy_10x">Output from Cell Ranger v2 or earlier versions</option>
122 <option value="v3_10x">Output from Cell Ranger v3 or later versions</option>
119 </param> 123 </param>
120 <when value="loom"> 124 <when value="no"/>
121 <param name="input" type="data" format="loom" label="Annotated data matrix"/> 125 <when value="legacy_10x">
122 <param name="sparse" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Is the data matrix to read sparse?"/> 126 <param name="genes" type="data" format="tabular" label="2-column genes file with gene id and gene name"/>
123 <param name="cleanup" type="boolean" truevalue="True" falsevalue="False" checked="false" label="Cleanup?"/> 127 <expand macro="params_10x"/>
124 <param name="x_name" type="text" value="spliced" label="X_name"/>
125 <param name="obs_names" type="text" value="CellID" label="obs_names"/>
126 <param name="var_names" type="text" value="Gene" label="var_names"/>
127 </when> 128 </when>
128 <when value="tabular"> 129 <when value="v3_10x">
129 <param name="input" type="data" format="tabular,csv,tsv" label="Annotated data matrix"/> 130 <param name="features" type="data" format="tabular" label="3-column features file with feature id, feature name and feature type" help="For scRNA-seq, features are genes. The 3rd column typically contains the word 'Gene Expression'"/>
130 <param name="first_column_names" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Does the first column store the row names?"/> 131 <expand macro="params_10x"/>
131 </when> 132 </when>
132 <when value="10x_h5" > 133 </conditional>
133 <param name="input" type="data" format="h5" label="Data matrix"/> 134 </when>
134 </when> 135 <when value="umi_tools">
135 <when value="mtx"> 136 <param name="input" type="data" format="tabular" label="condensed count matrix from UMI tools"/>
136 <param name="matrix" type="data" format="mtx" label="Matrix"/>
137 <conditional name="tenx">
138 <param name="use" type="select" label="Use 10x Genomics formatted mtx">
139 <option value="no">No</option>
140 <option value="legacy_10x">Output from Cell Ranger v2 or earlier versions</option>
141 <option value="v3_10x">Output from Cell Ranger v3 or later versions</option>
142 </param>
143 <when value="no"/>
144 <when value="legacy_10x">
145 <param name="genes" type="data" format="tabular" label="Genes"/>
146 <expand macro="params_10x"/>
147 </when>
148 <when value="v3_10x">
149 <param name="features" type="data" format="tabular" label="Features"/>
150 <expand macro="params_10x"/>
151 </when>
152 </conditional>
153 </when>
154 <when value="umi_tools">
155 <param name="input" type="data" format="tabular" label="condensed count matrix from UMI tools"/>
156 </when>
157 </conditional>
158 </when>
159 <when value="loom">
160 <param name="mainmatrix" type="data" format="tabular" label="File for main layer of loom file." help="All subsequent tsv must be the same dimensions as this file. When converted back to tsv using hd5 export, this will be labeled as 'mainmatrix.tsv'"/>
161 <param name="other_files" type="data" format="tabular" multiple="true" optional="true" label="Add layers" help="Adds layers of same dimension to the loom file. When converted to tsv using hd5 export, these layers will retain their names."/>
162 <param name="coldata" type="data" format="tabular" label="Tsv of column data." help="First row is column attributes, subsequent are values."/>
163 <param name="rowdata" type="data" format="tabular" label="Tsv of row data." help="First row is row attributes, subsequent are values."/>
164 </when> 137 </when>
165 </conditional> 138 </conditional>
166 </inputs> 139 </inputs>
167 <outputs> 140 <outputs>
168 <data name="anndata" format="h5ad" from_work_dir="anndata.h5ad" label="Anndata import on ${on_string}"> 141 <data name="anndata" format="h5ad" from_work_dir="anndata.h5ad" label="Anndata import on ${on_string}"/>
169 <filter>hd5_format['filetype'] == 'anndata'</filter>
170 </data>
171 <data name="loomdata" format="loom" from_work_dir="converted.loom" label="Loom import on ${on_string}">
172 <filter>hd5_format['filetype'] == 'loom'</filter>
173 </data>
174 </outputs> 142 </outputs>
175 <tests> 143 <tests>
176 <test expect_num_outputs="1"> 144 <test expect_num_outputs="1">
177 <conditional name="in"> 145 <conditional name="in">
178 <param name="adata_format" value="loom"/> 146 <param name="adata_format" value="loom"/>
189 <has_text_matching expression="cleanup=False"/> 157 <has_text_matching expression="cleanup=False"/>
190 <has_text_matching expression="X_name='spliced'"/> 158 <has_text_matching expression="X_name='spliced'"/>
191 <has_text_matching expression="obs_names='CellID'"/> 159 <has_text_matching expression="obs_names='CellID'"/>
192 <has_text_matching expression="var_names='Gene'"/> 160 <has_text_matching expression="var_names='Gene'"/>
193 </assert_stdout> 161 </assert_stdout>
194 <output name="anndata" value="import.loom.krumsiek11.h5ad" ftype="h5ad" compare="sim_size"/> 162 <output name="anndata" ftype="h5ad">
163 <assert_contents>
164 <has_h5_keys keys="obs/cell_type"/>
165 <has_h5_keys keys="obs/obs_names"/>
166 <has_h5_keys keys="var/var_names"/>
167 </assert_contents>
168 </output>
195 </test> 169 </test>
196 <test expect_num_outputs="1"> 170 <test expect_num_outputs="1">
197 <conditional name="in"> 171 <conditional name="in">
198 <param name="adata_format" value="tabular"/> 172 <param name="adata_format" value="tabular"/>
199 <param name="input" value="adata.csv"/> 173 <param name="input" value="adata.csv"/>
201 </conditional> 175 </conditional>
202 <assert_stdout> 176 <assert_stdout>
203 <has_text_matching expression="ad.read_csv"/> 177 <has_text_matching expression="ad.read_csv"/>
204 <has_text_matching expression="delimiter=','"/> 178 <has_text_matching expression="delimiter=','"/>
205 <has_text_matching expression="first_column_names=True"/> 179 <has_text_matching expression="first_column_names=True"/>
206 </assert_stdout> 180 <has_text_matching expression="3 × 2"/>
207 <output name="anndata" value="import.csv.h5ad" ftype="h5ad" compare="sim_size"/> 181 </assert_stdout>
208 </test> 182 </test>
209 <test expect_num_outputs="1"> 183 <test expect_num_outputs="1">
210 <conditional name="in"> 184 <conditional name="in">
211 <param name="adata_format" value="tabular"/> 185 <param name="adata_format" value="tabular"/>
212 <param name="input" value="adata.tsv"/> 186 <param name="input" value="adata.tsv"/>
214 </conditional> 188 </conditional>
215 <assert_stdout> 189 <assert_stdout>
216 <has_text_matching expression="ad.read_csv"/> 190 <has_text_matching expression="ad.read_csv"/>
217 <has_text_matching expression="delimiter='\\t'"/> 191 <has_text_matching expression="delimiter='\\t'"/>
218 <has_text_matching expression="first_column_names=True"/> 192 <has_text_matching expression="first_column_names=True"/>
219 </assert_stdout> 193 <has_text_matching expression="3 × 2"/>
220 <output name="anndata" value="import.tsv.h5ad" ftype="h5ad" compare="sim_size"/> 194 </assert_stdout>
221 </test> 195 </test>
222 <test expect_num_outputs="1"> 196 <test expect_num_outputs="1">
223 <conditional name="in"> 197 <conditional name="in">
224 <param name="adata_format" value="mtx"/> 198 <param name="adata_format" value="mtx"/>
225 <param name="matrix" value="matrix_10x_v1.2.0.mtx"/> 199 <param name="matrix" value="matrix_10x_v1.2.0.mtx"/>
226 <conditional name="tenx"> 200 <conditional name="tenx">
227 <param name="use" value="no"/> 201 <param name="use" value="no"/>
228 </conditional> 202 </conditional>
229 </conditional> 203 </conditional>
230 <output name="anndata" value="import.mtx.no_10x.h5ad" ftype="h5ad" compare="sim_size"/> 204 <assert_stdout>
205 <has_text_matching expression="343 × 12"/>
206 </assert_stdout>
231 </test> 207 </test>
232 <test expect_num_outputs="1"> 208 <test expect_num_outputs="1">
233 <conditional name="in"> 209 <conditional name="in">
234 <param name="adata_format" value="mtx"/> 210 <param name="adata_format" value="mtx"/>
235 <param name="matrix" value="matrix_10x_v1.2.0.mtx"/> 211 <param name="matrix" value="matrix_10x_v1.2.0.mtx"/>
240 <param name="var_names" value="gene_symbols"/> 216 <param name="var_names" value="gene_symbols"/>
241 <param name="make_unique" value="true"/> 217 <param name="make_unique" value="true"/>
242 <param name="gex_only" value="true"/> 218 <param name="gex_only" value="true"/>
243 </conditional> 219 </conditional>
244 </conditional> 220 </conditional>
245 <output name="anndata" value="import.mtx.legacy_10x.h5ad" ftype="h5ad" compare="sim_size"/> 221 <assert_stdout>
222 <has_text_matching expression="12 × 343"/>
223 </assert_stdout>
224 <output name="anndata" ftype="h5ad">
225 <assert_contents>
226 <has_h5_keys keys="var/gene_ids"/>
227 </assert_contents>
228 </output>
246 </test> 229 </test>
247 <test expect_num_outputs="1"> 230 <test expect_num_outputs="1">
248 <conditional name="in"> 231 <conditional name="in">
249 <param name="adata_format" value="mtx"/> 232 <param name="adata_format" value="mtx"/>
250 <param name="matrix" value="matrix_10x_v3.0.0.mtx"/> 233 <param name="matrix" value="matrix_10x_v3.0.0.mtx"/>
255 <param name="var_names" value="gene_symbols"/> 238 <param name="var_names" value="gene_symbols"/>
256 <param name="make_unique" value="true"/> 239 <param name="make_unique" value="true"/>
257 <param name="gex_only" value="true"/> 240 <param name="gex_only" value="true"/>
258 </conditional> 241 </conditional>
259 </conditional> 242 </conditional>
260 <output name="anndata" value="import.mtx.v3_10x.h5ad" ftype="h5ad" compare="sim_size"/> 243 <assert_stdout>
261 </test> 244 <has_text_matching expression="1107 × 507"/>
262 <test expect_num_outputs="1"> 245 </assert_stdout>
263 <param name="filetype" value="anndata"/> 246 <output name="anndata" ftype="h5ad">
247 <assert_contents>
248 <has_h5_keys keys="var/gene_ids"/>
249 <has_h5_keys keys="var/feature_types"/>
250 </assert_contents>
251 </output>
252 </test>
253 <test expect_num_outputs="1">
264 <conditional name="in"> 254 <conditional name="in">
265 <param name="adata_format" value="umi_tools"/> 255 <param name="adata_format" value="umi_tools"/>
266 <param name="input" value="umi_tools.tsv"/> 256 <param name="input" value="umi_tools.tsv"/>
267 </conditional> 257 </conditional>
268 <output name="anndata" value="import.umi_tools.h5ad" ftype="h5ad" compare="sim_size"/> 258 <assert_stdout>
269 </test> 259 <has_text_matching expression="2 × 13"/>
270 <test expect_num_outputs="1"> 260 </assert_stdout>
271 <param name="filetype" value="loom"/>
272 <param name="mainmatrix" value="firstlayer.tsv"/>
273 <param name="other_files" value="secondlayer.tsv"/>
274 <param name="coldata" value="cols.tsv"/>
275 <param name="rowdata" value="rows.tsv"/>
276 <output name="loomdata" value="converted.loom.test" ftype="loom" compare="sim_size"/>
277 </test> 261 </test>
278 <test expect_num_outputs="1"><!-- 10x h5 test --> 262 <test expect_num_outputs="1"><!-- 10x h5 test -->
279 <conditional name="hd5_format"> 263 <conditional name="in">
280 <param name="filetype" value="anndata"/> 264 <param name="adata_format" value="10x_h5"/>
281 <conditional name="in"> 265 <param name="input" value="dropletutils_input.h5"/>
282 <param name="adata_format" value="10x_h5"/>
283 <param name="input" value="dropletutils_input.h5"/>
284 </conditional>
285 </conditional> 266 </conditional>
286 <output name="anndata"> 267 <output name="anndata">
287 <assert_contents> 268 <assert_contents>
288 <has_text text="HDF"/> 269 <has_text text="HDF"/>
289 <has_text text="ENSG00000258728" /> 270 <has_text text="ENSG00000258728" />
294 </tests> 275 </tests>
295 <help><![CDATA[ 276 <help><![CDATA[
296 277
297 **What it does** 278 **What it does**
298 279
299 This tool creates an AnnData or loom dataset from several input types: 280 This tool creates an AnnData from several input types:
300 281
301 - Loom (`read_loom method <https://anndata.readthedocs.io/en/latest/generated/anndata.read_loom.html>`__) 282 - Loom (`read_loom method <https://anndata.readthedocs.io/en/latest/generated/anndata.read_loom.html>`__)
302 - Tabular (`read_csv method <https://anndata.readthedocs.io/en/latest/generated/anndata.read_csv.html>`__) 283 - Tabular (`read_csv method <https://anndata.readthedocs.io/en/latest/generated/anndata.read_csv.html>`__)
303 - Matrix Market (mtx), from Cell ranger or not (`read_mtx method <https://anndata.readthedocs.io/en/latest/generated/anndata.read_mtx.html>`__) 284 - Matrix Market (mtx), from Cell ranger or not (`read_mtx method <https://anndata.readthedocs.io/en/latest/generated/anndata.read_mtx.html>`__)
304 - UMI tools (`read_umi_tools method <https://anndata.readthedocs.io/en/latest/generated/anndata.read_umi_tools.html>`__) 285 - UMI tools (`read_umi_tools method <https://anndata.readthedocs.io/en/latest/generated/anndata.read_umi_tools.html>`__)