Ignore:
Timestamp:
Aug 2, 2013 7:51:39 PM (8 years ago)
Author:
gah
Message:

added code for computing bonds: seems to add more bonds than pymol or vmd

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/src/RpPdbToVtk.c

    r3849 r3850  
    220220            // perform distance test, but ignore pairs between atoms
    221221            // with nearly identical coords
    222             if (ds2 < 0.001) {
     222            if (ds2 < 0.16) {
    223223                continue;
    224224            }
     
    252252    int elemIndex, symbolIndex;
    253253    int count;
    254     char *p;
     254    const char *p;
    255255
    256256    symbolIndex = elemIndex = -1;
     
    463463
    464464static int
    465 SerialToOrdinal(Tcl_Interp *interp, Tcl_HashTable *tablePtr, const char *string,
    466               int *ordPtr)
     465SerialToAtom(Tcl_Interp *interp, Tcl_HashTable *tablePtr, const char *string,
     466                PdbAtom **atomPtrPtr)
    467467{
    468468    int serial;
    469     PdbAtom *atomPtr;
    470469    long lserial;
    471470    Tcl_HashEntry *hPtr;
     
    485484        return TCL_ERROR;
    486485    }
    487     atomPtr = Tcl_GetHashValue(hPtr);
    488     *ordPtr = atomPtr->ordinal;
     486    *atomPtrPtr = Tcl_GetHashValue(hPtr);
    489487    return TCL_OK;
    490488}
     
    508506    int bondFlags;
    509507
    510     bondFlags = BOND_NONE;
     508    bondFlags = BOND_BOTH;
    511509    lineNum = nextOrdinal = 0;
    512510    if ((objc != 2) && (objc != 4)) {
     
    612610            nextOrdinal++;
    613611        } else if ((c == 'C') && (strncmp(line, "CONECT", 6) == 0)) {
    614             int a, i, n;
     612            PdbAtom *atom1Ptr;
     613            int i, n;
    615614            char buf[200];
    616615
     
    630629                goto error;
    631630            }
    632             if (SerialToOrdinal(interp, &atomTable, buf, &a) != TCL_OK) {
     631            if (SerialToAtom(interp, &atomTable, buf, &atom1Ptr) != TCL_OK) {
    633632                goto error;
    634633            }
     
    636635            for (n = 11, i = 0; i < 4; i++, n += 5) {
    637636                ConnectKey key;
    638                 int b;
     637                PdbAtom *atom2Ptr;
     638
    639639                if (n >= lineLength) {
    640640                    break;             
     
    645645                    break;              /* No more entries */
    646646                }
    647                 if (SerialToOrdinal(interp, &atomTable, buf, &b) != TCL_OK) {
     647                if (SerialToAtom(interp, &atomTable, buf, &atom2Ptr) !=TCL_OK) {
    648648                    goto error;
    649649                }
    650                 if (a > b) {
    651                     key.from = b;
    652                     key.to = a;
     650                if (atom1Ptr->ordinal > atom2Ptr->ordinal) {
     651                    key.from = atom2Ptr->ordinal;
     652                    key.to = atom1Ptr->ordinal;
    653653                } else {
    654                     key.from = a;
    655                     key.to = b;
     654                    key.from = atom1Ptr->ordinal;
     655                    key.to = atom2Ptr->ordinal;
    656656                }
    657657                Tcl_CreateHashEntry(&conectTable, (char *)&key, &isNew);
     
    690690        sprintf(mesg, "\n");
    691691        Tcl_AppendToObj(objPtr, mesg, -1);
     692    }
     693    for (hPtr = Tcl_FirstHashEntry(&atomTable, &iter); hPtr != NULL;
     694         hPtr = Tcl_NextHashEntry(&iter)) {
     695        PdbAtom *atomPtr;
     696
     697        atomPtr = Tcl_GetHashValue(hPtr);
     698        fprintf(stderr, "%d %s %d connections\n", atomPtr->ordinal,
     699                elements[atomPtr->number].symbol, atomPtr->numConnections);
    692700    }
    693701    sprintf(mesg, "POINT_DATA %d\n", atomTable.numEntries);
Note: See TracChangeset for help on using the changeset viewer.