Exemple #1
0
static void
zMol2FileWriteContainer( MOL2WRITEt *pwPFile, CONTAINER cCont, int choice )
{
//const char      C_TERMINAL_PREFIX = 'C';
//const char      N_TERMINAL_PREFIX = 'N';
    const int       RESIDUE_NAME_LENGTH = 4;
    LOOP            lContents;
    ATOM            aAtom;
    char            *cPTemp;

    cPTemp = sContainerName(cCont);
    strncpy( pwPFile->sResidueName, cPTemp, RESIDUE_NAME_LENGTH );

    pwPFile->sResidueName[ RESIDUE_NAME_LENGTH ] = '\0';
    if ( strlen(cPTemp) > RESIDUE_NAME_LENGTH ) {
        VP0(( " Truncating residue name for PDB format: %s -> %s\n",
              sContainerName(cCont), pwPFile->sResidueName ));
    }
    /*   }
    */
    if ( iObjectType(cCont) == ATOMid ) {
        zMol2FileWriteAtomRecord( pwPFile, (ATOM)cCont, choice);
        pwPFile->iResidueSeq++;
    } else if ( iObjectType(cCont) == RESIDUEid ) {
        RESIDUE rRes = (RESIDUE) cCont;
        pwPFile->iResidueSeq = rRes->iTemp;
        if ( pwPFile->iResidueSeq == 0 )
            pwPFile->iResidueSeq = 1;
        lContents = lLoop( (OBJEKT)cCont, DIRECTCONTENTSBYSEQNUM );
        while ( (aAtom = (ATOM)oNext(&lContents)) ) {
            zMol2FileWriteAtomRecord( pwPFile, aAtom, choice);
        }
    } else if ( iObjectType(cCont) == MOLECULEid ) {
        lContents = lLoop( (OBJEKT)cCont, ATOMS );
        while ( (aAtom = (ATOM)oNext(&lContents)) ) {
            zMol2FileWriteAtomRecord( pwPFile, aAtom, choice );
        }
        pwPFile->iResidueSeq++;
    }
}
Exemple #2
0
OBJEKT 
AMBER_Combine(OBJEKT  objProt, OBJEKT objLig)
{
  // version of function oCmd_combine 

  UNIT            uCombined, uCurrent;
  LOOP            lTemp;
  RESIDUE         rRes = NULL;
  OBJEKT          oObj;


  /* add only one uCurrent unit (Ligand) to uCombined unit (Protein)  */

    uCombined = (UNIT)objProt;
    oObj = objLig;
    if ( iObjectType( oObj ) != UNITid ) {
      printf( "%s:  is type %s\n", 
	      "Ligand", sObjectType(oObj) );
    }
    uCurrent = (UNIT)objLig;
    printf( "  Ligand: %s\n", sContainerName((CONTAINER) uCurrent) );

    if ( uCombined == NULL ) {
      printf( "--- no Protein unit \n" );
    } else {
       printf( "Joining Protein and Ligand \n" );
      UnitJoin( uCombined, uCurrent );
    }

    if ( uCombined == NULL ) {
        printf( "No UNITS, so no combine performed\n" );
        return(NULL);
	}   

              /* Define PDB sequence */
     
    lTemp = lLoop( (OBJEKT)uCombined, RESIDUES );
    while ( rRes == (RESIDUE)oNext(&lTemp) ) {
        ResidueSetPdbSequence( rRes, iContainerSequence((CONTAINER) rRes) );
    }
   
    return((OBJEKT)uCombined);
}
Exemple #3
0
OBJEKT AMBER_Combine(OBJEKT  objProt, OBJEKT objLig)
{
	UNIT            uCombined, uCurrent;
	LOOP            lTemp;
	RESIDUE         rRes = NULL;
	OBJEKT          oObj;
	uCombined = (UNIT)objProt;
	oObj = objLig;
	if ( iObjectType( oObj ) != UNITid ) 
	{
		PrintInfo(( "%s:  is type %s", "Ligand", sObjectType(oObj) ));
	}
	uCurrent = (UNIT)oCopy(oObj );
	PrintInfo(( "  Sequence: %s", sContainerName((CONTAINER) uCurrent) ));
	
	if ( uCombined == NULL ) 
	{
		printf( "Copying the first UNIT\n" );
		uCombined = uCurrent;
	} else 
	{
		printf( "Copied a subsequent UNIT\n" );
		printf( "Joining two UNITS \n" );
		UnitJoin( uCombined, uCurrent );
	}
	
	if ( uCombined == NULL ) 
	{
		printf( "No UNITS, so no combine performed\n" );
		return(NULL);
	}
	lTemp = lLoop( (OBJEKT)uCombined, RESIDUES );
	while ( rRes == (RESIDUE)oNext(&lTemp) ) 
	{
		ResidueSetPdbSequence( rRes, iContainerSequence((CONTAINER) rRes) );
	}
	
	return((OBJEKT)uCombined);
}