pdb2ms.f

来自「最经典的分子对结软件」· F 代码 · 共 145 行

F
145
字号
       PROGRAM PDB2MS************************************************ converts pdb files into ms format files (ACG)************************************************	reads  unit 1 receptor pdb file*	reads  unit 2 receptor exclude pdb file (what should not be surfaced)*	writes unit 3 ms input format       INTEGER MSTYPE ! atom type for ms file       INTEGER RESNUM(2) ! residue number data           REAL * 8 COORD(3), TYPE       CHARACTER * 80 CRAP, CRAP2, CRAP3, CRAP4 ! hold redundant data       CHARACTER * 6 DATA !determines start of atom data             CHARACTER * 80 MOLFILE, MSFILE ! filenames        CHARACTER * 3 MOLTYPE(2) ! atom type data       CHARACTER * 3 RESNAME(2) ! residue name data*************************************************************  open pdb files and new ms file - units assigned by *  controlling script ms.************************************************************       OPEN (UNIT=1,STATUS='OLD',FORM='FORMATTED')       OPEN (UNIT=2,STATUS='OLD',FORM='FORMATTED')       OPEN (UNIT=3,STATUS='UNKNOWN',FORM='FORMATTED')**************************************************** read in atom data until terminal data reached     ** full pdb file first****************************************************2000  READ(1,'(A6)', END=3000) DATA      IF  (DATA(1:4) .EQ. 'ATOM' .OR. DATA .EQ. 'HETATM') THEN              BACKSPACE(UNIT=1)          READ (1,'(A13,A3,A1,A3,A2,I4,A4,3F8.3)')      &    CRAP, MOLTYPE(1), CRAP2, RESNAME(1), CRAP3, RESNUM(1),     &    CRAP4, COORD(1), COORD(2), COORD(3) ***************************************** determine ms type from mol type****************************************                    IF (MOLTYPE(1)(1:1) .EQ. 'H') MSTYPE = 1           IF (MOLTYPE(1)(1:1) .EQ. 'C') MSTYPE = 2           IF (MOLTYPE(1)(1:1) .EQ. 'N') MSTYPE = 3           IF (MOLTYPE(1)(1:1) .EQ. 'O') MSTYPE = 4            IF (MOLTYPE(1)(1:1) .EQ. 'F') MSTYPE = 5           IF (MOLTYPE(1)(1:1) .EQ. 'P') MSTYPE = 6            IF (MOLTYPE(1)(1:1) .EQ. 'S') MSTYPE = 7           IF (MOLTYPE(1)(1:2) .EQ. 'Cl') MSTYPE = 8           IF (MOLTYPE(1)(1:2) .EQ. 'Br') MSTYPE = 9          IF (MOLTYPE(1)(1:1) .EQ. 'I') MSTYPE = 10       ELSE ***************************************** read next line if no atom data found****************************************          GOTO 2000      END IF***************************** read exclusion data****************************4000  READ(2,'(A6)',END=5000) DATA      IF  (DATA(1:4) .EQ. 'ATOM' .OR. DATA .EQ. 'HETATM') THEN            BACKSPACE(UNIT=2)        READ (2,'(A13,A3,A1,A3,A2,I4)',END=3000)      &  CRAP, MOLTYPE(2), CRAP2, RESNAME(2), CRAP3, RESNUM(2)      ELSE          GOTO 4000       END IF********************************************************* write data to ms file in the required format****************************************************************************************************************** exclude from surface but include in collision check*********************************************************5000    IF ( MOLTYPE(1) .EQ. MOLTYPE(2) .AND. RESNUM(1) .EQ.      &         RESNUM(2) .AND. RESNAME(1) .EQ. RESNAME(2)) THEN        WRITE(3,'(3F10.5,3I5)') COORD(1), COORD(2), COORD(3),     &                                MSTYPE, 1, 1********************************************************** include in calculation and rewind exclusion file** rewind requires until match made*********************************************************        ELSE          BACKSPACE(UNIT=2)          WRITE(3,'(3F10.5,3I5)') COORD(1), COORD(2), COORD(3),     &                                 MSTYPE, 2, 1        END IF       GOTO 2000  3000   CLOSE (UNIT=1)       CLOSE (UNIT=2)       CLOSE (UNIT=3)      END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?