Ejemplo n.º 1
0
    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")
Ejemplo n.º 2
0
    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(
Ejemplo n.º 3
0
                "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)