Example #1
0
 def info(self, tile_axes = None, check_extensions = True):
   s = self.__str__() + '\n';
   
   l = np.max([len(k) for k in self.file_type_to_name]);
   l = '%' + '%d' % l + 's';         
       
   for k,v in self.file_type_to_name.items():
     if len(te.Expression(v).tags) > 0:
       if check_extensions:
         files = self.file_list(k, extension='*');
         extensions = [io.file_extension(f) for f in files];
         extensions = np.unique(extensions);
         #print(extensions)
       else:
         extensions = [self.extension(k)];
       
       if len(extensions) == 0:
         s += l % k + ': no file\n';
       else:
         kk = k;
         for extension in extensions:
           expression = te.Expression(self.filename(k, extension=extension));
           tag_names = expression.tag_names();
           if tile_axes is None:
             tile_axes_ = tag_names;
           else:
             tile_axes_ = tile_axes;
           for n in tile_axes_:
             if not n in tag_names:
               raise ValueError('The expression does not have the named pattern %s' % n);
           for n in tag_names:
             if not n in tile_axes_:
               raise ValueError('The expression has the named pattern %s that is not in tile_axes=%r' % (n, tile_axes_));
           
           #construct tiling
           files = io.file_list(expression);
           if len(files) > 0:
             tile_positions = [expression.values(f) for f in files];
             tile_positions = [tuple(tv[n] for n in tile_axes_) for tv in tile_positions];
             tile_lower = tuple(np.min(tile_positions, axis = 0)); 
             tile_upper = tuple(np.max(tile_positions, axis = 0));
             tag_names = tuple(tag_names);
             
             if kk is not None:
               s += (l % kk) + ': ' 
               kk = None;
             else:
               s += (l % '') + '  '
             s+= ('%s {%d files, %r: %r -> %r}' % (expression.string()[len(self.directory)+1:], len(files), tag_names, tile_lower, tile_upper)) + '\n';   
     
     else:
       fname = self.filename(k);
       files = [];
       if io.is_file(fname):
         files += [fname];
       fname = self.filename(k, postfix = '*');
       files += io.file_list(fname);
       if len(files) > 0:
         files = [f[len(self.directory)+1:] for f in files]
         
         s += l % k + ': ' + files[0] + '\n'
         for f in files[1:]:
           s += l % '' + '  ' + f + '\n'
       else:
         s += l % k + ': no file\n';        
                   
   print(s);
Example #2
0
 def file_list(self, ftype, file_type_to_name = None, directory = None, expression = None, values = None, prefix = None, extension = None, debug = None, **kwargs):
   filename = self.filename(ftype=ftype,  file_type_to_name=file_type_to_name,
                            directory=directory, expression=expression,
                            values=values, prefix=prefix, extension=extension,
                            debug=debug, **kwargs)
   return io.file_list(filename);