Ejemplo n.º 1
0
  private Object finish() {
    String s = (String) htParams.get("loadState");
    atomSetCollection.setAtomSetCollectionAuxiliaryInfo("loadState", s == null ? "" : s);
    s = (String) htParams.get("smilesString");
    if (s != null) atomSetCollection.setAtomSetCollectionAuxiliaryInfo("smilesString", s);
    if (!htParams.containsKey("templateAtomCount"))
      htParams.put("templateAtomCount", Integer.valueOf(atomSetCollection.getAtomCount()));
    if (htParams.containsKey("bsFilter"))
      htParams.put(
          "filteredAtomCount",
          Integer.valueOf(BitSetUtil.cardinalityOf((BitSet) htParams.get("bsFilter"))));
    if (!calculationType.equals("?"))
      atomSetCollection.setAtomSetCollectionAuxiliaryInfo("calculationType", calculationType);

    String name = atomSetCollection.getFileTypeName();
    String fileType = name;
    if (fileType.indexOf("(") >= 0) fileType = fileType.substring(0, fileType.indexOf("("));
    for (int i = atomSetCollection.getAtomSetCount(); --i >= 0; ) {
      atomSetCollection.setAtomSetAuxiliaryInfo("fileName", filePath, i);
      atomSetCollection.setAtomSetAuxiliaryInfo("fileType", fileType, i);
    }
    atomSetCollection.freeze(reverseModels);
    if (atomSetCollection.errorMessage != null)
      return atomSetCollection.errorMessage + "\nfor file " + filePath + "\ntype " + name;
    if ((atomSetCollection.bsAtoms == null
                ? atomSetCollection.getAtomCount()
                : atomSetCollection.bsAtoms.cardinality())
            == 0
        && fileType.indexOf("DataOnly") < 0)
      return "No atoms found\nfor file " + filePath + "\ntype " + name;
    return atomSetCollection;
  }
Ejemplo n.º 2
0
 public void setIsPDB() {
   atomSetCollection.setGlobalBoolean(AtomSetCollection.GLOBAL_ISPDB);
   atomSetCollection.setAtomSetAuxiliaryInfo("isPDB", Boolean.TRUE);
   if (htParams.get("pdbNoHydrogens") != null)
     atomSetCollection.setAtomSetCollectionAuxiliaryInfo(
         "pdbNoHydrogens", htParams.get("pdbNoHydrogens"));
 }
Ejemplo n.º 3
0
 protected void addSiteScript(String script) {
   if (siteScript == null) siteScript = "";
   else if (!siteScript.endsWith(";")) siteScript += ";";
   siteScript += script;
   atomSetCollection.setAtomSetCollectionAuxiliaryInfo(
       "sitescript", siteScript); // checked in ScriptEvaluator.load()
 }
Ejemplo n.º 4
0
 protected void addJmolScript(String script) {
   Logger.info("#jmolScript: " + script);
   if (previousScript == null) previousScript = "";
   else if (!previousScript.endsWith(";")) previousScript += ";";
   previousScript += script;
   atomSetCollection.setAtomSetCollectionAuxiliaryInfo("jmolscript", previousScript);
 }
Ejemplo n.º 5
0
 public void setTransform(
     float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3) {
   if (matrixRotate != null || !doSetOrientation) return;
   matrixRotate = new Matrix3f();
   Vector3f v = new Vector3f();
   // rows in Sygress/CAChe and Spartan become columns here
   v.set(x1, y1, z1);
   v.normalize();
   matrixRotate.setColumn(0, v);
   v.set(x2, y2, z2);
   v.normalize();
   matrixRotate.setColumn(1, v);
   v.set(x3, y3, z3);
   v.normalize();
   matrixRotate.setColumn(2, v);
   atomSetCollection.setAtomSetCollectionAuxiliaryInfo(
       "defaultOrientationMatrix", new Matrix3f(matrixRotate));
   // first two matrix column vectors define quaternion X and XY plane
   Quaternion q = new Quaternion(matrixRotate);
   atomSetCollection.setAtomSetCollectionAuxiliaryInfo("defaultOrientationQuaternion", q);
   Logger.info("defaultOrientationMatrix = " + matrixRotate);
 }
Ejemplo n.º 6
0
 protected void set2D() {
   // MOL and JME
   atomSetCollection.setAtomSetCollectionAuxiliaryInfo("is2D", Boolean.TRUE);
   if (!checkFilter("NOMIN"))
     atomSetCollection.setAtomSetCollectionAuxiliaryInfo("doMinimize", Boolean.TRUE);
 }
