1

私は以下のように定義された Pyspark UDF を持っています -

from rdkit import Chem

input_smile = 'CCOC(=O)c1cc2cc(ccc2[nH]1)C(=O)O'
converted_smile_in = Chem.MolToSmiles(Chem.MolFromSmiles(input_smile)

def convertSmile(smile):
        return (Chem.MolToSmiles(Chem.MolFromSmiles(smile)))
applyconvertSmileUdf = udf(convertSmile)

data_converted = data_converted.withColumn("converted_smile", applyconvertSmileUdf(data_filtered.smiles))

if __name__ == "__main__": 
        # using the new approach
        data_converted.filter(data_converted.converted_smile == converted_smile_in ).select("id","smiles").show()
else:
        print("Cannot convert!")     

data_converted.converted_smile と convert_smile_in を比較すると、エラーがスローされます。convert_smile に 20 個ほどの値を出力しましたが、見栄えがよくなりました。この方法で文字列比較を行うことはできませんか?

Boost.Python.ArgumentError: rdkit.Chem.rdmolfiles.MolToSmiles(NoneType) の Python 引数の型が C++ 署名と一致しませんでした: MolToSmiles(RDKit::ROMol mol、bool イソメリックスマイル = True、ブール kekuleSmiles = False、int rootedAtAtom = -1、 bool canonical=True、bool allBondsExplicit=False、bool allHsExplicit=False、bool doRandom=False)

4

1 に答える 1