<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _process_gxd_genotype_summary_view(self, limit=None):
 """ Add the genotype internal id to mgiid mapping to the idhashmap. Also, add them as individuals to the graph. We re-format the label to put the background strain in brackets after the gvc. We must pass through the file once to get the ids and aggregate the vslcs into a hashmap into the genotype Triples created: <genotype id> a GENO:intrinsic_genotype <genotype id> rdfs:label "<gvc> [bkgd]" :param limit: :return: """

        if self.test_mode:
            graph = self.testgraph
        else:
            graph = self.graph

        model = Model(graph)
        line_counter = 0
        geno_hash = {}
        raw = '/'.join((self.rawdir, 'gxd_genotype_summary_view'))
        LOG.info("building labels for genotypes")
        with open(raw, 'r') as f:
            f.readline()  # read the header row; skip
            for line in f:
                line = line.rstrip("\n")
                line_counter += 1

                (object_key, preferred, mgiid, subtype,
                 short_description) = line.split('\t')

                if self.test_mode is True:
                    if int(object_key) not in self.test_keys.get('genotype'):
                        continue

                # add the internal genotype to mgi mapping
                self.idhash['genotype'][object_key] = mgiid

                if preferred == '1':
                    d = re.sub(r'\,', '/', short_description.strip())
                    if mgiid not in geno_hash:
                        geno_hash[mgiid] = {'vslcs': [d], 'subtype': subtype,
                                            'key': object_key}
                    else:
                        vslcs = geno_hash[mgiid].get('vslcs')
                        vslcs.append(d)
                else:
                    pass
                    # TODO what to do with != preferred

                if not self.test_mode and limit is not None and line_counter > limit:
                    break

        # now, loop through the hash and add the genotypes as individuals
        # we add the mgi genotype as a synonym
        # (we generate our own label later)
        geno = Genotype(graph)
        for gt in geno_hash:
            genotype = geno_hash.get(gt)
            gvc = sorted(genotype.get('vslcs'))
            label = '; '.join(gvc) + ' [' + genotype.get('subtype') + ']'
            geno.addGenotype(gt, None)
            model.addComment(gt, self._makeInternalIdentifier(
                'genotype', genotype.get('key')))
            model.addSynonym(gt, label.strip())

        return