Ejemplo n.º 7
0
 protected void finalizeReader() throws Exception {
   applySymmetryAndSetTrajectory();
   if (loadNote.length() > 0)
     atomSetCollection.setAtomSetCollectionAuxiliaryInfo("modelLoadNote", loadNote.toString());
   if (doCentralize) atomSetCollection.centralize();
 }
Ejemplo n.º 8
0
  public void checkLineForScript() {
    if (line.indexOf("Jmol") >= 0) {
      if (line.indexOf("Jmol PDB-encoded data") >= 0) {
        atomSetCollection.setAtomSetCollectionAuxiliaryInfo("jmolData", line);
        if (!line.endsWith("#noautobond")) line += "#noautobond";
      }
      if (line.indexOf("Jmol data min") >= 0) {
        Logger.info(line);
        // The idea here is to use a line such as the following:
        //
        // REMARK   6 Jmol data min = {-1 -1 -1} max = {1 1 1}
        //                      unScaledXyz = xyz / {10 10 10} + {0 0 0}
        //                      plotScale = {100 100 100}
        //
        // to pass on to Jmol how to graph non-molecular data.
        // The format allows for the actual data to be linearly transformed
        // so that it fits into the PDB format for x, y, and z coordinates.
        // This adapter will then unscale the data and also pass on to
        // Jmol the unit cell equivalent that takes the actual data (which
        // will be considered the fractional coordinates) to Jmol coordinates,
        // which will be a cube centered at {0 0 0} and ranging from {-100 -100 -100}
        // to {100 100 100}.
        //
        // Jmol 12.0.RC23 uses this to pass through the adapter a quaternion,
        // ramachandran, or other sort of plot.

        float[] data = new float[15];
        parseStringInfestedFloatArray(
            line.substring(10).replace('=', ' ').replace('{', ' ').replace('}', ' '), data);
        Point3f minXYZ = new Point3f(data[0], data[1], data[2]);
        Point3f maxXYZ = new Point3f(data[3], data[4], data[5]);
        fileScaling = new Point3f(data[6], data[7], data[8]);
        fileOffset = new Point3f(data[9], data[10], data[11]);
        Point3f plotScale = new Point3f(data[12], data[13], data[14]);
        if (plotScale.x <= 0) plotScale.x = 100;
        if (plotScale.y <= 0) plotScale.y = 100;
        if (plotScale.z <= 0) plotScale.z = 100;
        if (fileScaling.y == 0) fileScaling.y = 1;
        if (fileScaling.z == 0) fileScaling.z = 1;
        setFractionalCoordinates(true);
        latticeCells = new int[3];
        atomSetCollection.setLatticeCells(latticeCells, true, false, supercell);
        setUnitCell(
            plotScale.x * 2 / (maxXYZ.x - minXYZ.x),
            plotScale.y * 2 / (maxXYZ.y - minXYZ.y),
            plotScale.z * 2 / (maxXYZ.z == minXYZ.z ? 1 : maxXYZ.z - minXYZ.z),
            90,
            90,
            90);
        /*
        unitCellOffset = new Point3f(minXYZ);
        symmetry.toCartesian(unitCellOffset);
        System.out.println(unitCellOffset);
        unitCellOffset = new Point3f(maxXYZ);
        symmetry.toCartesian(unitCellOffset);
        System.out.println(unitCellOffset);
        */
        unitCellOffset = new Point3f(plotScale);
        unitCellOffset.scale(-1);
        symmetry.toFractional(unitCellOffset, false);
        unitCellOffset.scaleAdd(-1f, minXYZ, unitCellOffset);
        symmetry.setUnitCellOffset(unitCellOffset);
        /*
        Point3f pt = new Point3f(minXYZ);
        symmetry.toCartesian(pt);
        System.out.println("ASCR minXYZ " + pt);
        pt.set(maxXYZ);
        symmetry.toCartesian(pt);
        System.out.println("ASCR maxXYZ " + pt);
        */
        atomSetCollection.setAtomSetCollectionAuxiliaryInfo(
            "jmolDataScaling", new Point3f[] {minXYZ, maxXYZ, plotScale});
      }
    }
    if (line.endsWith("#noautobond")) {
      line = line.substring(0, line.lastIndexOf('#')).trim();
      atomSetCollection.setNoAutoBond();
    }
    int pt = line.indexOf("jmolscript:");
    if (pt >= 0) {
      String script = line.substring(pt + 11, line.length());
      if (script.indexOf("#") >= 0) {
        script = script.substring(0, script.indexOf("#"));
      }
      addJmolScript(script);
      line = line.substring(0, pt).trim();
    }
  }