469 lines
15 KiB
Fortran
469 lines
15 KiB
Fortran
C PIP (protein interpretation program)
|
|
C
|
|
C author: Rodger Staden, Medical Research Council Centre,
|
|
C Laboratory of Molecular Biology, Hills Road,
|
|
C Cambridge, England
|
|
C 16-3-90 Removed escape after bpause
|
|
C 5-4-90 Changed getdev to redir and all that implies (see redir)
|
|
C 27-6-90 added hopp and woods hydrophilicity table. Not used yet!
|
|
C but could be sent to compc
|
|
C 6-7-90 added showfi
|
|
C 9-7-90 Renamed menu routine
|
|
C 5-11-90 Very many changes for addition of file of file names
|
|
C search for patterns - affects patternp,patternpc,pipl,
|
|
C pip,nip,nipl,patternn,patternnc,analps89 and subs89 (rdwmt)
|
|
C 4-12-90 CHANGED NAME OF ROUTINE COMPC TO COMPCP because the sun
|
|
C linker cannot cope with subroutines and common blocks
|
|
C having the same name
|
|
C 11-12-90 Changed handling of sequence libraries. New logical name
|
|
C set here and passed to rdseq
|
|
C 13-04-91 removed initial CLEARV
|
|
C The maximum sequence length is defined by the parameter MAXSEQ
|
|
C and MAXWIN.
|
|
C
|
|
C Either Staden (ie. no heading and effectively free format with
|
|
C lines of any length <81 and allowing gaps that will be removed)
|
|
C or EMBL or GENBANK format files can be read.
|
|
C
|
|
C 7-6-91 New sequence library routines for cdrom format. PIR stuff junked
|
|
C 3-7-91 set namlen = 60
|
|
C 18-7-91 added titles to pattern files. Fixed graphics output for patterns
|
|
C 25-2-92 changed call to rdseq
|
|
SUBROUTINE FMAIN()
|
|
INTEGER BOTOPT,TOPOPT
|
|
PARAMETER (NAMLEN = 60)
|
|
CHARACTER*(NAMLEN) HELPF,POINTF,FILMAR,FILNAM,FILEP,FILEA,FILEAA
|
|
CHARACTER*(NAMLEN) FILEIN,FILE12,FOFNAM
|
|
CHARACTER*(NAMLEN) LIBLF
|
|
PARAMETER (BOTOPT=0,TOPOPT=28,
|
|
+ MAXSEQ=100000,
|
|
+ MXSPAN=603,
|
|
+ MAXWIN=MAXSEQ+MXSPAN,
|
|
+ MAXSD2=MAXSEQ/2,
|
|
+ MAXSD3=MAXSEQ/3,
|
|
+ MAXWIR=100000,
|
|
+ MAXD36=MAXWIR/36,
|
|
+ MAXD2=MAXWIR/2,
|
|
+ MAXD3=MAXWIR/3,
|
|
+ MAXMEN=-5,
|
|
+ MAXOPT=28,
|
|
+ MAXDEV=9,
|
|
+ MXWTLN = 120,
|
|
+ IDM = 26)
|
|
PARAMETER (
|
|
+ HELPF='PIPHELP',
|
|
+ POINTF='PIPHPNT',
|
|
+ FILMAR='PIPMARG',
|
|
+ FILEA='PROTGRP',
|
|
+ FILEAA='PROTALL',
|
|
+ FILEP='PROTMAT',
|
|
+ FILE12='ROBSON',
|
|
+ LIBLF='SEQUENCELIBRARIES')
|
|
PARAMETER ( MAXMOT = 50,MAXWTS = 4000)
|
|
INTEGER HELPS(BOTOPT:TOPOPT),HELPE(BOTOPT:TOPOPT),DEVNOS(MAXDEV)
|
|
INTEGER WORKI(MAXWIR),OPT,MARGB(MAXOPT),MARGT(MAXOPT)
|
|
INTEGER MATRIX(IDM,IDM),MAT1(IDM,IDM)
|
|
REAL WORKR(MAXWIR)
|
|
CHARACTER*(NAMLEN) NAMSAV(MAXMOT)
|
|
CHARACTER*8 KEYNS(MAXMOT)
|
|
CHARACTER SEQ(MAXWIN),SEQW(MAXSEQ),CHRSET(IDM)
|
|
REAL HYDRO(IDM),ISOP(IDM),HYDRE(IDM),HYDHW(IDM)
|
|
CHARACTER*3 CODONS(26)
|
|
EQUIVALENCE (WORKI,WORKR)
|
|
C 1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6
|
|
C c,s,t,p,a,g,n,d,e,q,?,?,h,r,k,m,i,l,v,f,y,w
|
|
DATA HYDHW/-1.0,0.3,-0.4,0.0,-0.5,0.0,0.2,3.0,3.0,0.2,0.0,0.0,
|
|
+-0.5,3.0,3.0,-1.3,-1.8,-1.8,-1.5,-2.5,-2.3,-3.4,0.0,0.0,0.0,0.0/
|
|
DATA HYDRO/70.,36.,38.,29.,63.,41.,10.,10.,10.,10.,10.,10.,
|
|
+13.,0.,6.,64.,90.,82.,87.,72.,32.,36.,41.,41.,41.,41./
|
|
DATA HYDRE/0.29,-0.18,-0.05,0.12,0.62,0.48,-0.78,-0.9,-0.74,
|
|
+-0.85,-0.74,-0.85,-0.4,-2.53,-1.5,0.64,1.38,1.06,1.08,1.19,
|
|
+0.26,0.81,0.0,0.0,0.0,0.0/
|
|
C DATA ISOP/5.02,6.68,6.53,6.10,6.02,5.97,5.41,2.87,3.22,
|
|
C +5.65,5.00,5.00,7.58,10.76,9.74,5.75,6.02,5.98,5.97,5.98,
|
|
C +5.65,5.88,5.00,5.00,5.00,5.00/
|
|
DATA ISOP/0.0,0.0,0.0,0.0,0.0,0.0,0.0,-1.0,-1.0,
|
|
+0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,
|
|
+0.0,0.0,0.0,0.0,0.0,0.0/
|
|
DATA CODONS/'TGY','WSN','ACN','CCN',
|
|
+'GCN','GGN','AAY','GAY','GAR','CAR',
|
|
+'RAY','SAR','CAY','MGN','AAR','ATG',
|
|
+'ATH','YTN','GTN','TTY','TAY','TGG',
|
|
+'---','---','---','---'/
|
|
C Initialise help
|
|
CALL INTHLP('pip', TOPOPT)
|
|
C GET DEVICE NUMBERS
|
|
CALL UNITNO(KBIN,KBOUT,DEVNOS,MAXDEV)
|
|
CALL OPENGR(DEVNOS(3))
|
|
CALL GIDMAT(MAT1,IDM,22)
|
|
IGORT = 0
|
|
IFORNO = 0
|
|
LIBNO = 2
|
|
WRITE(KBOUT,1000)
|
|
1000 FORMAT(
|
|
+' PIP (Protein interpretation program) V5.0 Feb 1992',/,
|
|
+' Author: Rodger Staden'/)
|
|
C READ IN THE POINTERS TO THE HELP FILE
|
|
CALL SETHLP(HELPS,HELPE,BOTOPT,TOPOPT,POINTF,DEVNOS(4),KBOUT)
|
|
CALL INITGR(KBIN,KBOUT,HELPS(0),HELPE(0),HELPF,DEVNOS(4))
|
|
CALL INITLU(IDM)
|
|
IOK=0
|
|
C IF(MACTYP.EQ.MACSHT)CALL OPENB(DEVNOS(5),FILBUF,LREC,NREC,IOK)
|
|
C IF(IOK.NE.0)STOP
|
|
C GET SCREEN AND MARGIN SIZES
|
|
CALL GETMRG(ISXMAX,ISYMAX,MARGL,MARGR,MARGB,MARGT,
|
|
+MAXOPT,DEVNOS(1),FILMAR)
|
|
IIIIX=0
|
|
IIIIY=0
|
|
IDEV=KBOUT
|
|
MOPT=0
|
|
IDIMT = 0
|
|
C READ IN THE SCORE MATRIX (USUALLY MDM78)
|
|
CALL GETMAT(DEVNOS(1),FILEP,MATRIX,IDM,CHRSET,KBOUT,IOK)
|
|
IF(IOK.NE.0) GO TO 9999
|
|
CALL SETPAR(IOK)
|
|
IF(IOK.NE.0) GO TO 9999
|
|
2 CONTINUE
|
|
IDEVLL = DEVNOS(5)
|
|
IDEVEN = DEVNOS(6)
|
|
IDEVAN = DEVNOS(7)
|
|
IDEVDL = DEVNOS(8)
|
|
IDEVLF = DEVNOS(9)
|
|
CALL RDSEQ(
|
|
+SEQ(2+MXSPAN/2),MAXSEQ,IDIMT,J1,J2,ISTART,IEND,IDIM1,IDIMB,
|
|
+DEVNOS(1),FILNAM,KBIN,KBOUT,
|
|
+HELPS(3),HELPE(3),HELPF,DEVNOS(4),IDEV,IFORNO,
|
|
+IDEVLL,IDEVEN,IDEVAN,IDEVDL,
|
|
+IDEVLF,LIBNO,LIBLF,WORKI,MAXWIR,IOK)
|
|
IF(IOK.NE.0)GO TO 1
|
|
FILEIN=FILNAM
|
|
CALL SHOWFI(KBOUT,FILEIN)
|
|
C GIVE COMPOSITION AS A CHECK
|
|
IF(IDIMB.GT.0)CALL MWCALC(SEQ(2+MXSPAN/2),IDIMB,
|
|
+J1-ISTART+1,J2-ISTART+1,KBOUT,KBOUT)
|
|
C set pointers to sequence
|
|
********
|
|
C MAXSEQ = THE DIMENSION OF THE RAM BUFFER SEQ
|
|
C IDIMT = THE ACTUAL SEQUENCE LENGTH (AND THEREFORE THE NUMBER OF ELEMENTS
|
|
C IN THE DISK BUFFER)
|
|
C ISTART = THE SEQUENCE NUMBER OF THE CHARACTER OCCUPYING SEQ(1)
|
|
C J1 = THE SEQUENCE NUMBER OF THE FIRST CHARACTER IN THE ACTIVE REGION
|
|
C J2 = THE SEQUENCE NUMBER OF THE LAST CHARACTER IN THE ACTIVE REGION
|
|
C IDIM1 = J2-J1+1 I.E. THE NUMBER OF ELEMENTS IN THE ACTIVE REGION
|
|
C IEND = THE SEQUENCE NUMBER OF THE LAST ELEMENT OF SEQ
|
|
C IDIMB = IEND-ISTART+1 I.E. THE NUMBER OF ELEMENTS IN THE RAM BUFFER
|
|
********
|
|
IDIM1P=IDIMB+MXSPAN
|
|
1 CONTINUE
|
|
CALL BPAUSE(KBIN,KBOUT,IOK)
|
|
C IF(IOK.NE.0) GO TO 9999
|
|
C give menu, get option
|
|
C
|
|
CALL MENU(OPT,KOPT,MOPT,MAXOPT,MAXMEN,KBIN,KBOUT,
|
|
+ HELPS(0),HELPE(0),HELPF,DEVNOS(4))
|
|
C change region
|
|
IF((OPT.EQ.4).AND.(IDIMT.GT.0))THEN
|
|
C CALL REDEFA
|
|
C + (SEQ(2+MXSPAN/2),IDIMT,J1,J2,MAXSEQ,IDIM1,ISTART,IEND,IDIMB,
|
|
C + DEVNOS(5),KBIN,KBOUT,IOK,SEQW,LREC,NREC,HELPS(OPT),
|
|
C + HELPE(OPT),HELPF,DEVNOS(4),MACTYP,MACSHT,MACLNG)
|
|
CALL GTREG(KBIN,KBOUT,ISTART,IEND,J1,J2,
|
|
+ 'Define active region',
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),IOK)
|
|
IDIM1 = J2 - J1 + 1
|
|
GO TO 1
|
|
END IF
|
|
C STOP
|
|
IF(OPT.EQ.2)GO TO 9999
|
|
C
|
|
C LIST
|
|
C
|
|
IF((OPT.EQ.5).AND.(IDIMB.GT.0))THEN
|
|
CALL LSTSEP(SEQ(2+MXSPAN/2),IDIMB,IDEV,KBIN,KBOUT,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C WRITE OUT ACTIVE SEQUENCE
|
|
C
|
|
IF((OPT.EQ.8).AND.(IDIM1.GT.0))THEN
|
|
CALL WRTACT(DEVNOS(1),FILNAM,KBIN,KBOUT,
|
|
+ SEQ(J1+1-ISTART+1+MXSPAN/2),IDIM1,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4))
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C ruler
|
|
C
|
|
IF((OPT.EQ.12).AND.(IDIM1.GT.0))THEN
|
|
CALL RULER(J1,J2,MARGL,MARGR,
|
|
+ MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,KBIN,KBOUT,1,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4))
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C composition
|
|
C
|
|
IF((OPT.EQ.22).AND.(IDIM1.GT.0))THEN
|
|
CALL COMPH(SEQ,IDIM1P,MXSPAN,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,
|
|
+ J1,J2,KBIN,KBOUT,HYDRO,IDM,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C clear all
|
|
C
|
|
IF(OPT.EQ.10)THEN
|
|
CALL CLEARG
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C xhairs
|
|
C
|
|
IF((OPT.EQ.13).AND.(IDIM1.GT.0))THEN
|
|
XMAX=J2
|
|
XMIN=J1
|
|
YMAX=ISYMAX
|
|
YMIN=0.
|
|
CALL CLEARV
|
|
CALL XHAIRN(XMAX,XMIN,YMAX,YMIN,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),
|
|
+ ISXMAX,ISYMAX,IIIIX,IIIIY,N,KBOUT,
|
|
+ SEQ(2+MXSPAN/2),ISTART,IDIMB,
|
|
+ SEQ(2+MXSPAN/2),ISTART,IDIMB,1)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C clear vt100
|
|
C
|
|
IF(OPT.EQ.11)THEN
|
|
CALL CLEARV
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C CHANGE MARGINS
|
|
C
|
|
IF(OPT.EQ.14)THEN
|
|
CALL MARGC(ISXMAX,ISYMAX,MARGL,MARGR,MARGB,MARGT,
|
|
+ HELPS(OPT),HELPE(OPT),MAXOPT,HELPF,DEVNOS(4),KBIN,KBOUT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C plot map
|
|
C
|
|
IF((OPT.EQ.16).AND.(IDIM1.GT.0))THEN
|
|
CALL PLTMAP(DEVNOS(1),FILNAM,IDIM1,MARGL,MARGR,MARGB(OPT),
|
|
+ MARGT(OPT),ISXMAX,ISYMAX,J1,J2,KBIN,KBOUT,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4))
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C new file
|
|
C
|
|
IF(OPT.EQ.3)GO TO 2
|
|
C
|
|
C type text
|
|
C
|
|
IF(OPT.EQ.6)THEN
|
|
CALL TTEXT(DEVNOS(1),FILNAM,KBIN,KBOUT,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4))
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C help
|
|
C
|
|
IF(OPT.EQ.1)THEN
|
|
CALL HELP(HELPS,HELPE,BOTOPT,TOPOPT,HELPF,DEVNOS(4),
|
|
+ KBIN,KBOUT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C search
|
|
C
|
|
IF((OPT.EQ.17).AND.(IDIM1.GT.0))THEN
|
|
KOPT = 1
|
|
CALL SERCHP(SEQ(2+MXSPAN/2),IDIMB,J1,J2,ISTART,SEQW,MAXSD3,
|
|
+ SEQW(1+MAXSD3),MAXSD3,
|
|
+ SEQW(1+2*MAXSD3),MAXSD3,
|
|
+ WORKI,WORKI(1+10*MAXD36),WORKI(1+20*MAXD36),10*MAXD36,
|
|
+ WORKI(1+30*MAXD36),WORKI(1+31*MAXD36),WORKI(1+32*MAXD36),
|
|
+ WORKI(1+33*MAXD36),
|
|
+ WORKI(1+34*MAXD36),WORKI(1+35*MAXD36),MAXD36,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,
|
|
+ IDEV,DEVNOS(1),FILNAM,FILEA,FILEAA,KBIN,KBOUT,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C direct output to disk
|
|
C
|
|
IF(OPT.EQ.7)THEN
|
|
CALL REDIR(IDEV,DEVNOS(2),DEVNOS(3),IGORT,FILNAM,KBIN,KBOUT,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C signal searches from named plot files
|
|
C
|
|
IF((OPT.EQ.20).AND.(IDIM1.GT.0))THEN
|
|
CALL SIGNLP(SEQ(2+MXSPAN/2),IDIMB,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),
|
|
+ ISXMAX,ISYMAX,J1-ISTART+1,J2-ISTART+1,
|
|
+ DEVNOS(1),FILNAM,KBIN,KBOUT,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),IDEV,
|
|
+ WORKI,WORKR(1+IDM*MXWTLN),WORKI(1+2*IDM*MXWTLN),IDM,
|
|
+ MXWTLN,SEQW,CHRSET,KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C SEQFIT
|
|
C
|
|
IF((OPT.EQ.18).AND.(IDIM1.GT.0))THEN
|
|
CALL SQPFIT(SEQ(2+MXSPAN/2),IDIMB,SEQW,MAXSEQ,
|
|
+ WORKI,WORKI(1+MAXD2),MAXD2,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,
|
|
+ J1,J2,ISTART,IDEV,
|
|
+ DEVNOS(1),FILNAM,KBIN,KBOUT,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C calc mol wt
|
|
C
|
|
IF((OPT.EQ.21).AND.(IDIM1.GT.0))THEN
|
|
CALL MWCALC(SEQ(2+MXSPAN/2),IDIMB,
|
|
+ J1-ISTART+1,J2-ISTART+1,KBOUT,IDEV)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C plot charge
|
|
C
|
|
IF((OPT.EQ.23).AND.(IDIM1.GT.0))THEN
|
|
CALL COMPCP(SEQ,IDIM1P,MXSPAN,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,
|
|
+ J1-ISTART+1,J2-ISTART+1,KBIN,KBOUT,ISOP,IDM,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C sepfit
|
|
C
|
|
IF((OPT.EQ.19).AND.(IDIM1.GT.0))THEN
|
|
CALL SEPFIT(SEQ(2+MXSPAN/2),IDIMB,SEQW,MAXSEQ,
|
|
+ WORKI,WORKI(1+MAXD2),MAXD2,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,J1,J2,
|
|
+ ISTART,IDEV,
|
|
+ DEVNOS(1),FILNAM,KBIN,KBOUT,MATRIX,IDM,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C write labels
|
|
C
|
|
IF(OPT.EQ.15)THEN
|
|
CALL LABLER(KBIN,KBOUT,ISXMAX,ISYMAX,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4))
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C show settings and edit
|
|
C
|
|
IF(OPT.EQ.9)THEN
|
|
WRITE(KBOUT,4000)FILEIN,J1,J2,IDIM1
|
|
4000 FORMAT(' Sequence=',A,/,' Start=',I7,' End=',I7,' Length=',I7)
|
|
C THIS NEXT LINE IS BECAUSE SOMETIMES THE FILE IS NOT READY TO EDIT!
|
|
CLOSE(UNIT=DEVNOS(2))
|
|
CALL SEQEDT(SEQ(2+MXSPAN/2),MAXSEQ,IDIMB,KBIN,
|
|
+ KBOUT,HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),DEVNOS(1),
|
|
+ FILNAM,FILEIN,IDM,IOK)
|
|
IF(IOK.NE.0) GO TO 1
|
|
C CALL EDITSQ(SEQ(2+MXSPAN/2),MAXSEQ,SEQW,MAXSEQ,IDIMB,KBIN,
|
|
C + KBOUT,HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),1,DEVNOS(1),
|
|
C + FILNAM,PAA,IDM)
|
|
********
|
|
C MAXSEQ = THE DIMENSION OF THE RAM BUFFER SEQ
|
|
C IDIMT = THE ACTUAL SEQUENCE LENGTH (AND THEREFORE THE NUMBER OF ELEMENTS
|
|
C IN THE DISK BUFFER)
|
|
C ISTART = THE SEQUENCE NUMBER OF THE CHARACTER OCCUPYING SEQ(1)
|
|
C J1 = THE SEQUENCE NUMBER OF THE FIRST CHARACTER IN THE ACTIVE REGION
|
|
C J2 = THE SEQUENCE NUMBER OF THE LAST CHARACTER IN THE ACTIVE REGION
|
|
C IDIM1 = J2-J1+1 I.E. THE NUMBER OF ELEMENTS IN THE ACTIVE REGION
|
|
C IEND = THE SEQUENCE NUMBER OF THE LAST ELEMENT OF SEQ
|
|
C IDIMB = IEND-ISTART+1 I.E. THE NUMBER OF ELEMENTS IN THE RAM BUFFER
|
|
C THIS IS A FUDGE AND ONLY WORKS FOR UNBUFFERED SEQUENCES!!!!!!!!!!!
|
|
J1 = 1
|
|
J2 = IDIMB
|
|
IDIMT = IDIMB
|
|
IEND = IDIMB
|
|
IDIM1 = IDIMB
|
|
WRITE(KBOUT,4000)FILEIN,J1,J2,IDIM1
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C robson
|
|
C
|
|
IF((OPT.EQ.24).AND.(IDIM1.GT.0))THEN
|
|
CALL ROBSON(SEQ(2+MXSPAN/2),IDIMB,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,J1-ISTART+1,
|
|
+ J2-ISTART+1,KBIN,KBOUT,
|
|
+ DEVNOS(1),FILE12,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),IDEV,KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C hydrophobic moment
|
|
C
|
|
IF((OPT.EQ.25).AND.(IDIM1.GT.0))THEN
|
|
CALL HYDMOM(SEQ(J1+1-ISTART+1+MXSPAN/2),IDIM1,HYDRE,IDM,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),
|
|
+ ISXMAX,ISYMAX,KBIN,KBOUT,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C helix wheel
|
|
C
|
|
IF((OPT.EQ.26).AND.(IDIM1.GT.0))THEN
|
|
CALL HELIXW(SEQ(2+MXSPAN/2),IDIMB,ISTART,J1,J2,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,KBIN,KBOUT,
|
|
+ HYDRE,IDM,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C back translate
|
|
C
|
|
IF((OPT.EQ.27).AND.(IDIM1.GT.0))THEN
|
|
CALL BACK(SEQ(J1+1-ISTART+1+MXSPAN/2),IDIM1,
|
|
+ CODONS,KBIN,KBOUT,FILNAM,
|
|
+ DEVNOS(1),SEQW,MAXSEQ,WORKR,IDIM1P,MXSPAN,
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),KOPT)
|
|
GO TO 1
|
|
END IF
|
|
C
|
|
C pattern search
|
|
C
|
|
IF((OPT.EQ.28).AND.(IDIM1.GT.0))THEN
|
|
CALL PATTEN(SEQ(J1-ISTART+2+MXSPAN/2),IDIM1,SEQW,MAXSEQ,
|
|
+ WORKI(1),WORKI(MAXMOT+1),WORKI(2*MAXMOT+1),WORKI(3*MAXMOT+1),
|
|
+ WORKI(4*MAXMOT+1),WORKI(5*MAXMOT+1),WORKI(6*MAXMOT+1),
|
|
+ WORKI(7*MAXMOT+1),WORKI(8*MAXMOT+1),WORKI(9*MAXMOT+1),
|
|
+ WORKI(10*MAXMOT+1),WORKI(11*MAXMOT+1),WORKI(12*MAXMOT+1),
|
|
+ WORKI(13*MAXMOT+1),WORKI(14*MAXMOT+1),WORKI(15*MAXMOT+1),
|
|
+ WORKI(16*MAXMOT+1),WORKI(17*MAXMOT+1),WORKI(18*MAXMOT+1),
|
|
+ WORKI(19*MAXMOT+1),WORKI(20*MAXMOT+1),
|
|
+ WORKR(22*MAXMOT+1),WORKR(23*MAXMOT+1),
|
|
+ FILNAM,MAXMOT,MAXWTS,MATRIX,IDEV,DEVNOS(6),DEVNOS(7),
|
|
+ MARGL,MARGR,MARGB(OPT),MARGT(OPT),ISXMAX,ISYMAX,J1,
|
|
+ KBIN,KBOUT,DEVNOS(8),IDM,SEQ(1),MAT1,NAMSAV,KEYNS,CHRSET,
|
|
+ HELPS(OPT),HELPE(OPT),HELPF,DEVNOS(4),FOFNAM,DEVNOS(1))
|
|
C NB IVE SENT THE START OF SEQ TO BE USED IN PATTEN. THIS IS OK
|
|
C AS LONG AS MAXMOT<MXSPAN/2, AND NO MOTIF REQUIRES TO START TO
|
|
C THE LEFT OF THE FIRST REAL SEQUENCE ELEMENT
|
|
GO TO 1
|
|
END IF
|
|
GO TO 1
|
|
9999 CONTINUE
|
|
CALL SHUTD
|
|
END
|