def update(self):
        '''Update definitions.'''
        # Download http://rebase.neb.com/rebase/link_withref to tmp
        self._tmpdir = tempfile.mkdtemp()
        try:
            self._rebase_file = self._tmpdir + '/rebase_file'
            print 'Downloading latest enzyme definitions'
            url = 'http://rebase.neb.com/rebase/link_withref'
            header = {'User-Agent': 'Mozilla/5.0'}
            req = urllib2.Request(url, headers=header)
            con = urllib2.urlopen(req)
            with open(self._rebase_file, 'wb') as rebase_file:
                rebase_file.write(con.read())
            # Process into self._enzyme_dict
            self._process_file()
        except urllib2.HTTPError, e:
            print 'HTTP Error: {} {}'.format(e.code, url)
            print 'Falling back on default enzyme list'
            self._enzyme_dict = coral.constants.fallback_enzymes
        except urllib2.URLError, e:
            print 'URL Error: {} {}'.format(e.reason, url)
            print 'Falling back on default enzyme list'
            self._enzyme_dict = coral.constants.fallback_enzymes
        # Process into RestrictionSite objects? (depends on speed)
        print 'Processing into RestrictionSite instances.'
        self.restriction_sites = {}
        # TODO: make sure all names are unique
        for key, (site, cuts) in self._enzyme_dict.iteritems():
            # Make a site
            try:
                r = coral.RestrictionSite(coral.DNA(site), cuts, name=key)
                # Add it to dict with name as key
                self.restriction_sites[key] = r
            except ValueError:
                # Encountered ambiguous sequence, have to ignore it until
                # coral.DNA can handle ambiguous DNA
                pass
Update definitions.