mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-04 21:54:27 +08:00
* Adds MolToCDXMLBlock to FileParsers * Simplified code, removed warning * Fix C# wrapper for MolToCDX * Add C# test, fix cscode in swig * Fix typo in tests * Set default format to CDXML for MolToCDXML Co-authored-by: Greg Landrum <greg.landrum@gmail.com> * Add CDXML writer smoke tests --------- Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
87 lines
2.8 KiB
C#
87 lines
2.8 KiB
C#
// Linux:
|
|
// compile with
|
|
// mcs -platform:x64 -r:../RDKit2DotNet.dll -out:MolToFromByteArray.exe MolToFromByteArray.cs
|
|
// and run with
|
|
// LD_LIBRARY_PATH=..:$RDBASE/lib:$LD_LIBRARY_PATH MONO_PATH=.. mono MolToFromByteArray.exe
|
|
|
|
using System.IO;
|
|
using System.Diagnostics;
|
|
using GraphMolWrap;
|
|
using Xunit;
|
|
|
|
namespace RdkitTests
|
|
{
|
|
public class MolToFromByteArrayTest
|
|
{
|
|
[Fact]
|
|
public void TestMolToFromByteArray()
|
|
{
|
|
string smi = "CN(C)c1ccc2c(=O)cc[nH]c2c1";
|
|
string pklFileName = "quinolone.pkl";
|
|
{
|
|
ROMol mol = RWMol.MolFromSmiles(smi);
|
|
byte[] pkl = mol.ToByteArray();
|
|
File.WriteAllBytes(pklFileName, pkl);
|
|
mol.Dispose();
|
|
}
|
|
{
|
|
byte[] pkl = File.ReadAllBytes(pklFileName);
|
|
ROMol mol = ROMol.FromByteArray(pkl);
|
|
Assert.Equal(smi, mol.MolToSmiles());
|
|
mol.Dispose();
|
|
File.Delete(pklFileName);
|
|
}
|
|
}
|
|
[Fact]
|
|
public void TestPickleOptions()
|
|
{
|
|
string smi = "c1ccccc1[C@](F)(Cl)Br";
|
|
ROMol mol = RWMol.MolFromSmiles(smi);
|
|
mol.setProp("_MolFileChiralFlag", "1");
|
|
{
|
|
byte[] pkl = mol.ToByteArray();
|
|
ROMol mol2 = ROMol.FromByteArray(pkl);
|
|
Assert.False(mol2.hasProp("_MolFileChiralFlag"));
|
|
}
|
|
{
|
|
byte[] pkl = mol.ToByteArray((int)PropertyPickleOptions.AllProps);
|
|
ROMol mol2 = ROMol.FromByteArray(pkl);
|
|
Assert.True(mol2.hasProp("_MolFileChiralFlag"));
|
|
}
|
|
|
|
{
|
|
uint val = RDKFuncs.getDefaultPickleProperties();
|
|
RDKFuncs.setDefaultPickleProperties((int)PropertyPickleOptions.AllProps);
|
|
byte[] pkl = mol.ToByteArray();
|
|
RDKFuncs.setDefaultPickleProperties(val);
|
|
ROMol mol2 = ROMol.FromByteArray(pkl);
|
|
Assert.True(mol2.hasProp("_MolFileChiralFlag"));
|
|
}
|
|
|
|
}
|
|
[Fact]
|
|
public void MolFromCDX() {
|
|
var fileName =
|
|
Path.Combine(Environment.GetEnvironmentVariable("RDBASE"),
|
|
"Code", "GraphMol", "test_data", "CDX", "structure_1.cdx");
|
|
|
|
byte[] pkl = File.ReadAllBytes(fileName);
|
|
var mols = RWMol.MolsFromCDXMLByteArray(pkl);
|
|
Assert.True(mols.Count >= 1);
|
|
|
|
}
|
|
[Fact]
|
|
public void MolToCDX() {
|
|
string smi = "c1ccccc1[C@](F)(Cl)Br";
|
|
ROMol mol = RWMol.MolFromSmiles(smi);
|
|
byte[] pkl = mol.MolToCDX();
|
|
var mols = RWMol.MolsFromCDXMLByteArray(pkl);
|
|
Assert.True(mol.MolToSmiles() == mols[0].MolToSmiles());
|
|
|
|
string cdxml = mol.MolToCDXML();
|
|
mols = RWMol.MolsFromCDXMLByteArray(pkl);
|
|
Assert.True(mol.MolToSmiles() == mols[0].MolToSmiles());
|
|
}
|
|
}
|
|
}
|