def c_to_g(self, var_c, alt_ac, alt_aln_method=hgvs.global_config.mapping.alt_aln_method):
if not (var_c.type == "<STR_LIT:c>"):<EOL><INDENT>raise HGVSInvalidVariantError("<STR_LIT>" + str(var_c))<EOL><DEDENT>if self._validator:<EOL><INDENT>self._validator.validate(var_c)<EOL><DEDENT>var_c.fill_ref(self.hdp)<EOL>tm = self._fetch_AlignmentMapper(<EOL>tx_ac=var_c.ac, alt_ac=alt_ac, alt_aln_method=alt_aln_method)<EOL>pos_g = tm.c_to_g(var_c.posedit.pos)<EOL>if not pos_g.uncertain:<EOL><INDENT>edit_g = self._convert_edit_check_strand(tm.strand, var_c.posedit.edit)<EOL>if edit_g.type == '<STR_LIT>' and pos_g.end - pos_g.start > <NUM_LIT:1>:<EOL><INDENT>pos_g.start.base += <NUM_LIT:1><EOL>pos_g.end.base -= <NUM_LIT:1><EOL>edit_g.ref = '<STR_LIT>'<EOL><DEDENT><DEDENT>else:<EOL><INDENT>var_n = copy.deepcopy(var_c)<EOL>var_n.posedit.pos = tm.c_to_n(var_c.posedit.pos)<EOL>var_n.type = '<STR_LIT:n>'<EOL>pos_n = tm.g_to_n(pos_g)<EOL>edit_g = hgvs.edit.NARefAlt(<EOL>ref='<STR_LIT>', alt=self._get_altered_sequence(tm.strand, pos_n, var_n))<EOL><DEDENT>pos_g.uncertain = var_c.posedit.pos.uncertain<EOL>var_g = hgvs.sequencevariant.SequenceVariant(<EOL>ac=alt_ac, type="<STR_LIT:g>", posedit=hgvs.posedit.PosEdit(pos_g, edit_g))<EOL>if self.replace_reference:<EOL><INDENT>self._replace_reference(var_g)<EOL><DEDENT>return var_g<EOL>
Given a parsed c. variant, return a g. variant on the specified
        transcript using the specified alignment method (default is
        "splign" from NCBI).

        :param hgvs.sequencevariant.SequenceVariant var_c: a variant object
        :param str alt_ac: a reference sequence accession (e.g., NC_000001.11)
        :param str alt_aln_method: the alignment method; valid values depend on data source
        :returns: variant object (:class:`hgvs.sequencevariant.SequenceVariant`)
        :raises HGVSInvalidVariantError: if var_c is not of type "c"