1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
//
// Copyright (C) 2024 Gareth Jones, Glysade LLC
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
// The contents are covered by the terms of the BSD license
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
using System;
using System.IO;
using System.Linq;
using GraphMolWrap;
using Xunit;
namespace RdkitTests
{
public class TestSubstanceGroup
{
[Fact]
public void TestReadSRUSGroup()
{
var fName =
Path.Combine(Environment.GetEnvironmentVariable("RDBASE")!,
"Code/GraphMol/FileParsers/sgroup_test_data/repeat_groups_query1.mol");
var block = File.ReadAllText(fName);
var mol = RWMol.MolFromMolBlock(block);
var numberGroups = RDKFuncs.getSubstanceGroupCount(mol);
Assert.Equal(1U, numberGroups);
var sruGroup = RDKFuncs.getSubstanceGroupWithIdx(mol, 0);
var atoms = sruGroup.getAtoms().ToArray();
Assert.Equal(new int[] { 0 }, atoms);
var bonds = sruGroup.getBonds().ToArray();
Assert.Equal(new int[] { 0, 5 }, bonds);
var index = Convert.ToInt32(sruGroup.getUIntProp("index"));
Assert.Equal(1, index);
var connect = sruGroup.getStringProp("CONNECT");
Assert.Equal("HT", connect);
var label = sruGroup.getStringProp("LABEL");
Assert.Equal("1-3", label);
var props = sruGroup.getPropList().ToArray();
Assert.True(props.Contains("XBHEAD"));
var xbBonds = sruGroup.getUIntVectProp("XBHEAD").Select(Convert.ToInt32).ToArray();
Assert.Equal(new int[] { 5, 0 }, xbBonds);
Assert.True(props.Contains("XBCORR"));
var xbCorr = sruGroup.getUIntVectProp("XBCORR").Select(Convert.ToInt32).ToArray();
Assert.Equal(new int[] { 5, 5, 0, 0 }, xbCorr);
}
}
}
|