def test_substituent(self): try: import rdkit sub = Substituent.from_string( "acetyl", form="iupac", strict_use_rdkit=True ) self.is_COCH3(sub) with self.assertLogs(Substituent.LOG, level="WARNING"): sub = Substituent.from_string( "nitro", form="iupac", strict_use_rdkit=True ) self.is_NO2(sub) sub = Substituent.from_string( "O=[N.]=O", form="smiles", strict_use_rdkit=True ) self.is_NO2(sub) sub = Substituent.from_string( "O=[N]=O", form="smiles", strict_use_rdkit=True ) self.is_NO2(sub) except (ImportError, ModuleNotFoundError): # I still want to test CACTVS things because sometimes they change stuff # that breaks our stuff if any( user == os.getenv("USER", os.getenv("USERNAME", False)) for user in ["ajs99778", "normn"] ): sub = Substituent.from_string("acetyl", form="iupac") print(sub.write(outfile=False)) self.is_COCH3(sub, thresh=0.3) sub = Substituent.from_string("nitro", form="iupac") print(sub.write(outfile=False)) self.is_NO2(sub) sub = Substituent.from_string("O=[N.]=O", form="smiles") print(sub.write(outfile=False)) self.is_NO2(sub) sub = Substituent.from_string("O=[N]=O", form="smiles") print(sub.write(outfile=False)) self.is_NO2(sub) else: self.skipTest("RDKit not installed, CACTVS is not tested")
geom = Geometry(f) target_list = [] for sub in args.substitutions: ndx_targets = sub.split("=")[0] target_list.append(geom.find(ndx_targets)) for i, sub in enumerate(args.substitutions): ndx_target = target_list[i] sub_name = "=".join(sub.split("=")[1:]) for target in ndx_target: if sub_name.lower().startswith("iupac:"): sub_name = ":".join(sub_name.split(":")[1:]) sub = Substituent.from_string(sub_name, form="iupac") elif sub_name.lower().startswith("smiles:"): sub_name = ":".join(sub_name.split(":")[1:]) sub = Substituent.from_string(sub_name, form="smiles") else: sub = Substituent(sub_name) # replace old substituent with new substituent geom.substitute(sub, target, minimize=args.mini) geom.refresh_connected() if args.outfile: outfile = args.outfile if "INFILE" in outfile: outfile = outfile.replace("$INFILE", get_filename(infile)) geom.write(
"when no input file is given, stdin is read and a format must be specified" ) geom = Geometry(f) target_list = [] for sub in args.substitutions: ndx_targets = sub.split('=')[0] target_list.append(geom.find(ndx_targets)) for i, sub in enumerate(args.substitutions): ndx_target = target_list[i] sub_name = '='.join(sub.split('=')[1:]) for target in ndx_target: if args.form[0] == 'from_library': sub = Substituent(sub_name) elif args.form[0] in ['iupac', 'smiles']: sub = Substituent.from_string(sub_name, args.form[0]) #replace old substituent with new substituent geom.substitute(sub, target) geom.refresh_connected() if args.outfile: FileWriter.write_xyz(geom, append=False, outfile=args.outfile[0]) else: s = FileWriter.write_xyz(geom, append=False, outfile=False) print(s)