def load_projections_from_path(p):
p = dirpath_to_list(p)<EOL>return pyr.pmap(<EOL>{h:pimms.lazy_map(<EOL>{parts[<NUM_LIT:1>]: curry(lambda flnm,h: load_map_projection(flnm, chirality=h),<EOL>os.path.join(pp, fl), h)<EOL>for pp    in p<EOL>for fl    in os.listdir(pp)  if fl.endswith('<STR_LIT>') or fl.endswith('<STR_LIT>')<EOL>for parts in [fl.split('<STR_LIT:.>')] if len(parts) > <NUM_LIT:2> and parts[<NUM_LIT:0>] == h})<EOL>for h in ('<STR_LIT>','<STR_LIT>','<STR_LIT>')})<EOL>
load_projections_from_path(p) yields a lazy-map of all the map projection files found in the
  given path specification p. The path specification may be either a directory name, a
  :-separated list of directory names, or a python list of directory names.

In order to be included in the returned mapping of projections, a projection must have a
filename that matches the following format:
  <hemi>.<name>[.mp | .map | .projection | <nothing>].json[.gz]
For example, the following match:
  lh.occipital_pole.mp.json    => map_projections['lh']['occipital_pole']
  rh.frontal.json.gz           => map_projections['rh']['frontal']
  lr.motor.projection.json.gz  => map_projections['lr']['motor']