return a column from the block as dictionary indexed by seq. name.

    :param position:  the index to extract from the block; must be absolute
                      coordinates (i.e. between self.start and self.end, not
                      inclusive of the end).
    :param miss_seqs: how to treat sequence with no actual sequence data for
                      the column.
    :return: dictionary where keys are sequence names and values are
             nucleotides (raw strings).

def get_column_absolute(self, position,
                          miss_seqs=MissingSequenceHandler.TREAT_AS_ALL_GAPS,
                          species=None):
    """
    return a column from the block as dictionary indexed by seq. name.

    :param position:  the index to extract from the block; must be absolute
                      coordinates (i.e. between self.start and self.end, not
                      inclusive of the end).
    :param miss_seqs: how to treat sequence with no actual sequence data for
                      the column.
    :return: dictionary where keys are sequence names and values are
             nucleotides (raw strings).
    """
    if position < self.start or position >= self.end:
      raise ValueError("getting column at genomic locus " + self._chrom + " " +
                       str(position) + " failed; locus is outside of genome " +
                       "alignment block")

    rel_coord = self.sequence_to_alignment_coords(self.reference_sequence_name,
                                                  position, position + 1)
    assert(len(rel_coord) == 1)
    rel_start, rel_end = rel_coord[0]
    assert(rel_end == rel_start + 1)
    raw_col = self.get_column(rel_start, miss_seqs)

    if species is None:
      return raw_col
    res = {}
    for k in raw_col:
      name_parts = k.split(".")
      if name_parts[0] in species:
        res[k] = raw_col[k]
    return res