!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ! IDENT This MIDAS programme file is called analysis.prg. ! Version: May 24, 2001 ! PURPOSE This programme analyses ME-NET access data. ! AUTHOR: Marc Fluks ! COMMENTS > It needs the ESO-MIDAS- and Unix/Linux distributions. ! Download ESO-MIDAS: http://www.eso.org/projects/esomidas/midas.html ! Download Redhat Linux: http://www.redhat.com/ ! This programme also runs on VMS MIDAS. ! > The input data must be present in analysis.dat. ! Empty entries must be indicated by an *. ! 1st column: month. ! 2nd column: day of the month. ! 3rd column: year. ! 4th column: day number. ! 5th column: number of subscribers to ME-NET. ! 6th column: integrated number of ME-NET files. ! 7th column: integrated number of ME-NET papers. ! 8th column: the differential size in bytes. ! > The output-files are called analysis.tbl and analysis.txt ! The binary file analysis.tbl may be used to display the results. ! The text file analysis.txt is the corresponding ascii text. ! 1st column: sequence number. ! 2nd-8th columns: correspond to 1st-7th columns of input file. ! 9th column: differential size in Mb. ! 10th column: integrated size in Mb. ! 11th column: number of distributed kilo-files. ! 12th column: number of distributed kilo-papers. ! 13th column: number of distributed Mb's. ! The descriptor HITS_WEB of analysis.tbl corresponds to the ! estimated number of webserver hits. ! > Collect data from listserver: number of subscribers, files, papers & MBDIF ! rev ME-NET ! search * in me-net from YYYY/MM/30 to YYYY/MM/01 ! search * in me-net from YYYY/MM/01 to YYYY/MM/10 where subject contains artikel ! search * in me-net from YYYY/MM/11 to YYYY/MM/20 where subject contains artikel ! search * in me-net from YYYY/MM/21 to YYYY/MM/01 where subject contains artikel ! get me-net filelist !----------------------------------------------------------------------- ECHO/FULL SET/FORMAT E18.12 ! Create input table and key words. CREA/TAB analysis 8 ? analysis NAME/COL analysis #1 :MONTH F2.0 "month" NAME/COL analysis #2 :DAY F2.0 "day" NAME/COL analysis #3 :YEAR F4.0 "year" NAME/COL analysis #4 :DAYNR F4.0 "day" NAME/COL analysis #5 :PERSONS F4.0 "number" NAME/COL analysis #6 :FILES F6.0 "number" NAME/COL analysis #7 :PAPERS F5.0 "number" NAME/COL analysis #8 :MBDIF F6.1 "Mb" CREATE/IMA midtemp1 1,10000 0,1 NODATA WRITE/KEY I1/I/1/1 0. WRITE/KEY I2/I/1/1 0. WRITE/KEY R1/R/1/1 0. WRITE/KEY R2/R/1/1 0. ! Compute day number :DAYNR. COPY/TAB analysis midtemp COMP/TAB midtemp :M = (:MONTH+1)+6.*(1.-ABS(:MONTH-2.5)/(:MONTH-2.5)) COMP/TAB midtemp :M = 30.6*:M COMP/TAB midtemp :DAYNR = ABS(INT(:M)-:M)/(INT(:M)-:M+1.E-18) COMP/TAB midtemp :DAYNR = :DAYNR*((:DAYNR+1.0)/2.0) COMP/TAB midtemp :M = INT(:M-0.5*:DAYNR) COMP/TAB midtemp :Y = :YEAR+(ABS(:MONTH-2.5)/(:MONTH-2.5)-1.)/2. COMP/TAB midtemp :Y = 365.25*:Y COMP/TAB midtemp :DAYNR = ABS(INT(:Y)-:Y)/(INT(:Y)-:Y+1.E-18) COMP/TAB midtemp :DAYNR = :DAYNR*((:DAYNR+1.0)/2.0) COMP/TAB midtemp :Y = INT(:Y-0.5*:DAYNR) COMP/TAB midtemp :DAYNR = ((:DAY-728884.0)+(:M+:Y)) COPY/TT midtemp :DAYNR analysis :DAYNR ! Interpolate remaining entries for :PERSONS. SORT/TAB analysis :DAYNR CONVERT/TAB midtemp2 = analysis :DAYNR :PERSONS midtemp1 SPLINE SORT/TAB analysis :PERSONS STAT/TAB analysis :PERSONS WRITE/KEY I3/I/1/1 'OUTPUTI(2)' STAT/TAB analysis :DAYNR WRITE/KEY I4/I/1/1 'OUTPUTI(2)' COMP/KEY I4 = 'I4'-'I3' COMP/KEY I3 = 'I3'+1 DO I2 = 1 'I4' 1 COPY/TK analysis :DAYNR @'I3' I1/I/1/1 READ/IMA midtemp2 'I1',1 COMP/KEY R1 = 'OUTPUTR(1)' COPY/KT R1 analysis :PERSONS @'I3' COMP/KEY I3 = 'I3'+1 ENDDO DEL/LOGFILE ! Interpolate remaining entries for :FILES. SORT/TAB analysis :DAYNR CONVERT/TAB midtemp2 = analysis :DAYNR :FILES midtemp1 SPLINE SORT/TAB analysis :FILES STAT/TAB analysis :FILES WRITE/KEY I3/I/1/1 'OUTPUTI(2)' STAT/TAB analysis :DAYNR WRITE/KEY I4/I/1/1 'OUTPUTI(2)' COMP/KEY I4 = 'I4'-'I3' COMP/KEY I3 = 'I3'+1 DO I2 = 1 'I4' 1 COPY/TK analysis :DAYNR @'I3' I1/I/1/1 READ/IMA midtemp2 'I1',1 COMP/KEY R1 = 'OUTPUTR(1)' COPY/KT R1 analysis :FILES @'I3' COMP/KEY I3 = 'I3'+1 ENDDO DEL/LOGFILE ! Interpolate remaining entries for :PAPERS. SORT/TAB analysis :DAYNR CONVERT/TAB midtemp2 = analysis :DAYNR :PAPERS midtemp1 SPLINE SORT/TAB analysis :PAPERS STAT/TAB analysis :PAPERS WRITE/KEY I3/I/1/1 'OUTPUTI(2)' STAT/TAB analysis :DAYNR WRITE/KEY I4/I/1/1 'OUTPUTI(2)' COMP/KEY I4 = 'I4'-'I3' COMP/KEY I3 = 'I3'+1 DO I2 = 1 'I4' 1 COPY/TK analysis :DAYNR @'I3' I1/I/1/1 READ/IMA midtemp2 'I1',1 COMP/KEY R1 = 'OUTPUTR(1)' COPY/KT R1 analysis :PAPERS @'I3' COMP/KEY I3 = 'I3'+1 ENDDO DEL/LOGFILE ! Compute differental size :MBDIF. COMP/TAB analysis :MBDIF = :MBDIF/1.E6 ! Compute integrated size :MBINT. COMP/TAB analysis :MBINT = 0.*:MBDIF+:DAYNR NAME/COL analysis :MBINT F6.1 "Mb" SORT/TAB analysis :MBINT STAT/TAB analysis :MBINT WRITE/KEY I4/I/1/1 'OUTPUTI(2)' COMP/KEY I4 = 'I4'-1 WRITE/KEY I3/I/1/1 1 COMP/TAB analysis :MBINT = :MBDIF DO I2 = 1 'I4' 1 COPY/TK analysis :MBINT @'I3' R1 COMP/KEY I3 = 'I3'+1 COPY/TK analysis :MBINT @'I3' R2 COMP/KEY R1 = 'R1'+'R2' COPY/KT R1 analysis :MBINT @'I3' ENDDO CONVERT/TAB midtemp2 = analysis :DAYNR :MBINT midtemp1 SPLINE STAT/TAB analysis :DAYNR WRITE/KEY I4/I/1/1 'OUTPUTI(2)' COMP/KEY I4 = 'I4'-'I3' DO I2 = 1 'I4' 1 COMP/KEY I3 = 'I3'+1 COPY/TK analysis :DAYNR @'I3' I1/I/1/1 READ/IMA midtemp2 'I1',1 COMP/KEY R1 = 'OUTPUTR(1)' COPY/KT R1 analysis :MBINT @'I3' ENDDO DEL/LOGFILE ! Compute number of distributed files :DISFILES. ! INTEGRAL(PERSONS_DAYNR(dFILES/dDAYNR))dDAYNR=INTEGRAL(PERSONS_FILES*dFILES) SORT/TAB analysis :DAYNR CREATE/COL analysis :DISFILES I6 STAT/TAB analysis :FILES COMP/KEY I1 = 'OUTPUTR(2)' COMP/KEY I1 = 'I1'+1 CREATE/IMA midtemp1 1,'I1' 0,1 NODATA CONVERT/TAB midtemp2 = analysis :FILES :PERSONS midtemp1 SPLINE STAT/TAB analysis :DAYNR WRITE/KEY I4/I/1/1 'OUTPUTI(2)' COMP/KEY I3 = 1 DO I2 = 1 'I4' 1 COPY/TK analysis :FILES @'I3' I1/I/1/1 STAT/IMA midtemp2 [0:'I1'] COPY/DK midtemp2 STATISTIC/R/3/1 R1 COMP/KEY I1 = 'R1'*'I1' COPY/KT I1/I/1/1 analysis :DISFILES @'I3' COMP/KEY I3 = 'I3'+1 ENDDO COMP/TAB analysis :DISFILES = :DISFILES/1.E3 NAME/COL analysis :DISFILES "kilo-number" DEL/LOGFILE ! Compute number of distributed papers :DISPAPERS. ! INTEGRAL(PERSONS_DAYNR(dPAPERS/dDAYNR)dDAYNR)=INTEGRAL(PERSONS_PAPERS*dPAPERS) CREATE/COL analysis :DISPAPERS I6 STAT/TAB analysis :PAPERS COMP/KEY I1 = 'OUTPUTR(2)' COMP/KEY I1 = 'I1'+1 CREATE/IMA midtemp1 1,'I1' 0,1 NODATA CONVERT/TAB midtemp2 = analysis :PAPERS :PERSONS midtemp1 SPLINE STAT/TAB analysis :DAYNR WRITE/KEY I4/I/1/1 'OUTPUTI(2)' COMP/KEY I3 = 1 DO I2 = 1 'I4' 1 COPY/TK analysis :PAPERS @'I3' I1/I/1/1 STAT/IMA midtemp2 [0:'I1'] COPY/DK midtemp2 STATISTIC/R/3/1 R1 COMP/KEY I1 = 'R1'*'I1' COPY/KT I1/I/1/1 analysis :DISPAPERS @'I3' COMP/KEY I3 = 'I3'+1 ENDDO COMP/TAB analysis :DISPAPERS = :DISPAPERS/1.E3 NAME/COL analysis :DISPAPERS "kilo-number" DEL/LOGFILE ! Compute number of distributed Mb :DISMB. ! INTEGRAL(PERSONS_DAYNR(dMBINT/dDAYNR))dDAYNR=INTEGRAL(PERSONS_MBINT*dMBINT) CREATE/COL analysis :DISMB I7 STAT/TAB analysis :MBINT COMP/KEY I1 = 'OUTPUTR(2)' COMP/KEY I1 = 1000*('I1'+2) CREATE/IMA midtemp1 1,'I1' 0.,.001 NODATA CONVERT/TAB midtemp2 = analysis :MBINT :PERSONS midtemp1 SPLINE STAT/TAB analysis :DAYNR WRITE/KEY I4/I/1/1 'OUTPUTI(2)' COMP/KEY I3 = 1 COMP/KEY I4 = 'I4' DO I2 = 1 'I4' 1 COPY/TK analysis :MBINT @'I3' R2 STAT/IMA midtemp2 [0:'R2'] COPY/DK midtemp2 STATISTIC/R/3/1 R1 COMP/KEY I1 = ('R1'/1000.)*(1000*'R2'-1) COPY/KT I1/I/1/1 analysis :DISMB @'I3' COMP/KEY I3 = 'I3'+1 ENDDO NAME/COL analysis :DISMB "Mb" DEL/LOGFILE ! Estimate number of distributed files by the webserver (5000 hits/day). STAT/TAB analysis :DAYNR COMP/KEY I1 = 'OUTPUTR(2)' COMP/KEY I1 = 5000.*'I1' COPY/KD I1 analysis.tbl HITS_WEB ! Remove errors if :MBDIF=* in final rows. COMP/TAB analysis :ERROR = ABS(:MBINT)/(:MBINT+1.E-18) WRITE/KEY R1/R/1/1 1. COPY/KT R1 analysis :ERROR @1 COMP/TAB analysis :ERROR = LOG10(:ERROR) COMP/TAB analysis :MBINT = :MBINT+:ERROR COMP/TAB analysis :DISMB = :DISMB+:ERROR DEL/COL analysis :ERROR ! Create output files. ASSIGN/PRINT FILE analysis.txt PRINT/TAB analysis ASSIGN/PRINT TERMINAL COPY/TAB analysis midtemp COPY/TAB midtemp analysis DEL/DESCR analysis.tbl HISTORY READ/DESCR analysis.tbl * ! Update directory. DEL/TEMP ! Logout ECHO/OFF BYE