2424from ..external .due import BibTeX
2525from ..interfaces .base import (traits , TraitedSpec , BaseInterface ,
2626 BaseInterfaceInputSpec , File , isdefined ,
27- InputMultiPath , OutputMultiPath ,
28- SimpleInterface )
27+ InputMultiPath , OutputMultiPath )
2928from ..utils import NUMPY_MMAP
3029from ..utils .misc import normalize_mc_params
3130
@@ -463,7 +462,7 @@ class CompCorOutputSpec(TraitedSpec):
463462 metadata_file = File (desc = 'text file containing component metadata' )
464463
465464
466- class CompCor (SimpleInterface ):
465+ class CompCor (BaseInterface ):
467466 """
468467 Interface with core CompCor computation, used in aCompCor and tCompCor
469468
@@ -610,17 +609,9 @@ def _run_interface(self, runtime):
610609 delimiter = '\t ' ,
611610 header = '\t ' .join (components_header ),
612611 comments = '' )
613- self ._results ['components_file' ] = os .path .abspath (
614- self .inputs .components_file )
615612
616- save_pre_filter = self .inputs .save_pre_filter
617- if save_pre_filter :
618- if isinstance (save_pre_filter , bool ):
619- pre_filter_file = os .path .abspath ('pre_filter.tsv' )
620- else :
621- pre_filter_file = save_pre_filter
622- self ._results ['pre_filter_file' ] = pre_filter_file
623- if self .inputs .pre_filter and save_pre_filter :
613+ if self .inputs .pre_filter and self .inputs .save_pre_filter :
614+ pre_filter_file = self ._list_outputs ()['pre_filter_file' ]
624615 ftype = {
625616 'polynomial' : 'Legendre' ,
626617 'cosine' : 'Cosine'
@@ -647,20 +638,15 @@ def _run_interface(self, runtime):
647638 header = '\t ' .join (header ),
648639 comments = '' )
649640
650- save_metadata = self .inputs .save_metadata
651- if save_metadata :
652- if isinstance (save_metadata , bool ):
653- metadata_file = os .path .abspath ('component_metadata.tsv' )
654- else :
655- metadata_file = save_metadata
641+ if self .inputs .save_metadata :
642+ metadata_file = self ._list_outputs ()['metadata_file' ]
656643 components_names = np .empty (len (metadata ['mask' ]),
657644 dtype = 'object_' )
658645 retained = np .where (metadata ['retained' ])
659646 not_retained = np .where (np .logical_not (metadata ['retained' ]))
660647 components_names [retained ] = components_header
661648 components_names [not_retained ] = ([
662649 'dropped{}' .format (i ) for i in range (len (not_retained [0 ]))])
663- self ._results ['metadata_file' ] = metadata_file
664650 with open (metadata_file , 'w' ) as f :
665651 f .write ('{}\t {}\t {}\t {}\t {}\n ' .format ('component' ,
666652 * list (metadata .keys ())))
@@ -673,6 +659,26 @@ def _run_interface(self, runtime):
673659 def _process_masks (self , mask_images , timeseries = None ):
674660 return mask_images
675661
662+ def _list_outputs (self ):
663+
664+ outputs = self ._outputs ().get ()
665+ outputs ['components_file' ] = os .path .abspath (
666+ self .inputs .components_file )
667+
668+ save_pre_filter = self .inputs .save_pre_filter
669+ if save_pre_filter :
670+ if isinstance (save_pre_filter , bool ):
671+ save_pre_filter = os .path .abspath ('pre_filter.tsv' )
672+ outputs ['pre_filter_file' ] = save_pre_filter
673+
674+ save_metadata = self .inputs .save_metadata
675+ if save_metadata :
676+ if isinstance (save_metadata , bool ):
677+ save_metadata = os .path .abspath ('component_metadata.tsv' )
678+ outputs ['metadata_file' ] = save_metadata
679+
680+ return outputs
681+
676682 def _make_headers (self , num_col ):
677683 header = self .inputs .header_prefix if \
678684 isdefined (self .inputs .header_prefix ) else self ._header
0 commit comments