From 42e6456d753c8cf0561ad5d4d93a2c56777c8d8d Mon Sep 17 00:00:00 2001
From: pcamach2 <49655443+pcamach2@users.noreply.github.com>
Date: Sat, 23 Apr 2022 19:12:22 -0500
Subject: [PATCH] Add FastSurfer argument to

Adds FastSurfer argument to support FastSurfer as a surface processing option (https://github.com/nipreps/smriprep/issues/278)
---
 smriprep/cli/run.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/smriprep/cli/run.py b/smriprep/cli/run.py
index 4a588283f8..a03cb1f489 100644
--- a/smriprep/cli/run.py
+++ b/smriprep/cli/run.py
@@ -222,6 +222,14 @@ def get_parser():
         dest="hires",
         help="disable sub-millimeter (hires) reconstruction",
     )
+    
+    g_surfs_xor.add_argument(
+        "--fastsurfer-recon",
+        action="store_true",
+        dest="run_fastsurfer",
+        help="enable FastSurfer surface preprocessing.",
+    )
+    
     g_surfs_xor = g_surfs.add_mutually_exclusive_group()
 
     g_surfs_xor.add_argument(
@@ -394,6 +402,17 @@ def _warn_redirect(message, category, filename, lineno, file=None, line=None):
             from templateflow import api
             from niworkflows.utils.misc import _copy_any
 
+            dseg_tsv = str(api.get("fsaverage", suffix="dseg", extension=[".tsv"]))
+            _copy_any(
+                dseg_tsv, str(Path(output_dir) / "smriprep" / "desc-aseg_dseg.tsv")
+            )
+            _copy_any(
+                dseg_tsv, str(Path(output_dir) / "smriprep" / "desc-aparcaseg_dseg.tsv")
+            )
+        elif opts.run_fastsurfer:
+            from templateflow import api
+            from niworkflows.utils.misc import _copy_any
+
             dseg_tsv = str(api.get("fsaverage", suffix="dseg", extension=[".tsv"]))
             _copy_any(
                 dseg_tsv, str(Path(output_dir) / "smriprep" / "desc-aseg_dseg.tsv")
@@ -584,6 +603,7 @@ def build_workflow(opts, retval):
         freesurfer=opts.run_reconall,
         fs_subjects_dir=opts.fs_subjects_dir,
         hires=opts.hires,
+        fastsurfer=opts.run_fastsurfer,
         layout=layout,
         longitudinal=opts.longitudinal,
         low_mem=opts.low_mem,