def stream_smiles_results(operation, query, source, annotate=False): buf = StringIO() filtered = operation(query, source, annotate=annotate) results = SmilesWriter(buf, isomericSmiles=True, includeHeader=False) if annotate: results.SetProps(['match']) for result in filtered: buf.truncate(0) results.write(result) results.flush() yield buf.getvalue()
def write_smiles_results(operation, needles, haystack, dest, annotate=False, extra_props=0): filtered = operation(needles, haystack, annotate=annotate) results = SmilesWriter(dest, isomericSmiles=True, includeHeader=False) props = [] if annotate: props.append('match') if extra_props: props.extend('ExtraProp{0}'.format(i+1) for i in range(extra_props)) results.SetProps(props) for result in filtered: results.write(result) return results.NumMols()