diff --git a/bin/dim_reduction/sc_dim_reduction.py b/bin/dim_reduction/sc_dim_reduction.py index 6953096..18331cb 100755 --- a/bin/dim_reduction/sc_dim_reduction.py +++ b/bin/dim_reduction/sc_dim_reduction.py @@ -38,7 +38,7 @@ ) parser.add_argument( - "-s", "--svd-solver", + "-v", "--svd-solver", type=str, action="store", dest="svd_solver", @@ -72,6 +72,15 @@ help="Use the MulticoreTSNE package by D. Ulyanov if it is installed." ) +parser.add_argument( + "-s", "--seed", + type=int, + action="store", + dest="seed", + default=0, + help="Use this integer seed for reproducibility." +) + args = parser.parse_args() # Define the arguments properly diff --git a/bin/nn/sc_neighborhood_graph.py b/bin/nn/sc_neighborhood_graph.py old mode 100644 new mode 100755 index bc31174..f207d8c --- a/bin/nn/sc_neighborhood_graph.py +++ b/bin/nn/sc_neighborhood_graph.py @@ -37,6 +37,16 @@ help="Use this many PCs. If n_pcs==0 use .X if use_rep is None." ) +parser.add_argument( + "-s", "--seed", + type=int, + action="store", + dest="seed", + default=0, + help="Use this integer seed for reproducibility." +) + + args = parser.parse_args() # Define the arguments properly @@ -57,7 +67,8 @@ sc.pp.neighbors( adata=adata, n_neighbors=args.n_neighbors, - n_pcs=args.n_pcs + n_pcs=args.n_pcs, + random_state=args.seed ) # I/O diff --git a/processes/dim_reduction.nf b/processes/dim_reduction.nf index 71cae59..c52aabc 100644 --- a/processes/dim_reduction.nf +++ b/processes/dim_reduction.nf @@ -94,7 +94,8 @@ process SC__SCANPY__DIM_REDUCTION { tuple \ val(sampleId), \ path("${sampleId}.SC__SCANPY__DIM_REDUCTION_${method}.${!isParamNull(stashedParams) ? uuid + '.' : ''}${processParams.off}"), \ - val(stashedParams) + val(stashedParams), \ + val(nComps) script: def sampleParams = params.parseConfig(sampleId, params.global, params.sc.scanpy.dim_reduction.get(params.method)) @@ -110,6 +111,7 @@ process SC__SCANPY__DIM_REDUCTION { _processParams.setConfigParams(processParams) """ ${binDir}dim_reduction/sc_dim_reduction.py \ + ${'--seed ' + (params.global.containsKey('seed') ? params.global.seed: params.seed)} \ --method ${processParams.dimReductionMethod} \ ${(processParams.containsKey('svdSolver')) ? '--svd-solver ' + processParams.svdSolver : ''} \ ${(processParams.containsKey('nNeighbors')) ? '--n-neighbors ' + processParams.nNeighbors : ''} \ diff --git a/processes/neighborhood_graph.nf b/processes/neighborhood_graph.nf index 32b78ff..6bc81a9 100644 --- a/processes/neighborhood_graph.nf +++ b/processes/neighborhood_graph.nf @@ -88,8 +88,9 @@ process SC__SCANPY__NEIGHBORHOOD_GRAPH { output: tuple \ val(sampleId), \ - path("${sampleId}.SC__SCANPY__NEIGHBORHOOD_GRAPH.${processParams.off}") \ - val(stashedParams) + path("${sampleId}.SC__SCANPY__NEIGHBORHOOD_GRAPH.${processParams.off}"), \ + val(stashedParams), + val(nComps) script: def sampleParams = params.parseConfig(sampleId, params.global, params.sc.scanpy.filter) @@ -103,9 +104,10 @@ process SC__SCANPY__NEIGHBORHOOD_GRAPH { _processParams.setEnv(this) _processParams.setConfigParams(processParams) """ - ${binDir}cluster/sc_neighborhood_graph.py \ + ${binDir}nn/sc_neighborhood_graph.py \ $f \ ${sampleId}.SC__SCANPY__NEIGHBORHOOD_GRAPH.${processParams.off} \ + ${'--seed ' + (params.global.containsKey('seed') ? params.global.seed: params.seed)} \ ${(processParams.containsKey('nNeighbors')) ? '--n-neighbors ' + processParams.nNeighbors : ''} \ ${_processParams.getNCompsAsArgument(nComps)} """ diff --git a/workflows/cluster_identification.nf b/workflows/cluster_identification.nf index 20a55ae..59711d7 100644 --- a/workflows/cluster_identification.nf +++ b/workflows/cluster_identification.nf @@ -3,7 +3,7 @@ nextflow.preview.dsl=2 ////////////////////////////////////////////////////// // process imports: -include '../../utils/processes/utils.nf' +include '../../utils/processes/utils.nf' params(params) // scanpy: include '../processes/cluster' params(params)