def get_variant_genotypes(self, variant):
        """Get the genotypes from a well formed variant instance.

        Args:
            marker (Variant): A Variant instance.

        Returns:
            A list of Genotypes instance containing a pointer to the variant as
            well as a vector of encoded genotypes.

        """
        if not self.has_index:
            raise NotImplementedError("Not implemented when IMPUTE2 file is "
                                      "not indexed (see genipe)")

        # Find the variant in the index
        try:
            impute2_chrom = CHROM_STR_TO_INT[variant.chrom.name]
        except KeyError:
            raise ValueError(
                "Invalid chromosome ('{}') for IMPUTE2.".format(variant.chrom)
            )

        variant_info = self._impute2_index[
            (self._impute2_index.chrom == impute2_chrom) &
            (self._impute2_index.pos == variant.pos)
        ]

        if variant_info.shape[0] == 0:
            logging.variant_not_found(variant)
            return []

        elif variant_info.shape[0] == 1:
            return self._get_biallelic_variant(variant, variant_info)

        else:
            return self._get_multialleic_variant(variant, variant_info)
Get the genotypes from a well formed variant instance.

        Args:
            marker (Variant): A Variant instance.

        Returns:
            A list of Genotypes instance containing a pointer to the variant as
            well as a vector of encoded genotypes.