def __init__(self, **kwargs):
self.search_hmm_files = kwargs.pop('<STR_LIT>',[])<EOL>self.maximum_range = kwargs.pop('<STR_LIT>',None)<EOL>self.threads = kwargs.pop('<STR_LIT>',None)<EOL>self.evalue = kwargs.pop('<STR_LIT>',None)<EOL>self.min_orf_length = kwargs.pop('<STR_LIT>',None)<EOL>graftm_package = kwargs.pop('<STR_LIT>',None)<EOL>if len(kwargs) > <NUM_LIT:0>:<EOL><INDENT>raise Exception("<STR_LIT>" % kwargs)<EOL><DEDENT>if graftm_package:<EOL><INDENT>self.diamond_database = graftm_package.diamond_database_path()<EOL>self.unaligned_sequence_database = graftm_package.unaligned_sequence_database_path()<EOL>if self.search_hmm_files is None:<EOL><INDENT>self.search_hmm_files = []<EOL><DEDENT>for h in graftm_package.search_hmm_paths():<EOL><INDENT>if h not in self.search_hmm_files:<EOL><INDENT>self.search_hmm_files.append(h)<EOL><DEDENT><DEDENT>if self.maximum_range is None:<EOL><INDENT>self.maximum_range = graftm_package.maximum_range()<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self.diamond_database = None<EOL>self.unaligned_sequence_database = None<EOL><DEDENT>if len(kwargs) > <NUM_LIT:0>:<EOL><INDENT>raise Exception("<STR_LIT>" % kwargs)<EOL><DEDENT>
Parameters
----------
search_hmm_files: list of str
    list of HMM files to search with
graftm_package: GraftMPackage
    use the search HMMs from this graftm package in addition to
    those specified in search_hmm_files
threads, evalue, min_orf_length, restrict_read_length:
    as per hmmer.search_and_extract_orfs_matching_protein_database