def molconvert_chemaxon(data): """ molconvert wrapper :param data: buffer or string or path to file :return: array of molecules of reactions """ if isinstance(data, Path): with data.open('rb') as f: data = f.read() elif isinstance(data, StringIO): data = data.read().encode() elif isinstance(data, BytesIO): data = data.read() elif hasattr(data, 'read'): # check if data is open(filename, mode) data = data.read() if isinstance(data, str): data = data.encode() elif isinstance(data, str): data = data.encode() elif not isinstance(data, bytes): raise ValueError('invalid input') try: p = run(['molconvert', '-g', 'mrv'], input=data, stdout=PIPE) except FileNotFoundError as e: raise ConfigurationError from e if p.returncode != 0: raise ConfigurationError(p.stderr.decode()) with BytesIO(p.stdout) as f, MRVRead(f) as r: return iter2array(r)
def __processor_s(self, structure): with StringIO() as f: with MRVWrite(f) as w: w.write(structure) data = dict( structure=f.getvalue(), parameters='mrv', filterChain=[ dict(filter='standardizer', parameters=dict(standardizerDefinition=self.rules)) ]) try: q = post(f'{CHEMAXON_REST}/rest-v0/util/calculate/molExport', json=data, timeout=20) except RequestException as e: raise ConfigurationError from e if q.status_code not in (201, 200): raise ValueError('invalid data') res = q.json() if not res: raise ValueError('invalid data') with BytesIO(res['structure'].encode()) as f, MRVRead(f) as r: return r.read()
def display_output(value): if value: # data from `download` attr of widget with BytesIO(value.encode()) as f, MRVRead(f) as i: s = next(i) s.standardize() s.thiele() with StringIO() as f: with MRVWrite(f) as o: o.write(s) value = f.getvalue() return value # send to `upload` attr of widget
def molconvert_chemaxon(data): """ ChemAxon molconvert wrapper. Parameters ---------- data : Buffer or string or path to file All supported by molconvert formats for chemical data storing. Returns ------- array : Array of molecules of reactions CGRtools data types for Reactions and Molecules storing. """ if isinstance(data, Path): with data.open('rb') as f: data = f.read() elif isinstance(data, StringIO): data = data.read().encode() elif isinstance(data, BytesIO): data = data.read() elif hasattr(data, 'read'): # check if data is open(filename, mode) data = data.read() if isinstance(data, str): data = data.encode() elif isinstance(data, str): data = data.encode() elif not isinstance(data, bytes): raise ValueError('invalid input') try: p = run(['molconvert', '-g', 'mrv'], input=data, stdout=PIPE) except FileNotFoundError as e: raise ConfigurationError from e if p.returncode != 0: raise ConfigurationError(p.stderr.decode()) with BytesIO(p.stdout) as f, MRVRead(f) as r: return iter2array(r)
def __processor_m(self, structures): with StringIO() as f: with MRVWrite(f) as w: for s in structures: w.write(s) tmp = f.getvalue().encode() try: p = run( ['standardize', '-c', str(self.__config), '-f', 'mrv', '-g'], input=tmp, stdout=PIPE, stderr=PIPE) except FileNotFoundError as e: raise ConfigurationError from e if p.returncode != 0: raise ConfigurationError(p.stderr.decode()) with BytesIO(p.stdout) as f, MRVRead(f) as r: res = r.read() if len(res) != len(structures): raise ValueError('invalid data') return res