@@ -652,11 +652,15 @@ def _run_interface(self, runtime):
652652                metadata_file  =  os .path .abspath ('component_metadata.tsv' )
653653            else :
654654                metadata_file  =  save_metadata 
655+             components_names  =  np .array (dtype = 'object_' ,
656+                 object = ['dropped'  for  i  in  range (len (metadata ['mask' ]))])
657+             components_names [np .where (metadata ['retained' ])] =  (
658+                 components_header )
655659            self ._results ['metadata_file' ] =  metadata_file 
656660            with  open (metadata_file , 'w' ) as  f :
657661                f .write ('{}\t {}\t {}\t {}\t {}\n ' .format ('component' ,
658662                        * list (metadata .keys ())))
659-                 for  i  in  zip (components_header , * metadata .values ()):
663+                 for  i  in  zip (components_names , * metadata .values ()):
660664                    f .write ('{0[0]}\t {0[1]}\t {0[2]:.10f}\t ' 
661665                            '{0[3]:.10f}\t {0[4]:.10f}\n ' .format (i ))
662666
@@ -1296,23 +1300,30 @@ def compute_noise_components(imgseries, mask_images, components_criterion=0.5,
12961300        if  components  is  None :
12971301            components  =  u [:, :num_components ]
12981302            metadata  =  OrderedDict ()
1299-             metadata ['mask' ] =  np .array ([i ] *  num_components )
1300-             metadata ['singular_value' ] =  s [: num_components ] 
1301-             metadata ['variance_explained' ] =  variance_explained [: num_components ] 
1303+             metadata ['mask' ] =  np .array ([i ] *  len ( s ) )
1304+             metadata ['singular_value' ] =  s 
1305+             metadata ['variance_explained' ] =  variance_explained 
13021306            metadata ['cumulative_variance_explained' ] =  (
1303-                 cumulative_variance_explained [:num_components ])
1307+                 cumulative_variance_explained )
1308+             metadata ['retained' ] =  np .array (
1309+                 [True  if  i  <  num_components 
1310+                  else  False  for  i  in  range (len (s ))], dtype = 'bool' )
13041311        else :
13051312            components  =  np .hstack ((components , u [:, :num_components ]))
13061313            metadata ['mask' ] =  np .hstack ((metadata ['mask' ],
1307-                                           [i ] *  num_components ))
1314+                                           [i ] *  len ( s ) ))
13081315            metadata ['singular_value' ] =  (
1309-                 np .hstack ((metadata ['singular_value' ], s [: num_components ] )))
1316+                 np .hstack ((metadata ['singular_value' ], s )))
13101317            metadata ['variance_explained' ] =  (
13111318                np .hstack ((metadata ['variance_explained' ],
1312-                            variance_explained [: num_components ] )))
1319+                            variance_explained )))
13131320            metadata ['cumulative_variance_explained' ] =  (
13141321                np .hstack ((metadata ['cumulative_variance_explained' ],
1315-                            cumulative_variance_explained [:num_components ])))
1322+                            cumulative_variance_explained )))
1323+             metadata ['retained' ] =  np .hstack ((metadata ['retained' ],
1324+                                               [True  if  i  <  num_components 
1325+                                                else  False 
1326+                                                for  i  in  range (len (s ))]))
13161327    if  components  is  None  and  num_components  !=  0 :
13171328        if  self .inputs .failure_mode  ==  'error' :
13181329            raise  ValueError ('No components found' )
0 commit comments