code: def get_components_for_species( alignment, species ):
      
      # If the number of components in the alignment is less that the requested number
      # of species we can immediately fail
      if len( alignment.components ) < len( species ): return None
      # Otherwise, build an index of components by species, then lookup 
      index = dict( [ ( c.src.split( '.' )[0], c ) for c in alignment.components ] )
      try: return [ index[s] for s in species ]
      except: return None
docs: Return the component for each species in the list `species` or None