def find_omim_type(self):
        '''
        This f(x) needs to be rehomed and shared.
        Use OMIM's discription of their identifiers
        to heuristically partition them into genes | phenotypes-diseases
        type could be
            - `obsolete`  Check `omim_replaced`  populated as side effect
            - 'Suspected' (phenotype)  Ignoring thus far
            - 'gene'
            - 'Phenotype'
            - 'heritable_phenotypic_marker'   Probable phenotype
            - 'has_affected_feature'  Use as both a gene and a phenotype

        :return hash of omim_number to ontology_curie
        '''
        myfile = '/'.join((self.rawdir, self.files['mimtitles']['file']))
        LOG.info("Looping over: %s", myfile)
        omim_type = {}

        col = [
            'Prefix',                           # prefix
            'Mim Number',                       # omim_id
            'Preferred Title; symbol',          # pref_label
            'Alternative Title(s); symbol(s)',  # alt_label
            'Included Title(s); symbols'        # inc_label
        ]

        with open(myfile, 'r') as fh:
            reader = csv.reader(fh, delimiter='\t')
            # Copyright (c) ...
            header = next(reader)
            # Generated: 2018-11-29
            header = next(reader)
            # date_generated = header[0].split(':')[1].strip()
            header = next(reader)
            header[0] = header[0][2:]
            if header != col:
                LOG.error(
                    'Header is not as expected: %s',
                    set(header).symmetric_difference(set(col)))
                exit(-1)

            for row in reader:
                if row[0][0] == '#':
                    continue
                prefix = row[col.index('Prefix')]
                pref_label = row[col.index('Preferred Title; symbol')]
                omim_id = row[col.index('Mim Number')]

                if prefix == 'Caret':  # moved|removed|split -> moved twice
                    # populating a dict from an omim to a set of omims
                    # here as a side effect which is less than ideal

                    destination = pref_label  # they overload the column semantics
                    if destination[:9] == 'MOVED TO ':
                        token = destination.split(' ')
                        rep = token[2]
                        if not re.match(r'^[0-9]{6}$', rep):
                            LOG.error(
                                'Malformed omim replacement %s in %s  line %i',
                                rep, myfile, reader.line_num)
                            # clean up oddities I know about
                            if rep[0] == '{' and rep[7] == '}':
                                rep = rep[1:6]
                            if len(rep) == 7 and rep[6] == ',':
                                rep = rep[:5]
                        # asuming splits are typically to both gene & phenotype
                        if len(token) > 3:
                            self.omim_replaced[omim_id] = {rep, token[4]}
                        else:
                            self.omim_replaced[omim_id] = {rep}
                elif prefix == 'Asterisk':  # declared as gene
                    omim_type[omim_id] = self.globaltt['gene']
                elif prefix == 'NULL':
                    #  potential model of disease?
                    omim_type[omim_id] = self.globaltt['Suspected']   # NCIT:C71458
                elif prefix == 'Number Sign':
                    omim_type[omim_id] = self.globaltt['Phenotype']
                elif prefix == 'Percent':
                    omim_type[omim_id] = self.globaltt['heritable_phenotypic_marker']
                elif prefix == 'Plus':
                    # to be interperted as  a gene and/or a phenotype
                    omim_type[omim_id] = self.globaltt['has_affected_feature']
                else:
                    LOG.error('Unknown OMIM type line %i', reader.line_num)
        return omim_type
This f(x) needs to be rehomed and shared.
        Use OMIM's discription of their identifiers
        to heuristically partition them into genes | phenotypes-diseases
        type could be
            - `obsolete`  Check `omim_replaced`  populated as side effect
            - 'Suspected' (phenotype)  Ignoring thus far
            - 'gene'
            - 'Phenotype'
            - 'heritable_phenotypic_marker'   Probable phenotype
            - 'has_affected_feature'  Use as both a gene and a phenotype

        :return hash of omim_number to ontology_curie