656 lines
23 KiB
Fortran
656 lines
23 KiB
Fortran
C SAP (Sequence assembly program)
|
|
C AUTHOR RODGER STADEN
|
|
C 9-1-90 sent idev instead of kbout to join and enter
|
|
C 16-3-90 removed escape after bpause
|
|
C 2-5-90 Many changes related to introducing graphics
|
|
C 4-5-90 Allowed escape from getreg
|
|
C 9-5-90 Introduced a default gel reading
|
|
C 23-8-90 Added calls to SHOWFU
|
|
C 28-11-90 See dbsys89
|
|
C 3-12-90 Add invocation of contig editor
|
|
C 25-02-91 tag and comment files
|
|
C 28-2-91 changed maxsav from 1000 to maxglm
|
|
C 30-4-91 changes help references to DAP*
|
|
C 28-7-91 added extra parameter for quality calc: maxgood, only the parts
|
|
C of reads upto this length are used
|
|
C 21-8-91 Added an option to find internal joins: AUTOJ
|
|
C 27-8-91 Added buffer flushing for database files
|
|
C 1-11-91 Upped MAXSEQ to 150000
|
|
SUBROUTINE FMAIN()
|
|
INTEGER CHRSIZ,ECHRSZ
|
|
PARAMETER (
|
|
+ NAMLEN = 40,
|
|
+ MAXDEV = 12,
|
|
+ MAXSEQ=150000,
|
|
+ MAXGLM=4096,
|
|
+ MAXGL2=MAXGLM*2,
|
|
+ MINMEN=-3,
|
|
+ CHRSIZ=4,
|
|
+ ECHRSZ = 6,
|
|
+ IDT1=ECHRSZ*MAXGL2,
|
|
+ IDT2=2*CHRSIZ*MAXGL2,
|
|
+ IDT3=2*MAXGL2,
|
|
+ IDT4=2*ECHRSZ*MAXGL2,
|
|
+ MAXDB=1000)
|
|
INTEGER BOTOPT,TOPOPT,DEVNOS(MAXDEV)
|
|
INTEGER RELPG(MAXDB),LREG,RREG,ANS
|
|
INTEGER TEMP1(IDT1),TEMP2(IDT2),TEMP3(IDT4)
|
|
INTEGER LNGTHG(MAXDB),LNBR(MAXDB),RNBR(MAXDB)
|
|
CHARACTER*(NAMLEN) HELPF,POINTF,FILNAM,NAMPRO,FILE,NAMARC,FILMAR
|
|
CHARACTER*(NAMLEN) SHONAM
|
|
CHARACTER GEL(MAXGLM)
|
|
CHARACTER GEL2(MAXGLM),GEL3(MAXGLM),GEL4(MAXGLM)
|
|
PARAMETER (BOTOPT=0,TOPOPT=35)
|
|
PARAMETER (HELPF='DAPHELP')
|
|
PARAMETER (POINTF='DAPHPNT')
|
|
PARAMETER (FILMAR='DAPMARG')
|
|
INTEGER HELPS(BOTOPT:TOPOPT),HELPE(BOTOPT:TOPOPT)
|
|
INTEGER MARGB(TOPOPT),MARGT(TOPOPT)
|
|
CHARACTER SEQ1(MAXSEQ)
|
|
C DBAUTO TEMP3A = TEMP1, SEQ3A = GEL3, SEQ2A = GEL2
|
|
C MATCHA = GEL, SEQ4A = GEL4
|
|
PARAMETER (LENGTH = 6,
|
|
+ MAXCON = 500,
|
|
+ MAXSAV = MAXGLM,
|
|
+ LPOWRC = CHRSIZ**LENGTH)
|
|
INTEGER CONST(LENGTH)
|
|
INTEGER POSNS(MAXSEQ),WORDP(LPOWRC),WORDN(LPOWRC),GELN(MAXGLM)
|
|
INTEGER CENDS(MAXCON),NENDS(MAXCON)
|
|
CHARACTER SEQC2(MAXGLM,2),SEQG2(MAXGLM,2)
|
|
CHARACTER SEQ5(MAXGLM),SEQG3(MAXGLM),SEQC3(MAXGLM)
|
|
INTEGER SAV1(MAXSAV),SAV2(MAXSAV),SAV3(MAXSAV)
|
|
INTEGER WINDOW
|
|
C DBAUTO
|
|
EQUIVALENCE (TEMP2,TEMP1)
|
|
EQUIVALENCE (TEMP1,TEMP3)
|
|
COMMON /DEVILS/ IDEVT,IDEVC,IDBSIZ,RELPG
|
|
IDM = 5
|
|
CALL INITS
|
|
CALL INITLU(IDM)
|
|
CALL INTHLP('dap', TOPOPT)
|
|
CALL UNITNO(KBIN,KBOUT,DEVNOS,MAXDEV)
|
|
CALL OPENGR(DEVNOS(10))
|
|
WRITE(KBOUT,1000)
|
|
1000 FORMAT(
|
|
+' DAP (Development assembly program) V5.1 Aug 1992',/,
|
|
+' Author: Rodger Staden')
|
|
IGORT = 0
|
|
IDEV = KBOUT
|
|
C GET SCREEN AND MARGIN SIZES
|
|
CALL GETMRG(ISXMAX,ISYMAX,MARGL,MARGR,MARGB,MARGT,
|
|
+TOPOPT,DEVNOS(5),FILMAR)
|
|
CALL SETHLP(HELPS,HELPE,BOTOPT,TOPOPT,POINTF,DEVNOS(5),KBOUT)
|
|
CALL INITGR(KBIN,KBOUT,HELPS(0),HELPE(0),HELPF,IDEVH)
|
|
IOPEN=1
|
|
LINLEN=50
|
|
PERCD=0.75
|
|
WINDOW = 25
|
|
MXGOOD = MAXGLM
|
|
IGWIND = 1000
|
|
FILE = ' '
|
|
MAXGEL = MAXGLM
|
|
IDEVT = DEVNOS(11)
|
|
IDEVC = DEVNOS(12)
|
|
IDBSIZ=MAXDB
|
|
IDBSIS=IDBSIZ
|
|
SHONAM = ' '
|
|
CALL SHOWFI(KBOUT,SHONAM)
|
|
ANS = 0
|
|
CALL YESONO(ANS,'Open existing database','Start new database',
|
|
+ HELPS(3),HELPE(3),HELPF,DEVNOS(5),KBIN,KBOUT)
|
|
IF(ANS.LT.0)GO TO 10
|
|
IF(ANS.GT.1)GO TO 10
|
|
IF(ANS.EQ.1)THEN
|
|
C CALL SHOWFU(KBOUT,'Start new database')
|
|
CALL DBSTAR(NAMPRO,GEL,IDBSIS,IDBSIZ,KBIN,KBOUT,DEVNOS(1),
|
|
+ DEVNOS(2),DEVNOS(3),IDEVT,IDEVC,
|
|
+ IERR,HELPS(NOPT),HELPE(NOPT),
|
|
+ DEVNOS(5),HELPF,MAXGEL,MAXGLM,IDM)
|
|
NGELS=0
|
|
NCONTS=0
|
|
LLINO = 0
|
|
IF(IERR.EQ.0) THEN
|
|
IOPEN=0
|
|
SHONAM = NAMPRO(1:MAX(1,INDEX(NAMPRO,'.'))+1)
|
|
CALL SHOWFI(KBOUT,SHONAM)
|
|
END IF
|
|
CALL INITLU(IDM)
|
|
GO TO 10
|
|
END IF
|
|
IF(ANS.EQ.0)THEN
|
|
C CALL SHOWFU(KBOUT,'Open database')
|
|
NGELS=0
|
|
NCONTS=0
|
|
CALL DBOPEN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,NAMPRO,GEL,
|
|
+ IDBSIS,IDBSIZ,JERR,KBIN,KBOUT,DEVNOS(1),DEVNOS(2),DEVNOS(3),
|
|
+ IDEVT,IDEVC,MAXGEL,MAXGLM,LLINO,IDM,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
IF(JERR.EQ.0)IOPEN=0
|
|
IF(NGELS.GT.0)CALL DBSTAT(RELPG,LNGTHG,LNBR,RNBR,NGELS,
|
|
+ NCONTS,IDBSIZ,KBOUT)
|
|
CALL INITLU(IDM)
|
|
SHONAM = NAMPRO(1:MAX(1,INDEX(NAMPRO,'.'))+1)
|
|
CALL SHOWFI(KBOUT,SHONAM)
|
|
GO TO 10
|
|
END IF
|
|
MENUN = 0
|
|
10 CONTINUE
|
|
C
|
|
C Flush the database buffers, just in case!
|
|
C
|
|
IF (IOPEN.EQ.0) THEN
|
|
CALL FLUSHL(DEVNOS(1))
|
|
CALL FLUSHL(DEVNOS(2))
|
|
CALL FLUSHL(DEVNOS(3))
|
|
CALL FLUSHL(IDEVT)
|
|
CALL FLUSHL(IDEVC)
|
|
END IF
|
|
CALL BPAUSE(KBIN,KBOUT,IOK)
|
|
C CALL SHOWFU(KBOUT,' ')
|
|
C IF(IOK.NE.0) GO TO 9999
|
|
C CALL DBMENT(MENU,NOPT,TOPOPT,HELPS(0),HELPE(0),HELPF,DEVNOS(5),
|
|
C +KBIN,KBOUT)
|
|
CALL MENU(NOPT, KOPT, MENUN, TOPOPT, MINMEN, KBIN, KBOUT,
|
|
+ HELPS(0), HELPE(0), HELPF, DEVNOS(5))
|
|
IF(NOPT.EQ.3)THEN
|
|
ANS = 0
|
|
CALL YESONO(ANS,'Open existing database','Start new database',
|
|
+ HELPS(3),HELPE(3),HELPF,DEVNOS(5),KBIN,KBOUT)
|
|
IF(ANS.LT.0)GO TO 10
|
|
IF(ANS.GT.1)GO TO 10
|
|
MAXGEL = MAXGLM
|
|
IF(IOPEN.EQ.0)THEN
|
|
CLOSE(UNIT=DEVNOS(1))
|
|
CLOSE(UNIT=DEVNOS(2))
|
|
CLOSE(UNIT=DEVNOS(3))
|
|
CLOSE(UNIT=IDEVC)
|
|
CLOSE(UNIT=IDEVT)
|
|
IOPEN=1
|
|
END IF
|
|
IDBSIZ=MAXDB
|
|
IDBSIS=IDBSIZ
|
|
IF(ANS.EQ.1)THEN
|
|
C CALL SHOWFU(KBOUT,'Start a database')
|
|
CALL DBSTAR(NAMPRO,GEL,IDBSIS,IDBSIZ,KBIN,KBOUT,DEVNOS(1),
|
|
+ DEVNOS(2),DEVNOS(3),IDEVT,IDEVC,
|
|
+ IERR,HELPS(NOPT),HELPE(NOPT),
|
|
+ DEVNOS(5),HELPF,MAXGEL,MAXGLM,IDM)
|
|
NGELS=0
|
|
NCONTS=0
|
|
IF(IERR.EQ.0)IOPEN=0
|
|
CALL INITLU(IDM)
|
|
SHONAM = NAMPRO(1:MAX(1,INDEX(NAMPRO,'.'))+1)
|
|
CALL SHOWFI(KBOUT,SHONAM)
|
|
GO TO 10
|
|
END IF
|
|
IF(ANS.EQ.0)THEN
|
|
C CALL SHOWFU(KBOUT,'Open database')
|
|
NGELS=0
|
|
NCONTS=0
|
|
CALL DBOPEN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,NAMPRO,GEL,
|
|
+ IDBSIS,IDBSIZ,JERR,KBIN,KBOUT,DEVNOS(1),DEVNOS(2),DEVNOS(3),
|
|
+ IDEVT,IDEVC,MAXGEL,MAXGLM,LLINO,IDM,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
IF(JERR.EQ.0)IOPEN=0
|
|
IF(NGELS.GT.0)CALL DBSTAT(RELPG,LNGTHG,LNBR,RNBR,NGELS,
|
|
+ NCONTS,IDBSIZ,KBOUT)
|
|
CALL INITLU(IDM)
|
|
SHONAM = NAMPRO(1:MAX(1,INDEX(NAMPRO,'.'))+1)
|
|
CALL SHOWFI(KBOUT,SHONAM)
|
|
GO TO 10
|
|
END IF
|
|
END IF
|
|
C STOP
|
|
IF(NOPT.EQ.2)THEN
|
|
IF(NGELS.GT.0)CALL DBSTAT(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
+ IDBSIZ,KBOUT)
|
|
GO TO 9999
|
|
END IF
|
|
|
|
|
|
C clear all
|
|
C
|
|
IF(NOPT.EQ.10)THEN
|
|
C CALL SHOWFU(KBOUT,'Clear graphics')
|
|
CALL CLEARG
|
|
GO TO 10
|
|
END IF
|
|
C clear VT100
|
|
C
|
|
IF(NOPT.EQ.11)THEN
|
|
C CALL SHOWFU(KBOUT,'Clear text')
|
|
CALL CLEARV
|
|
GO TO 10
|
|
END IF
|
|
C
|
|
C xhairs
|
|
C
|
|
IF(NOPT.EQ.13) THEN
|
|
C CALL SHOWFU(KBOUT,'Use xhair')
|
|
CALL XHSAP(RELPG,LNGTHG,LNBR,RNBR,
|
|
+ IDBSIZ,NCONTS,LLINO,LINCON,LREG,RREG,
|
|
+ WINDOW,IGWIND,LENCON,IDEPTH,JDEPTH,
|
|
+ MARGL,MARGR,MARGB,MARGT,TOPOPT,ISXMAX,ISYMAX,KBIN,IDEV,
|
|
+ KBOUT,GEL,GEL2,DEVNOS(2),DEVNOS(3),LINLEN,PERCD,MAXGEL,IDM,
|
|
+ SEQ1,MAXSEQ,NGELS,TEMP3,ECHRSZ,MAXGL2,GEL3,GEL4,33,34,29,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),MXGOOD)
|
|
GO TO 10
|
|
END IF
|
|
C
|
|
C CHANGE MARGINS
|
|
C
|
|
IF(NOPT.EQ.14)THEN
|
|
C CALL SHOWFU(KBOUT,'Change margins')
|
|
CALL MARGC(ISXMAX,ISYMAX,MARGL,MARGR,MARGB,MARGT,
|
|
+ HELPS(NOPT),HELPE(NOPT),TOPOPT,HELPF,DEVNOS(5),KBIN,KBOUT)
|
|
GO TO 10
|
|
END IF
|
|
C ruler
|
|
C
|
|
IF(NOPT.EQ.12) THEN
|
|
LENCON = RREG - LREG + 1
|
|
IF(LENCON.GT.0) THEN
|
|
C CALL SHOWFU(KBOUT,'Show ruler')
|
|
CALL RULER(LREG,RREG,MARGL,MARGR,
|
|
+ MARGB(NOPT),MARGT(NOPT),ISXMAX,ISYMAX,KBIN,KBOUT,1,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
GO TO 10
|
|
END IF
|
|
END IF
|
|
C labler
|
|
IF(NOPT.EQ.15)THEN
|
|
C CALL SHOWFU(KBOUT,'Label diagram')
|
|
CALL LABLER(KBIN,KBOUT,ISXMAX,ISYMAX,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
GO TO 10
|
|
END IF
|
|
IF(NOPT.EQ.16) THEN
|
|
C CALL SHOWFU(KBOUT,'Plot map')
|
|
C map
|
|
LENCON = RREG - LREG + 1
|
|
IF(LENCON.GT.0) THEN
|
|
CALL PLTMAP(DEVNOS(4),FILNAM,LENCON,MARGL,MARGR,MARGB(NOPT),
|
|
+ MARGT(NOPT),ISXMAX,ISYMAX,LREG,RREG,KBIN,KBOUT,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
END IF
|
|
GO TO 10
|
|
END IF
|
|
C IF((NOPT.EQ.21).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Enter new gel reading')
|
|
CC ENTER
|
|
C CALL ENTER(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
C + GEL,GEL2,IDBSIZ,IDEV,KBIN,KBOUT,DEVNOS(1),DEVNOS(2),
|
|
C + DEVNOS(3),DEVNOS(4),LINLEN,PERCD,FILNAM,
|
|
C + HELPS(NOPT),HELPE(NOPT),HELPS(4),HELPE(4),HELPF,DEVNOS(5),
|
|
C + MAXGEL,IDM,LLINO)
|
|
C GO TO 10
|
|
C END IF
|
|
IF((NOPT.EQ.25).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Show relationships')
|
|
C PRINT DB
|
|
CALL DBPRNT(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,IDBSIZ,IDEV,
|
|
+ KBIN,KBOUT,DEVNOS(3),LLINO,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.5).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Display contig')
|
|
C DISPLAY
|
|
CALL GETLN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,LINCON,
|
|
+ LLINO,IERR,IDBSIZ,KBIN,KBOUT,DEVNOS(3),
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
IF(IERR.EQ.0)THEN
|
|
CALL GETREG(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
+ 1,RELPG(LINCON),LREG,RREG,LINCON,LLINO,IDBSIZ,KBIN,KBOUT,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),IERR)
|
|
IF(IERR.EQ.0)THEN
|
|
CALL DSPLAY(RELPG,LNGTHG,LNBR,RNBR,
|
|
+ GEL,LLINO,LINCON,LREG,RREG,GEL2,I1,I2,0,I,IDBSIZ,IDEV,KBOUT,
|
|
+ DEVNOS(2),DEVNOS(3),LINLEN,PERCD,MAXGEL,IDM)
|
|
END IF
|
|
END IF
|
|
GO TO 10
|
|
END IF
|
|
200 CONTINUE
|
|
C IF((NOPT.EQ.-22).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Join contigs')
|
|
CC JOIN
|
|
C WRITE(KBOUT,1006)
|
|
C1006 FORMAT(' Which contigs do you want to join ?')
|
|
C WRITE(KBOUT,1017)
|
|
C1017 FORMAT( ' Left contig')
|
|
C LLINOL = 0
|
|
C LLINOR = 0
|
|
C CALL GETLN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,LNCONL,LLINOL,
|
|
C + IERR,IDBSIZ,KBIN,KBOUT,DEVNOS(3),
|
|
C + HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
C IF(IERR.EQ.0)THEN
|
|
C WRITE(KBOUT,1018)
|
|
C1018 FORMAT( ' Right contig')
|
|
C CALL GETLN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
C + LNCONR,LLINOR,IERR,IDBSIZ,KBIN,KBOUT,DEVNOS(3),
|
|
C + HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
C IF(IERR.EQ.0)THEN
|
|
CC CHECK TO SEE IF MAKING A CIRCLE!
|
|
C IF(LLINOL.EQ.LLINOR)THEN
|
|
C WRITE(KBOUT,*)' Making circles is not allowed!'
|
|
C GO TO 200
|
|
C END IF
|
|
C CALL JOIN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
C + LNCONL,LLINOL,LNCONR,LLINOR,GEL,GEL2,
|
|
C + IDBSIZ,IDEV,KBIN,KBOUT,DEVNOS(1),DEVNOS(2),
|
|
C + DEVNOS(3),LINLEN,PERCD,
|
|
C + HELPS(NOPT),HELPE(NOPT),HELPS(4),HELPE(4),HELPF,DEVNOS(5),
|
|
C + MAXGEL,IDM)
|
|
C END IF
|
|
C END IF
|
|
C GO TO 10
|
|
C END IF
|
|
IF((NOPT.EQ.23).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Complement contig')
|
|
C COMPLEMENT
|
|
CALL GETLN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
+ LINCON,LLINO,IERR,IDBSIZ,KBIN,KBOUT,DEVNOS(3),
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
IF(IERR.EQ.0)THEN
|
|
CALL CMPLMT(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
+ LINCON,LLINO,GEL,IDBSIZ,KBOUT,DEVNOS(1),DEVNOS(2),
|
|
+ MAXGEL)
|
|
END IF
|
|
GO TO 10
|
|
END IF
|
|
CC EDIT
|
|
C IF((NOPT.EQ.-4).AND.(IOPEN.EQ.0))THEN
|
|
CC EDIT DB
|
|
C CALL GETLN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,LINCON,
|
|
C + LLINO,IERR,IDBSIZ,KBIN,KBOUT,DEVNOS(3),
|
|
C + HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
C IF(IERR.EQ.0)THEN
|
|
C CALL DBEDIT(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
C + GEL,LINCON,0,0,IDBSIZ,KBIN,KBOUT,DEVNOS(1),DEVNOS(2),
|
|
C + HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),MAXGEL)
|
|
C END IF
|
|
C GO TO 10
|
|
C END IF
|
|
C PLOT SINGLE CONTIG
|
|
IF((NOPT.EQ.33).AND.(IOPEN.EQ.0))THEN
|
|
CALL GETLN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,LINCON,
|
|
+ LLINO,IERR,IDBSIZ,KBIN,KBOUT,DEVNOS(3),
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
IF(IERR.EQ.0)THEN
|
|
CALL GETREG(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
+ 1,RELPG(LINCON),LREG,RREG,LINCON,LLINO,IDBSIZ,KBIN,KBOUT,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),IERR)
|
|
IF(IERR.EQ.0)THEN
|
|
LENCON = RREG - LREG + 1
|
|
CALL FDEPTH(RELPG,LNGTHG,LNBR,RNBR,
|
|
+ IDBSIZ,LLINO,LREG,RREG,LENCON,
|
|
+ MARGL,MARGR,MARGB(NOPT),MARGT(NOPT),ISXMAX,ISYMAX)
|
|
END IF
|
|
END IF
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.26).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Alter relationships')
|
|
C FIX
|
|
CALL DBFIX(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
+ GEL,GEL2,IDBSIZ,KBIN,KBOUT,DEVNOS(1),DEVNOS(2),DEVNOS(3),
|
|
+ HELPS(NOPT),HELPE(NOPT),
|
|
+ HELPS(4),HELPE(4),HELPF,DEVNOS(5),MAXGEL,IDEVT,IDEVC)
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.24).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Copy database')
|
|
C COPY
|
|
CALL DBCOPY(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,GEL,
|
|
+ NAMPRO,DEVNOS(4),IDBSIZ,JERR,KBIN,KBOUT,DEVNOS(1),
|
|
+ DEVNOS(2),DEVNOS(3),IDEVT,IDEVC,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),MAXGEL,MAXDB,IDM)
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.19).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Check database for consistency')
|
|
C CHECK
|
|
CALL DBCHEK(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,IDBSIZ,
|
|
+ TEMP1,IERR,KBOUT)
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.29).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Examine quality')
|
|
C SCAN
|
|
IDIM1=MAXSEQ
|
|
CALL DBSCAN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,SEQ1,
|
|
+ IDIM1,GEL,IDBSIZ,TEMP3,2,ECHRSZ,MAXGL2,
|
|
+ KBIN,KBOUT,DEVNOS(2),IDEV,LINLEN,PERCD,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),MAXGEL,GEL3,GEL4,
|
|
+ MARGL,MARGR,MARGB(NOPT),MARGT(NOPT),ISXMAX,ISYMAX,DEVNOS(3),
|
|
+ LLINO,LINCON,LREG,RREG,MXGOOD)
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.8).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Make consensus')
|
|
C CONSENSUS
|
|
IDIM1=MAXSEQ
|
|
CALL CONSEN(RELPG,LNGTHG,LNBR,RNBR,NAMPRO,NGELS,NCONTS,SEQ1,
|
|
+ IDIM1,GEL,IDBSIZ,TEMP1,ECHRSZ,MAXGL2,
|
|
+ KBIN,KBOUT,DEVNOS(2),DEVNOS(4),FILNAM,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),MAXGEL,IDM,PERCD,
|
|
+ DEVNOS(3),LLINO)
|
|
CLOSE(UNIT=DEVNOS(4))
|
|
GO TO 10
|
|
END IF
|
|
IF(NOPT.EQ.7)THEN
|
|
C CALL SHOWFU(KBOUT,'Redirect output')
|
|
CALL REDIR(IDEV,DEVNOS(6),DEVNOS(10),IGORT,FILNAM,KBIN,KBOUT,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),KOPT)
|
|
GO TO 10
|
|
END IF
|
|
C HELP
|
|
IF(NOPT.EQ.1)THEN
|
|
C CALL SHOWFU(KBOUT,'Help')
|
|
C HELP
|
|
CALL HELP(HELPS,HELPE,BOTOPT,TOPOPT,
|
|
+ HELPF,DEVNOS(5),KBIN,KBOUT)
|
|
GO TO 10
|
|
END IF
|
|
IF(NOPT.EQ.27)THEN
|
|
C CALL SHOWFU(KBOUT,'Set parameters')
|
|
C SET DISPLAY PARAMETERS
|
|
MN = 10
|
|
MX = 100
|
|
CALL GETINT(MN,MX,LINLEN,'Display line length',
|
|
+ IVAL,KBIN,KBOUT,HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),IOK)
|
|
IF(IOK.EQ.0) LINLEN = IVAL
|
|
IPCMIN = 51
|
|
IPCMAX = 100
|
|
IPCD = INT(PERCD*100.)
|
|
CALL GETINT(IPCMIN,IPCMAX,IPCD,
|
|
+ 'Percentage score for consensus',
|
|
+ IPVAL,KBIN,KBOUT,HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),IOK)
|
|
IF(IOK.EQ.0) THEN
|
|
PERCD = REAL(IPVAL)/100.
|
|
END IF
|
|
MN = 1
|
|
MX = MAXGLM
|
|
CALL GETINT(MN,MX,MXGOOD,
|
|
+ 'Maximum read length for quality analysis',
|
|
+ IVAL,KBIN,KBOUT,HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),IOK)
|
|
IF(IOK.EQ.0) MXGOOD = IVAL
|
|
MN = 1
|
|
MX = MAXSEQ
|
|
CALL GETINT(MN,MX,WINDOW,'Text window length',
|
|
+ IVAL,KBIN,KBOUT,HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),IOK)
|
|
IF(IOK.EQ.0) WINDOW = IVAL
|
|
MN = 1
|
|
MX = MAXSEQ
|
|
CALL GETINT(MN,MX,IGWIND,'Graphics window length',
|
|
+ IVAL,KBIN,KBOUT,HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),IOK)
|
|
IF(IOK.EQ.0) IGWIND = IVAL
|
|
GO TO 10
|
|
END IF
|
|
IF(NOPT.EQ.6)THEN
|
|
C CALL SHOWFU(KBOUT,'Display text file')
|
|
CALL TTEXT(DEVNOS(4),FILNAM,KBIN,KBOUT,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
CLOSE(UNIT=DEVNOS(4))
|
|
GO TO 10
|
|
END IF
|
|
IF(NOPT.EQ.28) THEN
|
|
C CALL SHOWFU(KBOUT,'Highlight disagreements')
|
|
CALL HIGHLT(SEQ1,SEQ1(6001),SEQ1(10001),KBIN,KBOUT,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),DEVNOS(7),
|
|
+ DEVNOS(8),FILE,IOK)
|
|
CLOSE(UNIT=DEVNOS(7))
|
|
CLOSE(UNIT=DEVNOS(8))
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.34).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'Plot contigs')
|
|
C PLOT ALL CONTIGS
|
|
CALL PLC(RELPG,LNGTHG,LNBR,RNBR,IDBSIZ,0,0,
|
|
+ NCONTS,MARGL,MARGR,MARGB(NOPT),MARGT(NOPT),ISXMAX,ISYMAX)
|
|
GO TO 10
|
|
END IF
|
|
CC AUTO EDIT
|
|
C IF((NOPT.EQ.30).AND.(IOPEN.EQ.0))THEN
|
|
C CALL SHOWFU(KBOUT,'AutoEdit a contig')
|
|
C WRITE(KBOUT,*)'Make a copy first!'
|
|
C CALL GETLN(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,LINCON,
|
|
C + LLINO,IERR,IDBSIZ,KBIN,KBOUT,DEVNOS(3),
|
|
C + HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
C IF(IERR.EQ.0)THEN
|
|
C CALL GETREG(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,
|
|
C + 1,RELPG(LINCON),LREG,RREG,LINCON,LLINO,IDBSIZ,KBIN,KBOUT,
|
|
C + HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),IERR)
|
|
C IF(IERR.EQ.0) THEN
|
|
C IDIM1=MAXSEQ
|
|
C CALL SUMMER(RELPG,LNGTHG,LNBR,RNBR,NGELS,NCONTS,SEQ1,IDIM1,
|
|
C + GEL,LREG,RREG,LLINO,IDBSIZ,TEMP1,ECHRSZ,MAXGL2,
|
|
C + DEVNOS(2),MAXGEL,IDM,PERCD)
|
|
C CALL AEDIT(RELPG,LNGTHG,LNBR,RNBR,IDBSIZ,LLINO,LINCON,
|
|
C + GEL,MAXGEL,SEQ1,IDIM1,DEVNOS(2),DEVNOS(1),LREG,RREG,
|
|
C + KBOUT)
|
|
C END IF
|
|
C END IF
|
|
C GO TO 10
|
|
C END IF
|
|
C IF((NOPT.EQ.9).AND.(IOPEN.EQ.0)) THEN
|
|
C CALL SHOWFU(KBOUT,'Screen Edit a contig')
|
|
C CALL CEDT(KBIN,KBOUT,
|
|
C + POSNS(1),POSNS(1001),POSNS(2001),
|
|
C + MAXDB,POSNS(3001),POSNS(3101),50,
|
|
C + RELPG,LNGTHG,LNBR,RNBR,
|
|
C + IDBSIZ,NGELS,NCONTS,GEL,GEL2,MAXGEL,LINCON,PERCD,IDM,
|
|
C + HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),DEVNOS(4),
|
|
C + DEVNOS(1),DEVNOS(2),DEVNOS(3),LINLEN,FILNAM,LLINO,IOK)
|
|
C GO TO 10
|
|
C END IF
|
|
IF((NOPT.EQ.4).AND.(IOPEN.EQ.0))THEN
|
|
C CALL UP CONTIG EDITOR
|
|
CALL CONEDT(KBIN,KBOUT,
|
|
+ POSNS(1),POSNS(1001),POSNS(2001),
|
|
+ MAXDB,POSNS(3001),POSNS(3101),50,
|
|
+ RELPG,LNGTHG,LNBR,RNBR,
|
|
+ IDBSIZ,NGELS,NCONTS,GEL,GEL2,MAXGEL,LINCON,PERCD,IDM,
|
|
+ HELPS(9),HELPE(9),HELPF,DEVNOS(5),DEVNOS(4),
|
|
+ DEVNOS(1),DEVNOS(2),DEVNOS(3),IDEVT,IDEVC,
|
|
+ LINLEN,FILNAM,LLINO,IOK,
|
|
+ IERR,TEMP1)
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.22).AND.(IOPEN.EQ.0))THEN
|
|
C CALL UP JOIN EDITOR
|
|
CALL JOINED(KBIN,KBOUT,
|
|
+ POSNS(1),POSNS(1001),POSNS(2001),
|
|
+ MAXDB,POSNS(3001),POSNS(3101),50,
|
|
+ RELPG,LNGTHG,LNBR,RNBR,
|
|
+ IDBSIZ,NGELS,NCONTS,GEL,GEL2,MAXGEL,LINCON,PERCD,IDM,
|
|
+ HELPS(9),HELPE(9),HELPF,DEVNOS(5),DEVNOS(4),
|
|
+ DEVNOS(1),DEVNOS(2),DEVNOS(3),IDEVT,IDEVC,
|
|
+ LINLEN,FILNAM,LLINO,IOK,
|
|
+ IERR,TEMP1)
|
|
GO TO 10
|
|
END IF
|
|
IF(NOPT.EQ.17) THEN
|
|
C CALL SHOWFU(KBOUT,'Screen for restriction sites')
|
|
CALL SCRENR(GEL2,MAXGEL,GEL3,NAMARC,FILE,
|
|
+ DEVNOS(4),DEVNOS(7),DEVNOS(8),DEVNOS(9),IDEV,KBIN,KBOUT,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
CLOSE(UNIT=DEVNOS(4))
|
|
CLOSE(UNIT=DEVNOS(7))
|
|
CLOSE(UNIT=DEVNOS(8))
|
|
CLOSE(UNIT=DEVNOS(9))
|
|
GO TO 10
|
|
END IF
|
|
IF(NOPT.EQ.18) THEN
|
|
C CALL SHOWFU(KBOUT,'Screen against vector')
|
|
CALL SCRENV(MAXGEL,WORDP,WORDN,LPOWRC,POSNS,GELN,
|
|
+ SEQ1,MAXSEQ,GEL2,GEL3,GEL4,LENGTH,
|
|
+ SAV1,SAV2,SAV3,MAXSAV,CENDS,NENDS,MAXCON,CONST,
|
|
+ KBIN,KBOUT,DEVNOS(4),DEVNOS(7),DEVNOS(8),DEVNOS(9),IDEV,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),NAMARC,FILE,IOK)
|
|
CLOSE(UNIT=DEVNOS(4))
|
|
CLOSE(UNIT=DEVNOS(7))
|
|
CLOSE(UNIT=DEVNOS(8))
|
|
CLOSE(UNIT=DEVNOS(9))
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.20).AND.(IOPEN.EQ.0).AND.(IDM.EQ.5)) THEN
|
|
C CALL SHOWFU(KBOUT,'Auto assemble sequences')
|
|
CALL DBAUTO(RELPG,LNGTHG,LNBR,RNBR,MAXDB,IDBSIZ,
|
|
+NGELS,NCONTS,MAXGEL,
|
|
+TEMP1,WORDP,WORDN,LPOWRC,POSNS,GELN,
|
|
+SEQ1,MAXSEQ,GEL2,GEL3,GEL4,SEQ5,SEQC2,SEQG2,GEL,
|
|
+MAXGLM,MAXGL2,CHRSIZ,ECHRSZ,LENGTH,
|
|
+SAV1,SAV2,SAV3,MAXSAV,CENDS,NENDS,MAXCON,CONST,
|
|
+KBIN,KBOUT,DEVNOS(1),DEVNOS(2),DEVNOS(3),
|
|
+DEVNOS(4),DEVNOS(7),DEVNOS(8),IDEV,IDEVC,IDEVT,
|
|
+HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),NAMARC,NAMPRO,FILE,
|
|
+PERCD,IOPEN,IDM,SEQG3,SEQC3,IOK)
|
|
CLOSE(UNIT=DEVNOS(4))
|
|
CLOSE(UNIT=DEVNOS(7))
|
|
CLOSE(UNIT=DEVNOS(8))
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.35).AND.(IOPEN.EQ.0).AND.(IDM.EQ.5)) THEN
|
|
C CALL SHOWFU(KBOUT,'Find internal joins')
|
|
CALL AUTOJ(RELPG,LNGTHG,LNBR,RNBR,MAXDB,IDBSIZ,
|
|
+NGELS,NCONTS,MAXGEL,
|
|
+TEMP1,WORDP,WORDN,LPOWRC,POSNS,GELN,
|
|
+SEQ1,MAXSEQ,GEL2,GEL3,GEL4,SEQ5,SEQC2,SEQG2,GEL,
|
|
+MAXGLM,MAXGL2,CHRSIZ,ECHRSZ,LENGTH,
|
|
+SAV1,SAV2,SAV3,MAXSAV,CENDS,NENDS,MAXCON,CONST,
|
|
+KBIN,KBOUT,DEVNOS(1),DEVNOS(2),DEVNOS(3),
|
|
+DEVNOS(4),DEVNOS(7),DEVNOS(8),IDEV,
|
|
+HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),NAMARC,NAMPRO,FILE,
|
|
+PERCD,IOPEN,IDM,SEQG3,SEQC3,IOK)
|
|
CLOSE(UNIT=DEVNOS(4))
|
|
CLOSE(UNIT=DEVNOS(7))
|
|
CLOSE(UNIT=DEVNOS(8))
|
|
GO TO 10
|
|
END IF
|
|
IF((NOPT.EQ.32).AND.(IOPEN.EQ.0)) THEN
|
|
C CALL SHOWFU(KBOUT,'Extract gel readings')
|
|
CALL GELOUT(RELPG,LNGTHG,LNBR,RNBR,MAXDB,IDBSIZ,NGELS,
|
|
+ NCONTS,GEL,MAXGEL,DEVNOS(2),DEVNOS(3),DEVNOS(4),DEVNOS(7),
|
|
+ KBIN,KBOUT,
|
|
+ HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5),FILE)
|
|
CLOSE(UNIT=DEVNOS(4))
|
|
GO TO 10
|
|
END IF
|
|
C IF(NOPT.EQ.31) THEN
|
|
C CALL SHOWFU(KBOUT,'Type in gel readings')
|
|
C CALL BATIN(SEQ1,MAXSEQ,KBIN,KBOUT,
|
|
C + DEVNOS(4),DEVNOS(7),IDEV,
|
|
C + FILNAM,HELPS(NOPT),HELPE(NOPT),HELPF,DEVNOS(5))
|
|
C GO TO 10
|
|
C END IF
|
|
IF((NOPT.GT.3).AND.(IOPEN.NE.0))THEN
|
|
WRITE(KBOUT,1012)
|
|
1012 FORMAT(' You have not opened a database!')
|
|
GO TO 10
|
|
END IF
|
|
GO TO 10
|
|
9999 CONTINUE
|
|
CALL SHUTD
|
|
END
|