Build a crystal from coordinate and lattice information

Dear All

I wanted to build a crystal from the coordinate and lattice information provided by litterature, I tried to use the following script

# Begin user editable settings

my \\\$studyTable = \\\$Documents{"11t.std"};          # Name of the study table

 

my \\\$coordinateType = "Fractional";          # Fractional or Cartesian coordinates

my \\\$doc = Documents->New("11t.xsd");          # Name of the output document

 

# End user editable settings

#########################################################################

# Build the lattice

 

buildMyLattice(\\\$studyTable->Sheets("Lattice"), \\\$doc);

 

# Add the atoms

 

addTheAtoms(\\\$studyTable->Sheets("Coordinates"), \\\$doc, \\\$coordinateType);

 

# Do an initial bond calculation

 

\\\$doc->CalculateBonds;

 

###################################################################

# Build the lattice, specifying the space group etc

 

sub buildMyLattice {

 

my \\\$latticeTab = shift;

my \\\$doc1 = shift;

 

my \\\$spaceGroup = \\\$latticeTab->Cell(0, "SpaceGroup");

Tools->CrystalBuilder->SetSpaceGroup("\\\$spaceGroup", "");

Tools->CrystalBuilder->SetCellParameters(\\\$latticeTab->Cell(0, "LengthA"), \\\$latticeTab->Cell(0, "LengthB"), \\\$latticeTab->Cell(0, "LengthC"), \\\$latticeTab->Cell(0, "AngleA"), \\\$latticeTab->Cell(0, "AngleB"), \\\$latticeTab->Cell(0, "AngleC"));

Tools->CrystalBuilder->ChangeSettings(Settings(UseSpecialPositions => "Yes", SpecialPositionTolerance => 0.05));

Tools->CrystalBuilder->Build(\\\$doc1);

 

}

 

######################################################################

# Now create the atoms from the study table

 

sub addTheAtoms {

 

my \\\$coordinateTab = shift;

my \\\$doc1 = shift;

my \\\$coordinateFramework = shift;

 

for (my \\\$row = 0; \\\$row < \\\$coordinateTab->RowCount; ++\\\$row) {

# Grab the elementType

my \\\$elementType = \\\$coordinateTab->Cell(\\\$row,"Atom");

# Grab the x, y , and z coordinates. Use removeBrackts to take the

# value before the brackets - it does not matter if no brackets

# are present in the number

my \\\$x = removeBrackets(\\\$coordinateTab->Cell(\\\$row,"X"));

my \\\$y = removeBrackets(\\\$coordinateTab->Cell(\\\$row,"Y"));

my \\\$z = removeBrackets(\\\$coordinateTab->Cell(\\\$row,"Z"));

# Depending on the coordinate frame, use fractional or cartesian coordinates

if (\\\$coordinateFramework eq "Fractional") {

my \\\$atom = \\\$doc->CreateAtom("\\\$elementType", \\\$doc1->FromFractionalPosition(Point(X => \\\$x, Y => \\\$y, Z => \\\$z)), [Name => \\\$coordinateTab->Cell(\\\$row, "Name")]);

} elsif (\\\$coordinateFramework eq "Cartesian") {

my \\\$atom = \\\$doc->CreateAtom("\\\$elementType", Point(X => \\\$x, Y => \\\$y, Z => \\\$z), [Name => \\\$coordinateTab->Cell(\\\$row, "Name")]);

} else { print "You have not specified your coordinateType.\\nValid values are Fractional or Cartesian.\\n";}

\\\$doc->UpdateViews;

}

}

#######################################################################

# Removes the brackets from the number ie 0.924(2) => 0.924 by creating

# an array where the first value in the array is the number

sub removeBrackets {

my \\\$tempValue = shift;

my @tempArray = split(/\\(/, \\\$tempValue);

return \\\$tempArray[0];

}

Then I got the following error:

Type mismatch (writing property "Z", parameter 1) at -e line 92.

Which is :

if (\\\$coordinateFramework eq "Fractional") {

I used this script to build other crystal strucutre before, it worked. This time I just changed the input and output name, then got an error. Does anyone have idea why this happened?

Thank you!

Regards,

Jingjing