BONGO (Linux)

Franco Zavatti

franco.zavatti@zafzaf.it


An Introduction to Bongo

BONGO COMMANDS: the complete description    

(119 active commands)

bandx bandy bbb bin box circle clabel color columns connect
continue contour convert corr cos data delete delta deriv digits
dos dot draw ebar echo ellipse end erase excol exdiff
exoper exp exsave eycol eydiff eyoper eysave fill fit ft
gauss grid help histo ident info input insert jump ks
label last limits lines list lomb lticks ltype macro mask
mem memo nofill noise off pause pbox pcom physical playback
points pow ptype quit read rect relocate rgb rima save
scalog sgf sin slin smooth stairs sticks text version vwrite
wcomm wline wrima write xaxis xcolumn xdiff xgrid xlabel xoper
xrow xsave xsort xstat xystat xzero yaxis ycolumn ydiff ygrid
ylabel yoper yrow ysave ysort ystat yzero
scirc sdraw smove srect srelocate
The last four boldface commands refer only to screen coordinates (pixels).
The same commands have been listed in green below, at the end of the command list.


Starting from 27 October 2014, also a brief description of some applications (APPs) begins: The APPs are external and indipendent code (executables) which can be run from within Bongo (e.g. DOS cbm or DOS afit), giving values or output files useful to Bongo or the user. Clicking on the corresponding box, an html description of the app can be read.
Apps cbm afit
Crop -- --



BANDX   

Format: BANDX xini xfin
Parameters: xini xfin - start and end x user-coordinates
Function: Draws a vertical rectangle from (xini,y1) to (xfin,y2), y1,y2 beeing the physical limits of the graph (i.e.,by default 200 and 599 pixels, may be changed by PHYSICAL)
See also: BANDY,PHYSICAL,MACRO
Examples:bandxy.png,.bon, data file,macro (periods.bmr)

BANDY   

Format: BANDY yini yfin
Parameters: yini yfin - start and end y user-coordinates
Function: Draws a horizontal rectangle from (x1,yini) to (x2,yfin), x1,x2 beeing the physical limits of the graph (i.e.,by default 120 and 519 pixels, may be changed by PHYSICAL)
See also: BANDX,PHYSICAL,MACRO
Examples:bandxy.png,.bon, data file,macro (periods.bmr)

BBB   

Format: BBB
Parameters: None
Function: display on stdout (screen) the first 20 columns of the vector BBB(7000,50) containg actual data.
Bugs: None

BIN   

Format: BIN nbin wbin flag
Parameters: nbin - number of bins. If zero, nbin is computed from wbin. On exit nbin will be nbin+1. wbin - bins width in user units. If zero, wbin is computed from nbin. flag - if=1 the x-values in LIMITS are used as x-range of the histogram; if=0 the x-range is computed from YV data. (note that joining "x-range" and "YV" is not a mistake: the x-range is the min-max of the Y-vector)
Function: Defines number of bins and their width for an histogram. After this command, XV and YV remain unchanged.
BIN calls the routine BIN(YV,KMAX,NB,SB,FLAG): i.e. it bins the YV vector and produces the output file bin.out with NBIN, SBIN, MIN, MAX and: Ordinal, Bin-center abscissa, Bin content (N). So, remember: after BIN you need to open bin.out and read it (may be 1.st and 3.rd columns) from line 2 to line nbin (or any number larger than nbin) and run HISTO (or STAIRS) on the just-read XV and YV internal vectors.
The way the data are distributed within any bin (binning) depends on FLAG: if=1 the user defines the range as the limits of the plot (command LIMITS) and can build width (and number) of the bin as he likes; if=0 the range derives from the min-max of the data vector and then, after setting NBIN, the bin width and the number of data within any bin could be different. In the same way, the distribution of the data will be different from the one of FLAG=0.
Examples:
a)reads residuals from a non-linear fit (line+sine), distributes them in 75 bins,FLAG=0, saves ordinal, bin-center abscissa, content of bins in bin.out file and plots the 1st and 3rd columns of bin.out.
.bon, bin.out, .pdf, .png for 75 bins
and the same for 50 bins
.bon, bin1.out, .pdf, .png.
b)uses the same dataset and bins it with FLAG=1 and FLAG=0, respectively
diff.out (input data); binisto.bon; binned with BIN 12 0 1; binned with BIN 12 0 0; pdf; png;
Bugs: None. Max nbin is 100. Note, in binisto.bon, the line marked by a series of "====": the bin content, with bin 12 0 0, is correct but the command HISTO plots (bin-content-1); so I must add 1 to bin-content to plot them correctly. Not sure about that, because with bin 12 0 1 the HISTO command works fine (see the top plot).

BOX   

Format: BOX p1 p2 p3 p4 or BOX p1 p2 or BOX
Parameters: p1,p2 are flags: if one of them is zero, numerical values along the corresponding axis are not written. p1 refers to X-axis, p2 to Y-axis. If both parameters are omitted, they are intended to be 1 1. p3,p4 are also flags: they refer to the drawing of the last numerical value on axis. If zero, the last value on the corresponding axis (p3 for x; p4 for y) is not written. Default values for p3 and p4 are 1 1. See a graphical Scheme or the table:
axesX-AxisY-AxisX-AxisY-Axis
BOXnumsnumsnumsnumslastnumlastnum
digitsYESNOYESNOYESNOYESNO
code10101010

Function: Draws a box according to data limits. If LIMITS hasn't been given, XCOL and YCOL are needed in order to compute data limits. Box neither erases the screen, nor enters the graphical mode. If interactive mode is used, the command MODE n must be supplied by the user; off-line mode (i.e. PLAYBACK) includes the MODE n command, were n is the default value or the last given mode. The values of p1 and/or p2 and p3 and/or p4 should be zero when multiple, joined plots are to be drawn. See Fig.14 and this more recent plot with its .bon script, as examples of such an application.
See also: CLABEL, XLABEL, YLABEL, LABEL, text.png, text.bon for text orientation.
Bugs: if X/Y/C/LABEL are given before BOX, they will be written at location (0,0) because the scale of the plot will be known only after BOX.
If a color different from black (21) is given, please note that TEXT DIM COL must be given before BOX command in order to draw digits with the desidered color.
After BOX you must give another TEXT DIM COL (e.g. TEXT 2 13) in order to draw both axis and comment labels with the preferred color.
Example:

.
.
color 18    !axes drawn in blue
delta 3 3
digits 0 0
text 2 18     !also digits along axes in blue
limits 0 10 0 20
lticks 5 5
sticks 2 4
box
text 2 11     !all the labels in magenta
xlabel X-Axis
ylabel Y-Axis
clabel Comment
.
.
        

CIRCLE   

Format: CIRCLE p1 p2 p3 or CIRCLE p1
Parameters: p1= radius of the circle, in user coordinates, p2=start-angle (def. 0), p3=end-angle (default 360)
Function: draws an arc of circle, centered at the current point, with radius p1, from the angle p2 to the angle p3, in the counter clock-wise direction. In the default situation (CIRCLE p1) a complete circle is drawn.
Examples can be seen as a Celestial sphere and as Circles and ellipses or the first and the second respective command files.
An example of arcs of circle are shown in circle.gif, whose listing is cerchio.bon (a 'reloc' commands before any 'circle': centers are referred to these 'reloc' current points). Note that 0 (zero) degrees is on the right end of the arcs.
See also: ELLIPSE
Bugs: none

CLABEL   

Format: CLABEL string or CLABEL ?
Parameters: string, a text of 40 characters max or "?".
Function: Writes at the upper left corner of the plot (above the box) the label string, as a comment or asks for a keyboard-supplied comment.
Examples: only in the case of "?"
echo enter comment:
clabel ?

on the screen will appear:
enter comment:


some comment from the keyboard
See also: BOX, ECHO, LABEL, XLABEL, YLABEL
Bugs: this command must be given after BOX

COLOR   

Format: COLOR col
Parameters: drawing color (0-26).
Function: sets the drawing color to the value col. Postscript driver changes col to a gray level (1-0) by gray = 1.- col/24. Note that in Postscript, gray=1 is white and gray=0 is black.
See also: PostScript colors,   (pdf),   The vertical version of the palette (if you need to print it): (png)
Bugs: none, but in view of a change in old Bongo-scripts colors, here the oldest color palette and here the older color palette (the last one, before the actual palette).

COLUMNS   

Format: COLUMNS C1 C2
Parameters: first and last column
Function: Defines the first and the last columns of the actually opened data file. Internal vectors XV,EXV and YV,EYV will be inizialized by data from C1 to C2, extrema included. If C1 or C2 or both are less than zero, Bongo asks for the input of C1 and C2 via the keyboard.
Bugs: maximum allowed number of columns is 50. The command LINES L1 L2 requires that L2 BE EQUAL to the maximum column number (i.e. L2=C2-C1+1).
Example: plot; .bon and data file. If (L2≠C2-C1+1) plot; .bon, the same data file as above.

CONNECT   

Format: CONNECT
Parameters: none
Function: Connects data points with the last defined (or default) line type (LTYPE command).
See also: LTYPE, Fig.17b (2X-zoom)
Bugs: none

CONTINUE   

Format: CONTINUE
Parameters: none
Function: nothing. Simply allows the execution of the next command in the list. Used as terminal of the couple of commands JUMP-CONTINUE in order to change the execution stream in a command buffer. Because of its "no-function" quality, it is not necessary to comment or de-comment this command.
See also: 1.st situation (plot); 2.nd situation (plot), another example 1.pdf 2.pdf, JUMP
Bugs: none

CONTOUR   

Format: CONTOUR
Parameters: none
Function: draw iso-contours of the image read by RIMA file-name, according to values listed in the local file levels.dat.
levels.dat contains in its first line the number of levels, followed by the levels, one per line.
Example: if four levels must be plotted,
4
123
257
333
389

See also: RIMA, contour, levels.dat
Bugs: none. The maximum number of levels is 50

CONVERT   

Format: CONVERT P1 P2 P3 or CONVERT P1 P2 or CONVERT P1 or CONVERT
Parameters: all default parameters are set to zero.
P1 format of the converted image: from bongo.ps to bongo.xxx, where 'P1=xxx' is:
    0=pdf
    1=png
    2=jpg
    3=gif

P2 alpha channel (transparency):
    0--> alpha channel OFF (no transparency and background color white)
    1--> alpha channel ON   (and no background color)
P3 dot-per-inch (dpi) image resolution
    0--> 150x150
    1--> 200x200
    2--> 300x300
Function: Converts the Bongo output file bongo.ps to pdf, png, jpg and gif formats, with choice for transparency and density. This command can be used in bongo.inp
Example: the following is a bongo.inp file
re foo.bon
pl
convert         !bongo.ps converted to bongo.pdf, no alpha, 150x150 dpi
or
convert 3 1     !bongo.ps --> bongo.gif, alpha, 150x150 dpi
or
convert 2 1 2   !bongo.ps --> bongo.jpg, alpha, 300x300 dpi
end

and this is a working example:
re oni-new                   ! reads oni-new.bon
pl                           ! runs the Bongo commands
dos cp bongo.ps oni-new.ps   ! copy bongo.ps to oni-new.ps
convert                      ! converts bongo.ps to bongo.pdf,no alpha,150x150dpi 
dos mv bongo.pdf oni-new.pdf ! renames  bongo.pdf to oni-new.pdf
end                          ! closes actual Bongo run

See also: DOS uses the same CALL SYSTEM (command)
Bugs: none.

CORR   

Format: CORR p1 p2 or CORR p1 or CORR
Parameters:
  • p1 is a flag, so it assumes only two values, 1 and 2 (default).
  • If p1=1 --> the Pearson's correlation coefficient of the YV and EYV internal vectors or ρ(YV,EYV) will be computed.
  • If p1=2 --> the auto-correlation function (acf) is computed when both YV and EYV contain the same data vector or the cross-correlation function (ccf) when YV and EYV contain different data vectors.
  • p2 is MAXLAG, i.e. the maximum number of lags computed by this routine. If p2=0 or p2>kmax-1 (# of data -1) then p2 becames 0 (i.e. MAXLAG=kmax-1).
    Default values are p1=2 and p2=0 (i.e. CORR=CORR 2 0) BUT no check is made on a MAXLAG value near or equal to (kmax-1), so avoid the default and use [CORR 2 MAXLAG] with MAXLAG set at small or intermediate values.
    Function: depending on the flag p1, computes either the Auto/Cross-Correlation Function (acf/ccf) of the internal vectors YV and EYV with a given number of lags or the Pearson's correlation coefficient ρ(YV,EYV) of the internal vectors YV and EYV.
    Examples:
    How to detrend and add a sine function to an acf
    fit 2 !parabolic fit to acf
    %data detrend
    %reads poly.out
    %computes col4 - col3 of poly.out
    data poly.out !output file after FIT 2
    lines 22 122
    xcol 2
    ycol 3
    eycol 4 0
    yoper 21 -1 !YV-EYV; result stored in YV
    % !in YV the detrended acf
    ltype 1 10 !sets line=1 (solid) color=10 (red)
    connect !draws detrended acf
    sin 0.2 60 5 !computes SIN function with
    % !amplitude 0.2 (units of acf)
    % !period 60 (units of XV- may be years or months)
    % !phase shift 5 (units of XV)
    ltype 4 14 !sets line=4 (dotted) color=14 (blue)
    connect !draws sin function
    Real Examples:
  • The ccf of two arrays (array1 and array2): pdf, plot, numerical output, .bon. This is the manual page of the NAG routine G13BGF (cross-correlation): please compare numerical outputs.
  • The ccf of the yearly averaged cloudiness of Munich (Munchen,Germany) and the Usoskin's Cosmic Rays Model, both from 1825 to 2007: pdf; png; .bon; input data (Mun); input data (CRs); output data
  • The ccf of two time series (evolution over 23 months of Period and Power of a spectral peak with P=2.87 years) plotted together (plot). input file; ccf; ccf output (12 lags); .bon
  • The acf of the power spectrum of average cloudiness of a place in Austria (Admont): pdf; png; .bon; input data; output data
  • The acf of yearly averaged cloudiness of Munich (Germany) from 1825 to 2007: pdf; png; .bon; input data; output data
  • The acf of NOAA monthly averaged world temperature anomaly from 1860 to August 2013: pdf; png; .bon; input data; output data
  • The acf of the tidal gauge station of San Francisco (Frisco) with persistence analysis (note Neff K value in the output file). pdf; png; .bon; input data; output data
    See also: SIN to see a detrended acf represented by a sin function
    Bugs: none. Remember that no check holds for MAXLAG near or equal to (kmax-1), so don't use default values within the command. Prefer command like e.g. CORR 2 67 instead of CORR.
    Note that
  • the acf/ccf is computed from -maxlag to +maxlag. Vectors must be provided with the same dimension and the same starting abscissa. The author, assuming that such conditions hold, compared data from 1850 (1.st set) with data from 1660 (2.nd set) and the result was not so fine. So, be sure the longer set is truncated at the same limits of the shorter one ... (use LINES for that).

    COS   

    Format: COS p1 p2 p3 p4 or COS p1 p2 p3 or COS p1 p2
    Parameters: p1= amplitude, p2=period, p3=zero-point (default 0), p4=Max abscissa (default # of data)
    Function: computes the cosine function, given: amplitude, period, zero-point(start abscissa) and last abscissa (defaulted to # of data) and stores the results into the XV and YV internal vectors, i.e.
                     YV(i)=p1*cos(2π(i-p3)/p2).
    The abscissae are XV(i)=p3+(i-1).
    Examples: Common XV data (input);
    cos 0.2 60 0; sin 0.2 60 0: plot; .bon; cos 0.2 60 0; sin 0.2 60 80: plot; .bon
    A real example: GHCN temperature anomalies Land+Ocean, up to march 2013 have been fitted by a line, detrended and represented by two cosine with 66 and 60 years periods. plot, Orig. data, Data read by .bon, .bon.
    See also: SIN,LINES
    Bugs: none, but if you want to extend your actual range use a "fake" LINES -1 -1 to give start- and end-lines by the keyboard, without any control on the range.
    Also note that SIN and COS are computed at constant step [T=T0+(I-1) so (T-T0) is always equal to (I-1) and step=1]. If you try to subtract sin-cos data from a monthly data (step=0.083) you can generate differences with a (totally fake) periodicity. In this example such a fake period is 5 years. The problem rises between b) and c) plots: b) is the detrended from the line in a) and a cosine is also plotted. c) is b) detrended from cosine: note the "birth" of spurius (fake) peaks.

    DATA   

    Format: DATA file-name or DATA ?
    Parameters: file-name and its path, if necessary. Max 40 characters.
    Function: Opens the file with the data and inizializes the string variable which contains the 255 characters max length data columns and comments. Data are assumed to be organized in columns, separated by space(s), comma(s) or tabs (ascii 9 dec). If a column contains a non-digits element it will be transformed to 9999. Any row of such a column must contain non-numeric data. If file-name is ?, Bongo asks for file-name from the keyboard. By default DATA saves the first 50 lines of file-name into the character variable XYCOM. Such lines can be written in the file savenn.sav by the commands WCOMM and SAVE. DATA also saves the last input file_name into the variable FILES.
    See also: SAVE, WCOMM
    Examples: see plot, .bon and data of a mixed (Tab and spaces - separated) file columns.
    Bugs: none

    DELETE   

    Format: DELETE L1,L2 or DELETE L1
    Parameters: L1, L2 starting and ending lines, or the only line to be deleted
    Function: Deletes from the command buffer the lines L1 to L2 (extrema included) or the line L1 and re-organizes the command buffer.
    Bugs: none

    DELTA   

    Format: DELTA p1,p2,p3,p4 or DELTA
    Parameters: p1, p2 percent of the x-axis left-and-right length; p3, p4 percent of the y-axis lower-and-upper length. Default values are 0 0 0 0
    Function: Defines the amount, as percent of the axis length, of the user-scale displacement with respect to the axes origin. In practice it is defined an area, where data are plotted, smaller than the one given by the command BOX. Note that the choice of DELTA's include x and y lower and larger limits, separately.
    Example: if PHYSICAL command has not been given (i.e. the default limits of the plotting area are X1, X2 = 120, 519 and Y1, Y2 = 200, 599), DELTA 0 5 0 7 means that the new positions
    (X[1 and 2]DX1, DX2 of the first left (and last right) X-tick and
    Y[1 and 2] DY1,DY2 of the lower (and upper) Y-tick are
    X1DX=X1+(X2-X1+1)*p1/100 = 120+400*0 = 120
    X2DX=X2-(X2-X1+1)*p2/100 = 520-400*0.05 = 500
    Y1DY=Y1+(Y2-Y1+1)*p3/100 = 200+400*0 = 200
    Y2DY=Y2-(Y2-Y1+1)*p4/100 = 600-400*0.07 = 572
    X2DX and Y2DY being the position of the X and Y last tick.
    See also: BOX, PHYSICAL,
    Examples:
    Fig.16 pdf, png, .bon
    DELTA 10 10 10 10 for linear (.bon) and logarithmic (log-log) (.bon) plots
    DELTA 10 7 8 5 in .bon and (pdf), (png)
    Bugs: not really a bug, but the author's choice: when DELTA values are so large that they overcame the space between two main ticks (in LTICKS), the grid stops to be drawn. So, you must give a larger/different number of LTICKS/STICKS and use a lower percent value(s) in DELTA.
    See DELTA 15 10 15 10 .bon, (pdf), (png), where the next leftmost value should be the main tick labelled "1870", and the suggested changes in DELTA, LTICKS and STICKS. The new plot (pdf), (png) is also shown in both formats.

    DERIV   

    Format: DERIV
    Parameters: none
    Function: Computes the central differences (using forward and backward difference for the first and the last values) of both XV and YV vectors: DIFF(2)=XV(3)-XV(1), ..., DIFF(kmax-1)=XV(kmax)-XV(kmax-2) and DIFF(1)=XV(2)-XV(1) [backward]; DIFF(KMAX)=XV(KMAX)-XV(KMAX-1) [forward], and the same happens for YV. From these differences, it computes the numerical (approximate) derivative in the form DER(i)=DIFF(YV(i))/DIFF(XV(i)). The internal vectors remain unchanged.
    Examples: Given the original data file, the der.out file is computed via this .bon file (here the name of der.out has been changed by the command DOS). The .png and .pdf show the original data (upper plot) and the derivatives (gray) with 5-year (black) and 10-year (red) smoothing. Compare maxima and minima with the visible break points (where slope changes) in the data.
    Bugs: none, but all is organized for 4-digits abscissa. So, if you have e.g. millions of years, much likely you could have abscissae in the form of fractions of millions of years and then not corrected in the output file der.out. In such a case you can use as abscissa the original values and as d erivatives the output (column 5) of DERIV.

    DIGITS   

    Format: DIGITS ndx ndy or DIGITS
    Parameters: ndx- decimal digits on x-axis. ndy- decimal digits on y-axis
    Function: Sets the number of decimal digits of axes numerical labels. Default values are 2 decimal digits for both axes. Default value(s) can be set also with both ndx and ndy less than zero.
    Examples:
    DIGITS !ndx=2, ndy=2
    DIGITS 2 2 !as above
    DIGITS -3 -5 !as above
    DIGITS 0 1 !ndx=0 , ndy=1
    Bugs: none

    DOS   

    Format: DOS command or DOS
    Parameters: Operating System command (without quotes)
    Function: Allows Operating System Commands (whatever the OS may be).
  • If "command" exists it will be executed.
  • If "command" doesn't exist, Bongo asks: "give OS command" and executes it.
  • At the end of the command, the control returns to the next line of the Bongo command buffer.
    A Fortran CALL SYSTEM(command) is used here.
    See also:
    Try:
    bongo
    >dos ls-l (or dir for Windows)
    >dos
    >give OS command
    >

    Example:
    bongo.inp can be:
    re oni-new! reads the command file oni-new.bon
    pl ! executes the command file, line-by-line
    dos cp bongo.ps oni-new.ps! copy bongo.ps to oni-new.ps
    end! ends bongo execution
  • Here a command file where DOS command has been really applied. The couple of lines %DATA and %DOS will be decommented one-by-one, in order to write a file with normalized data, starting from un-normalized power spectrum.
    Bugs: none. If the command is enclosed by quotes (" or '), an error will be generated.
    This command depends *of course* on the OS used.
    For example, in Windows DOS, the command DOS mv a.txt b.txt doesn't work. Use DOS rename a.txt b.txt. Rename doesn't write over an existing file, giving an error. So, the command DOS delete b.txt must precede the DOS rename ...

    DOT   

    Format: DOT
    Parameters: none
    Function: draws at current point a symbol in the last-defined (or default) style. Use PTYPE command to change point style.
    See also: DRAW, PTYPE, RELOCATE
    Bugs: none

    DRAW   

    Format: DRAW X Y
    Parameters: X,Y coordinates of the end of the segment in user coordinates.
    Function: draws from the current point to X,Y a line with both the last- defined color and style. Use LTYPE command to change line aspect.
    See also: DOT, LTYPE, RELOCATE
    Bugs: none

    EBAR   

    Format: EBAR p1 or EBAR
    Parameters: p1 flag to write the file ebar.out. If p1=0 (default) the file is not written; any other number (say 1) allow the writing of the output file.
    Function: Given, as usual, XV,YV,EYV (i.e. the error σ), computes YV+EYV and YV-EYV (i.e. YV±σ) and draws those values. Using a mild color, a nice and visible error belt can be drawn. This command modifies original YV and EYV vectors, so re-read the input file (DATA file_name; LINES li lf; XCOL n; YCOL n1) if you want to plot also the data. Give COLOR color_code and LTYPE code color BEFORE EBAR (i.e. EBAR contains the plotting of the errors, so it needs to know the drawing color and the line style).
    Examples: In order to reproduce the plot of global sea level in the paper by Jevrejeva et al, 2008, the following piece of the bongo command file gsl.bon has been used. It gives the plot (pdf) and (png) and the output file ebar.out. Please compare the plots. Part of the above command file has been used for the macro routine bongo/bmr/ebar.bmr
    See also: DATA, COLOR, LTYPE, EYCOL
    Bugs: none

    ECHO   

    Format: ECHO string
    Parameters: the text you want to be written on the screen.
    Function: writes on screen a text. Used to give some fixed parameter in commands like LINES -1 -1, when start and end lines must be given by hand. Also useful to give some comment while the Bongo command file is in execution.
    Examples:
    ECHO The 1st line must be 3
    ECHO The 2nd line must be 1280
    LINES -1 -1
    Enter 1st line
    3
    Enter 2nd line
    1280
    Appears as:
    The 1st line must be 3
    The 2nd line must be 1280
    Enter 1st line
    3
    Enter 2nd line
    1280

    See also: LINES
    Bugs: none

    ELLIPSE   

    Format: ELLIPSE p1 p2 p3 p4 p5 or ELLIPSE p1 p2 p3 or ELLIPSE p1 p2
    Parameters: p1= semi-major axis; p2=axial ratio; p3=rotation (degrees, def. 0), p4= start-angle( def. 0), p5=end-angle (def. 360). p1 is given in user coordinates, angles in counter clock-wise direction.
    Function: draws an arc of ellipse, centered at the current point, with semi-major axis p1, axial ratio p2, turned of p3 degrees, from the angle p4 to the angle p5, in the counter-clock wise direction. If p2=1 a circle is drawn, also if the command CIRCLE is available. In the default situation (ELLIPSE p1 p2) a complete, unrotated ellipse is drawn.
    See also: CIRCLE
    Bugs: none

    END   

    Format: END
    Parameters: none
    Function: Exit from Bongo to Linux OS. It does not save the actual command buffer (use WRITE for that). END terminates also INSERT command. When used in BONGOPS, END closes the output file bongo.ps and writes on the screen the message "Bongo.ps written on disk". It also writes the logo 'Bongo-Linux 1.4.5' in the bottom right corner of the output page. In practice, END exits Bongo and write the logo; OFF closes bongo.ps and doesn't either write the logo or exit Bongo; QUIT works like END but doesn't write the logo. END is for normal use; OFF for 'see, correct, run again' sessions and QUIT when plots must be inserted in a text, where the logo can give some problem or force supplementary work.
    See also: OFF, QUIT, WRITE
    Bugs: none

    ERASE   

    Format: ERASE
    Parameters: none
    Function: Clears the actual PostScript page.
    Bugs: none

    EXCOL  

    Format: EXCOL n flag
    Parameters: n number of a column of data file; flag (1 draw; not 1 not draw, defaulted to zero)
    Function: Assigns the column #n of the data file to Bongo internal vector EXV (errors of XV vector). This command traces the last read error bars, associated to any next data vector XV, also if XV does'nt have errors. To avoid that, give again the command with flag=0 after the right vectors have been drawn. Remember that EXV is also the 2.nd vector relative to XOPER command and the first one in EXOPER command.
    Example:
    DATA file-name ! reads input data
    XCOL 1 ! assigns column #1 to XV
    EXCOL 3 1 ! assigns column #3 to EXV
    POINTS ! error bars will be traced (flag=1)
    EXCOL 3 0 ! sets off x-error bar drawing(flag=0)
    or EXCOL 3 ! as above; p2 will be defaulted to zero
    See also: EYCOL
    Bugs: if the x-scale is reversed (e.g. 20 to 0 instead of 0 to 20), Bongo cannot draw error bars due to "within-the-box" controls.
    Not a bug, but remember that, within a colums, data type must be homogeneous (eg. all integer or real data, not mixed)

    EXDIFF  

    Format: EXDIFF p1
    Parameters: p1 flag. =1 forward differences; =-1 (default) backward differences.
    Function: Computes either the differences DIFF(i)=EXV(i)-EXV(i+1) (forward differences, trimming the last value [kmax]) or the differences DIFF(i)=EXV(i)-EXV(i-1) (backward differences, trimming the first value[1]),depending on p1 value. The value lost (at the beginning or the end) is fixed to 99. The output file diff.out will be written, with the first or the last line set to 99.
    Example: tma-raw.bon reads tma-rawy.txt. Outputs are: diff.out and one of diff1.pdf or diff2.pdf.
    See also: EYDIFF,XDIFF,YDIFF,DERIV
    Bugs: none

    EXOPER   

    Format: EXOPER opcode, constant
    Parameters: code of selected operation, constant required by operation (or 1 or 0 as necessary)
    Function: Applies the operation defined by opcode (with a constant if necessary) to EXV internal vector
    use EXOPER BEFORE the corresponding XOPER

    Available opcodes are :
    OperationOpcodeOperationOpcode
    1) vector+constant(+) or (1)10) EXP(vector*constant)(exp,EXP) or (10)
    2) vector*constant (*) or (2)11) vector/(vector values)(11)
    3) vector/constant(/) or (3)12) vector to hh.mmss ordd.mmss(12)
    4) LOG10(vector)*constant(log,LOG) or (4)13) (1:i)vector/ (1:N)vector(13)
    5) LN(vector)*constant(ln,LN) or (5) 14) const/vector(14)
    6) vector**constant(^) or (6) 15) residuals: (X-Xm)**constant(15)
    7) vector/vector(constant)(7) 16) (1:N)vector(16)
    8) vector-vector(constant)(8) 17) vector-constant (- or (17)
    9) 10**(vector*constant)(10^,10**) or (9) 18)(18)
    21) vector1± (vector2*const)(21) 24) vector1=vector2(24)
    22) vector1*(vector2*const)(22) 25) vector2=vector1(25)
    23) vector1/(vector2*const)(23)  

    Modifications remain in effect until another EXOPER is given or command is cancelled. Log of negative number is set to -50.
    Example: if data are D+-S, the command EXOPER log -2.5 gives:
    A=D-S
    B=D+S
    T=-2.5*[LOG(A)-LOG(B)]/2
    RELOCATE (-2.5*LOG(D)-T),Y
    DRAW [-2.5*LOG(D)+T],Y

    The same happens for any other operation.
    Bugs: In code 14, if vector=0 then 1/vector=9999. Be sure that in code 23 vector2 is not a null vector.

    EXP   

    Format: EXP p1 p2 p3
    Parameters: p1=ordinate for xv=0; p2=exponent; p3=#of data (kmax)
    Function: Computes the exponential function YV(I)=p1*EXP(XV(I)*p2)
    Example:(for the command POW, but both commands have the same structure). .bon, .png, data (ordinate), data (abscissa), fake_file.
    See also: POW, SIN, COS
    Bugs: none, but the computed data number depends on the last LINES command. If you have,say, 5 data (and so, LINES 1 5) and want to verify if they follow a power-law (or exp) function, this command computes the power (exp) function only for the first 5 points. So you need read (DATA fake.dat) a fake file and give another LINES command in order to allow EXP or POW computes a suitable number of data. You cannot give only LINES without DATA command.

    EXSAVE   

    Format: EXSAVE
    Parameters: none
    Function: Saves the last-defined EXV vector on the disk file SAVE.NN (NN=01, 02 ..., 99). This is a working file: SAVE command saves all SAVE.NN into the file SAVEnn.SAV, in the same order the working files have been originally written. Only numerical values are saved, so, if you wish to retain SAVEnn.SAV, add any comment you need.
    Example:
    DATA file-name ! reads input data
    XCOL1 ! assigns the column #1 to XV
    XOPER 4 1 ! decimal logarithm of XV
    XSAVE ! writes logarithms to disk file SAVE.01
    EXCOL 3 ! assigns the column #3 to EXV
    EXOPER 4 1 ! gets logarithm of errors
    EXSAVE ! write log(errors) to disk file SAVE.02
    SAVE 1 ! creates SAVE01.SAV with column taken from
    ! SAVE.01 and SAVE.02

    Bugs: none

    EYCOL   

    Format: EYCOL n flag
    Parameters: n number of a column of data file; flag (=1 draw; not 1 not draw, defaulted to zero)
    Function: Assigns the column #n of the data file to Bongo internal vector EYV (errors of YV vector). This command traces the last read error bars, associated to any next data vector YV, also if YV does'nt have errors. To avoid that, give again the command with flag=0 after the right vectors have been drawn. Remember that EXV is also the 2.nd vector relative to YOPER command and the first one in EYOPER command.
    See also: EXCOL
    Example:
    DATA file-name ! reads input data
    LINES 4 130 ! data between 4th and 130th line, step 1
    YCOL 4 ! assigns column #4 to YV
    EYCOL 3 1 ! assigns column #3 to EYV
    POINTS ! error bars will be traced (flag=1)
    EYCOL 3 0 ! sets off y-error bars drawing (flag=0)
    or EYCOL 3 ! as above: p2 defaulted to zero

    Bugs: if the y-scale is reversed (e.g. 20 to 0 instead of 0 to 20), Bongo cannot draw error bars due to "within-the-box" controls.
    Not a bug, but remember that, within a colums, data type must be homogeneous (eg. all integer or real data, not mixed)

    EYDIFF  

    Format: EYDIFF p1
    Parameters: p1 flag. =1 forward differences; =-1 (default) backward differences.
    Function: Computes either the differences DIFF(i)=EYV(i)-EYV(i+1) (forward differences, trimming the last value [kmax]) or the differences DIFF(i)=EYV(i)-EYV(i-1) (backward differences, trimming the first value[1]),depending on p1 value. The value lost (at the beginning or the end) is fixed to 99. The output file diff.out will be written, with the first or the last line set to 99.
    This command doesn't change the internal vectors. So, to use differences, do read diff.out by the command DATA (only one vector written, the other beeing its last occurrence).
    Example: tma-raw.bon reads tma-rawy.txt. Outputs are: diff.out and one of diff1.pdf or diff2.pdf.
    See also: EXDIFF,XDIFF,YDIFF,DERIV
    Bugs: none

    EYOPER   

    Format: EYOPER opcode, constant
    Parameters: code of selected operation, constant required by operation (or 1 or 0 as necessary)
    Function: Applies the operation defined by opcode (with a constant if necessary) to EYV internal vector
    use EYOPER BEFORE the corresponding YOPER

    Available opcodes are:
    OperationOpcodeOperationOpcode
    1) vector+constant(+) or (1)10) EXP(vector*constant)(exp,EXP) or (10)
    2) vector*constant (*) or (2)11) vector/(vector values)(11)
    3) vector/constant(/) or (3)12) vector to hh.mmss ordd.mmss(12)
    4) LOG10(vector)*constant(log,LOG) or (4)13) (1:i)vector/ (1:N)vector(13)
    5) LN(vector)*constant(ln,LN) or (5) 14) const/vector(14)
    6) vector**constant(^) or (6) 15) residuals: (X-Xm)**constant(15)
    7) vector/vector(constant)(7) 16) (1:N)vector (16)
    8) vector-vector(constant)(8) 17) (17)
    9) 10**(vector*constant)(10^,10**) or (9) 18)(18)
    21) vector1± (vector2*const)(21) 24) vector1=vector2(24)
    22) vector1*(vector2*const)(22) 25) vector2=vector1(25)
    23) vector1/(vector2*const)(23)  

    Modifications remain in effect until another EYOPER is given or command is cancelled. Log of negative number is set to -50.
    Example: if data are D+-S, the command EYOPER log -2.5 gives:
    A=D-S
    B=D+S
    T=-2.5*[LOG(A)-LOG(B)]/2
    RELOCATE (-2.5*LOG(D)-T),Y
    DRAW [-2.5*LOG(D)+T],Y

    The same happens for any other operation.
    Bugs: None. Be sure that in code 23 vector2 is not a null vector.

    EYSAVE   

    Format: EYSAVE
    Parameters: none
    Function: Saves the last-defined EYV vector on the disk file SAVE.NN (NN=01, 02 ..., 99). This is a working file: SAVE command saves all SAVE.NN into the file SAVEnn.SAV, in the same order the working files have been originally written. Only numerical values are saved, so, if you wish to retain SAVEnn.SAV, add any comment you need.
    Example:
    DATA file-name ! reads input data
    YCOL1 ! assigns the column #1 to YV
    YOPER 4 1 ! decimal logarithm of XV
    YSAVE ! writes logarithms to disk file SAVE.01
    EYCOL 3 ! assigns the column #3 to EXV
    EYOPER 4 1 ! gets logarithm of errors
    EYSAVE ! write log(errors) to disk file SAVE.02
    SAVE 2 ! creates SAVE02.SAV with column taken from
    ! SAVE.01 and SAVE.02

    Bugs: none

    FILL   

    Format: FILL
    Parameters: none
    Function: Flag; sets to ON the filling capability of Bongo. Any successive symbol or histogram bin will be filled with the tracing color.
    See also: NOFILL
    Bugs: none, but the areas (or symbols) exceeding box limits are not filled at all. Also note: there is no way to fill any closed area. Only surfaces enclosed by regular geometrical objects can be filled (i.e. circles, squares, triangles, rectangles, diamonds).

    FIT   

    Format: FIT deg wfl or FIT deg
    Parameters: deg is the degree of the polynomial. Max value is 6. If deg <0 parameters are added to two log-files. wfl is a flag : wfl=0 no weights; wfl=1 weighted fit. EVY contains weights in terms of standard deviatiations. If wfl is not written, its default value is zero. If wlf=1 but EVY has not been loaded, a warning message is written and the unweighted fit is computed.
    Function: Computes the least squares polynomial fit of XV, YV data by
    YC= a+bXV+cXV**2...+gXV**6.
    On exit, YV is set to YC (i.e. YV contains the computed data). User must provide plotting instructions in order to display ( png,pdf) the fitting function. The output file poly.out is created. Such file contains the degree of polynomial, the phrase "weighting vector is EYV" if wfl is not equal to 0, the standard deviation of residuals, the covariance COV(XV,YV) and the standard deviations σ(XV) and σ(YV) of the data vectors, the correlation coefficient, if deg=1, the deg+1 parameters of the fitting function with the respective standard deviations, their covariance and correlation matrices and a table with an ordinal, the original abscissae, the original and the computed ordinates and the limits of the 1-σ and 1.96-σ (95%) confidence intervals. poly.out is overwritten by the next FIT n command. If deg <0 the file POLY.APP is opened with access=append and the main output parameters (s.d. of fit, coefficients and their errors) will be added any time FIT is called. Bongo prompts for a 10-characters max label (hit RETURN for no-label), used to qualify the relative fit.

    If deg <0 the file BAI.DAT is also opened with ACCESS=APPEND: n, rms, cc, slope, s.d.(slope), year, R2, i.e. number of data, root mean square of residuals, correlation coefficient, line slope, its standard deviation, original abscissae and determination coefficient are appended at any run of FIT.
    This is a very, very private author's application in order to define the break-points in a (climatic) time series by a method which uses successive linear fits, from the starting point of the series, adding one o more data to the previous series (i.e. it fits segments of growing lengths). The file bai.dat (bai refers to Bai&Perron,2003 paper on Break-Points search) can be simply deleted if not needed. An example: if a dataset of year and temperature anomaly is given (here the data refers to Briffa et al., 2013 paper on Dendrology at Yamal Peninsula, West Siberia), using FIT -1 command (within a file like this) generates the bai.dat file and the two plots (1) and (2). Of course, the "normal" files POLY.APP and POLY.OUT "live" again.

    Example:
    YCOL 1 ! assigns the column #1 to XV
    YCOL 2 ! assigns the column #2 to YV
    PTYPE 4 3 2 ! sets point type
    POINTS ! draws observed points
    FIT 3 ! computes 3rd degree unweighted fit
    ! poly.out is written
    DATA file.ext ! YV modified, so re-open data file and
    YCOL 2 ! assigns again the column #2 to YV
    EYCOL 9 1 ! assigns the column #9 to EYV and draws error bars (1)
    FIT 4 1 ! computes 4th degree weighted fit
    ! poly.out is over-written
    LTYPE 1 2 ! defines line pattern and color
    CONNECT ! draws line that fits given data

    A real example: Northern Hemisphere Temperature (NHT) Anomalies are fitted with a 1.st order polynomial (they are also smoothed, but that's no matter here). See plot (png,pdf), bongo command file (.bon), input data (note 00N-90N, i.e. NH, in the 1.st line), and fit output_file.
    After the November 26,2014 correction, poly.out and, if any, poly.app appear as poly.out and poly.app
    Bugs: none

    FT   

    Format: FT p1 p2 p3 p4
    Parameters: s1, s2, df1, df2. s1, s2 standard deviations of the samples; df1, df2 degrees of freedom. No default values allowed.
    Function: Fisher test for samples' variances (s12 and s22). Computes both the F-statistic (F=s12/s22) and the p-value (or the significativity of the null hypotesis Ho:s12-s22=0 for two samples with degrees of freedom df1 and df2. Writes the output file ft.out.
    See also: you could like to consider the stand-alone code fisher.f and its executable (fisher) in bongo/prove/ to manually compute the Fisher's test. Also the code student.f (student) is available in the same place for the Student's test between the means of two samples.
    Bugs: none

    GAUSS   

    Format: GAUSS Xm, σ
    Parameters: Expectation value (or average) and dispersion (or square root of the variance) of your data set.
    Function: compute a standard normal distribution whose parameters are the same of actual data set (derived after XYSTAT, for example). Remember that "standard" means "with zero average"; if you want a gaussian centered at a value different from zero, add this value to the XV vector.
    After this command, the vectors XV and YV contain the normal distribution.

    Bugs: none

    Example:
    ....
    gauss 47 9.68! define Xm=47 σ=9.68
    xoper 1 47! add Xm to XV
    ltype 1 15! define a solid, black line
    connect! draw the graph
    ....

    See Also: gauss.png and gauss.bon

    GRID   

    Format: GRID pattern, color, flag
    Parameters: pattern and color of the grid, flag=1 draws also small ticks
    Function: Draws a grid superimposed to the plot, corresponding to the main ticks. If flag=1 the small ticks are also gridded. The main ticks are always gridded with solid lines. if the command DELTA has been given, both small ticks and grid (if required) are drawn also before-the-first and after-the-last main ticks Available patterns are:
    0 No LINE
    1 '----------------'
    2 '----- -- -----'
    3 '-------- '
    4 '-- -- -- -- '
    5 '. . . . . .'
    6 '. . . . . . . . '
    7 '--- . --- . --- '

    Examples:
    GRID 6 3 1draws a dotted (6) grid in light blue (3), all ticks (1). See grid 6 3 1 enlarged 4x.
    GRID 4 4 2draws a dashed (not really: main ticks lines are solid) (4) grid in bold yellow (4), main ticks (not 1). See grid 4 4 2 enlarged 4x.
    GRID 4 4 1draws a dashed (4) grid in bold yellow (4), all ticks (1) when DELTA 10 10 is given,
    for linear (.bon) and logarithmic (log-log) (.bon) scales
    RGB 0 !Black and White. See example png,pdf where (6 3 1), (6 8 1) and (6 15 1) have been used for GRID.
    GRID 6 3 1 !dotted (6), gray (3) grid, all ticks (1).
    RGB 1!Color
    In the last example, the grid strength can be better controlled by using the B/W color space (from 0=white to 15=black) than with the RGB color space.

    See also: XGRID, YGRID
    Bugs: none, but use the command before LABEL, so labels can overwrite the grid. Also, due to solid lines for the main ticks, choose color or gray level so that the grid does not collide with the graph colors.

    HELP   

    Format: (1) HELP or (2) HELP command-name
    Parameters: none or the name of a command for detailed help.
    Function: (1) lists all available commands in Bongo; (2) gives the help of the specific command. Use the COMPLETE name of the command, no abbreviations.
    Example: HELP RELOC is wrong (Help routine cannot find help file); HELP RELOCATE is correct
    Bugs: none

    HISTO   

    Format: HISTO wbin color flag or HISTO wbin color
    Parameters: wbin- width of bins. If command BIN has been previously given, wbin is known and the value read from bin.out must be used. If the ordinal of the bins is used( 1,2,...,nbin) its value will be 1. color- drawing (and filling, if any) color. flag - controls the histogram kind: if 0 (default), histogram start at the minimum of box y-value; if 1, histogram starts at the minimum of actual y data vector (histograms can be shifted up and down); if 2, histogram starts at zero (both positive and negative bins can be traced).
    Function: draws an histogram of binned data given both as external file or after BIN command. Maximum allowed number of bins is 100.
    EXAMPLES: multi histograms plot (png); (.bon); (1st.dat); (2nd.dat)
    From command BIN: reads residuals from a non-linear fit (line+sine), distributes them in 75 bins, saves bin-start, # of values in bin.out and plot #of bin, #of elements .bon, bin.out, .pdf, .png and the same for 50 bins .bon, bin1.out, .pdf, .png.
    Bugs: filling of bins exceeding box limits doesn't work.

    IDENT   

    Format: IDENT or IDENT cc
    Parameters: none or a 2-characters identification
    Function: writes, at the upper right corner, date and time of the plot. Please note that date format is dd-mm-yyyy    hh:mm:ss. If two characters 'cc' are given, they are added to the above string.
    Example: id fz writes this on the upper right corner of the plot.
    Bugs: None

    INFO   

    Format: INFO
    Parameters: none
    Function: Displays general information on Bongo (author address, references).
    Bugs: none

    INPUT   

    Format: INPUT file-name
    Parameters: file name of data given by the keyboard
    Function: Allows data to be entered by the keyboard from within Bongo. Data are not immediately available: they are written in the disk file file-name and can be plotted by the normal sequence of commands (DATA, LINES, LIMITS, XCOL, YCOL, PTYPE, POINTS). Data couples can be separated by space, comma or tab. Input of data ends with the couple 999,1. This command is intended as a purely manual one. It does not enter in the command buffer (e.g. after LIST) and is not executed by PLAYBACK, when given from within BONGO. Nevertheless, if INPUT enters in a command file created before running BONGO, it will be executed after any PLAYBACK command. If file-name is omitted, the OS warning: File name missing or blank - Please enter file name, appears.
    Example:
    >INPUT myfile.dat
    Comment:(enter 80-chars max comment)
    Data:(enter N couples of data, ending with 999,1)
    -0.1,23.7
    -0.87 2.2
    2056,0.0003
    234.4 (tab) 6.3
    999,1 ! this ends input and closes myfile.dat
    >

    To plot myfile.dat (suppose another data file has been plotted, so that commands like LIMITS or BOX were already entered):
    DATA myfile.dat
    LINES 2 100
    XCOL 1
    YCOL 2
    EXCOL 3 2! if above plot included error
    EYCOL 3 2! bars, set them off
    PTYPE 4,4,2
    POINTS

    Bugs: none

    INSERT   

    Format: INSERT line-number
    Parameters: line-number, the ordinal which identifies the command in the command buffer after LIST.
    Function: Allows insertion of new command(s) after the command defined by line-number. INSERT prompt is I:. END terminates insertion. Use INS 0 to add a command at the top of the buffer
    Bugs: none

    JUMP   

    Format: JUMP
    Parameters: none
    Function: jumps (i.e. does not execute the next lines up) to the first occurrence of CONTINUE. Used to organize many graphs in a unique command file, or to avoid a specific number of lines within the command file.
    It is possible to write in advance many couples of JUMP - CONTINUE and then comment (by %) or de-comment the JUMP command in order to execute the desidered sub-systems of commands.
    The pair of these commands is used here in Capital letters because the author uses them in such a way, so that they appear more evident in the flux of commands. These two commands are the only ones written in Capital letters within a .bon command file.
    Examples: 1.st situation (plot); 2.nd situation (plot), another example 1. pdf.
  • JUMP is useful also when you need to save elsewhere the results of a Bongo run (plots, data, code, etc). After the end of the .bon file, a sequence can be added that looks like the following:
    %last block <-- above this command the whole .bon file
    text 5 24
    sreloc 120 350
    label noaa/ohc/ohcw.bon
    id fz <-- end of "normal" bongo file command
    %JUMP <-- decomment (delete %) if the next lines don't need to be executed
    quit <-- exits Bongo, close bongo.ps, don't write the logo Bongo-linux 1.4.5
    dos bongo2pdf ohcw <-- convert bongo.ps to ohcw.pdf
    dos cropbpdf2png ohcw <-- convert ohcw.pdf to ohcw.png and crop (b-kind)
    dos mv ohcw.pdf ~/www/noaa/ohc/. <-- move .pdf to some directory
    dos mv ohcw.png ~/www/noaa/ohc/. <-- move .png to some directory
    dos cp ohcw.bon ~/www/noaa/ohc/code/. <-- save the bongo code in a suitable directory

    The complete (.bon) and (pdf) files of the above example.
    Bugs: none
    See also: CONTINUE

    KS   

    Format: KS
    Parameters: none
    Function: computes the Kolgomorov-Smirnov (KS) non-parametric test between two sets of data with equal dimension (i.e. with the same number of data points). Produces the output file ks.out.
    The last number in ks.out is the significance level of the null hypotesis Ho:"data sets drawn from the same population", so small values show that data sets have different distributions.
    Bugs: none
    Example: given two sets of data (e.g. observed and computed by a fitting procedure) the plot is produced and also the output file ks.out. The Bongo command-file is also available.

    LABEL   

    Format: LABEL string or LABEL ?
    Parameters: string, a text of 40 characters max or a "?".
    Function: Writes string at the last-defined position. Dimension, color and angle derive by the last TEXT command (or by default values). If the string is "?", Bongo asks for a keyboard-supplied string.
    Examples: only in the case of "?"
    echo enter label:
    label ?

    on the screen will appear:
    enter label:


    give some label from the keyboard
    See also: CLABEL, ECHO, FONT, SRELOCATE, RELOCATE, XLABEL, YLABEL, TEXT and text.png, text.bon for text orientation.

    Example: If the string is longer than 40 characters, you can RELOC(ate) after the last character and write (i.e. LABEL) another string, as in the following example:
    text 1 10
    reloc 1890 15.30
    label from: www.earthpolicy.org/Indicators/Temp/20
    reloc 1958 15.30
    label 08__data.htm#fig1
    (second label due to the limit of 40 chars max for a single label)
    (compare the result in the upper (red) label here)
    Bugs: none

    LAST   

    Format: LAST x1 or LAST
    Parameters: number of data lines, starting from the bottom of the data file, to be managed and plotted. Default value is 300.
    Function: plots (and/or manages) the last x1 lines of the data file. To be used before 'LINES x1,x2'.
  • Please note that LAST command is used to plot an increasing number of data (such as in a weather station) without changing the scale of the abscissa; so the abscissae should be always taken as numbers between 1 and x1 (change LIMITS to modify this number [i.e. x2]).
    The user should approximatively know the real scale of the plot (e.g. in the plot of the example below, 1-300 represent the last 6 days after the date on the top of the plot or in the data file_name. Here is: December 20, 2009).
    See also: LINES, DATA
    Bugs: none
    Example: see e.g. weather-last.png,   (.bon),  (data file)

    LIMITS   

    Format: LIMITS x1 x2 y1 y2
    Parameters: first and last abscissa; first and last ordinate, in user coordinates.
    Function: Defines the limits of plotting area in user coordinates. Scaling depends on these numbers.
    Examples:
    digits 0 1! 0 and 1 decimal digits for x-axis and y-axis labels, respectively
    delta 5 5 5 5! 5% of the axis lenght left after and before lticks, both axes
    limits 1870 2010 -3 3! limits of the plot, user coordinates
    lticks 7 6! seven-x and six-y large intervals
    sticks 5 5! five small intervals in any large interval, both axes
    grid 6 3 1! draws the grid
    produces this plot
    Bugs: none

    LINES   

    Format: LINES p1 p2 p3 or LINES p1 p2
    Parameters: first, last line, step (default value for step is 1)
    Function: Defines the first and the last line of the actually open data file and the step of data. Internal vectors XV and YV will be inizialized by data from p1 to p2, with step p3, extrema included. If p1 or p2 or both, or p3 are less than zero, Bongo asks for the input of p1, p2 (,p3) via the keyboard.
    Example:
                  LINES 3 54    ! lines from 3.rd to 54.th, step 1; i.e. reads line 3,4,5,...,54
                  LINES 3 54 2  ! lines from 3.rd to 54.th, step 2; i.e. reads line 3,5,7,...,53.
                  LINES -1 -1   ! asks for the 1st and the last lines
     

    LIST   

    Format: LIST lin1 lin2 or LIST
    Parameters: first and last line or none
    Function: Lists the command buffer between lines lin1 and lin2, extrema included. No parameter means "all lines". List stops every 22 lines and shows: < RET > to continue < ESC> to exit. Hit Escape to stop listing, or any other key to continue.
    See Also: DATA, ECHO
    Bugs: none

    LOMB   

    Format: LOMB p1 p2 or LOMB
    Parameters: parameters to compute the number of periods e the confidence level of any peak. Default values 5 and 4 , respectively. Their real names are OFAC and HIFAC, respectively and the number of periods to be computed is NP=OFAC*HIFAC*KMAX/2. The significance level is P(>z)=1-(1-e^-z)^M with M=HIFAC*KMAX.
    See Numerical Recipes in Fortran, 2.nd edition, 2009, pag. 569.
    Function: Computes the normalized Lomb periodogram for unevenly spaced data (time series). Writes the output file LOMB.OUT and, on output, XV and YV contain periods (in the same units as the input data) and power spectrum.
    Example: This Bongo command file computes the Lomb spectrum of kara-laptev.dat time series of % Fe grains in both Kara and Leptev Seas from about 10000 to 0 years "before present" (BP). The same spectrum has been computed by:
  • NASA Exoplanets Service code, with some label added by me within the plot.
  • My own LOMB standalone code
  • Bongo command LOMB with default parameters (ofac=5; hifac=4), which writes also the output file lomb.out (columns are Period, Frequency, Power).
    Please, compare the plots.
    Bugs: none, but Lomb requires data to be detrended. If they show some trend you can use the MACRO routine detrend.bmr, available in the bongo/bmr directory.

    LTICKS   

    Format: LTICKS nx, ny
    Parameters: Number of x and y intervals
    Function: Defines the large ticks, i.e. the number of intervals x and y axes are divided in. In correspondence of such ticks, the axes are labelled with numerical values.
    See also: STICKS, LIMITS
    Bugs: none

    LTYPE   

    Format: LTYPE line-code, color
    Parameters: numerical code for line pattern, color
    Function: Defines line pattern and color. Lines are effectively drawn by the command CONNECT. Available codes and patterns are:
    0 No LINE
    1 '----------------'
    2 '----- -- -----'
    3 '-------- '
    4 '-- -- -- -- '
    5 '. . . . . .'
    6 '. . . . . . . . '
    7 '--- . --- . --- '

    See also: CONNECT, Fig.17 and a 2X-zoom
    Bugs: none

    MACRO   

    Format: MACRO path/file_name (or path/file_name.bmr)
    Parameters: file_name (and/or path) of the file containing the commands of the macro routine
    Function: load and execute an external command file. Defaults file_name extension is .bmr (bongo macro routine).
  • The following table lists some of the available macro routines in Bongo, but the really updated list -with code and examples- is macro.html.
    begin.bmrStart block of a command fileCopy into a new command file and edit
    start.bmrThe same as above
    end.bmrEnding block of a command fileCopy into a new command file and edit
    ci.bmrConfidence intervals
    detrend.bmrDetrend from a polynomial fit
    eclittica.bmrDraw Ecliptic and Celestial Sphere
    equatore.bmrDraw Celestial Sphere with Equator
    events.bmrDraw ENSO & Volcanic eruptions
    events-delta.bmrThe same as above with delta from zero
    detrend.bmrCompute fit line e detrend from the line (or another curve)
    periods.bmrDraw periods from Scafetta up to 60 yrs
    periods5.bmrThe same as above up to 14.5-15 yrs
    periods6.bmrThe same as above up to 30 yrs
    template.bmrTemplate for 1-plot, 2 kinds (like -1p.bmr)
    template-1p.bmrTemplate for 1-plot, 2 kinds
    template-2p.bmrTemplate for 2-plots per page
    template-3p2.bmrTemplate for 3-plots per page
    xxx-norm.bmrNormalize data to zero-mean and unit-variance

    See also: plot,.bon file or one of the two .bmr files
    Bugs: none, but remember to change, following your needs, file-names, degree of polynomial, identification (id) name, and so on.
    The complete path of the routine (bmr/) as it appears in the examples, is no more required (set as default).

    MASK   

    Format: MASK p1 p2 (this command has no default form)
    Parameters: p1= flag to mask a fixed value; p2=the value to be masked.
    Function: masks (i.e. deletes at run-time, without modification of the original file) data (XV and YV) whose value is a given number, and re-arranges the file. The structure of this command is: MASK p1 p2, where p1 is a flag (1, 2 or 3, really is not_1 and not_2) and p2 a numerical value.
    Use MASK after XCOL and YCOL commands.
    MASK modifies the length of internal vectors (XV, YV, EXV,EYV) (Trivial note because it deletes rows in the vectors and so must change the number of data).
    Its scope is to manage, if p1=1, missing data in e.g. meteo records when they are changed to some conventional value (99.9, -999, 999.9, and so on: p2 is set to such a value). If p1=2 a data line (again XY and YV) will be masked: now p2 is the line number in the data file (line number computed only from data, not comments). The masked vectors (XV and YV) can of course be saved in a disk file, following the usual procedure:
    .
    .
    data unmasked_file.dat
    lines n1 n2
    xcol ncolx
    ycol ncoly
    mask 1 99.9
    xsave         !save XV
    ysave         !save YV
    save 1        !save XV and YV into save01.sav
    dos mv save01.sav some_masked_file.dat
    dos rm save*
    .
    .
    
    See also: XSAVE, YSAVE, SAVE, DOS
    Bugs: none
    Examples: given the original (un-masked) file capri-max8.txt, MASK 1 99.9 change it to capri-max8-mask.txt, the masked file. The last file, along with a control file (in red), has been plotted by mask.bon in capri-mask.png

  • If a data file is given, that doesn't include x-values (i.e. XCOL 0 command is needed) you must use MASK 2 val (e.g. 99) as in this example: data, .bon, pdf, png

    MEM  

    Format: MEM p1 p2 or MEM p1 or MEM
    Parameters: Number of nodes NOD (max= ndata/2), step of computed spectrum KR. Default values are #data/2 and 2.
    Function: Computes the MEM (Maximum Entropy Method) Spectrum of YV. Writes the output file mem.out which contains in the 1.st column the Period, in the 2.nd column the Frequency and in the 3.rd one the Power. Period and frequency have the same unit as input data (e.g. frequency in months-1 and period in months). If periods (P) are required in years while data are at monthly step (i.e. frequency (F) in month-1), use P=1/F*1/12 or Pyears=Pmonths/12. This operation is left to the user (e.g. XCOL 1, XOPER / 12). If data have a 5-years step, then Pyears=P5years*5 (e.g. XOPER * 5).
  • The internal vectors XV and YV remain unchanged.
  • Output data can be plotted after reading the output file mem.out,as:
    MEM !computes the mem power spectrum and writes mem.out
    DATA mem.out ! opens the output of MEM
    LINES 3 1000 ! reads lines 3-1000
    XCOL 1 ! reads the periods in months
    XOPER   /   12 ! changes the periods from months to years (note the spaces among elements)
    YCOL 3 ! read the spectral power
    DOS cp mem.out some_file.out ! save mem.out to a more suitable file name

  • The sense of p2 (or KR) is the following: after the coefficients have been computed, the spectrum can be derived at any step within the limits 0-0.5 of the frequency. So KR is the step and kr=2 means the spectrum is computed with a doubled number of points with respect to the original ones (i.e. at half step).
    See also: POWER, DOS, XOPER, YOPER, XSAVE, YSAVE, SAVE,
    Bugs: None, but note that the maximum number of data is kmax=7000 and kmax=ndata*kr. So don't use too large kr values (hopefully no more than 4, but try yourself to see what it does happen). If the number of data will be greater than 7000, it will be set to 7000 and a warning message written on screen.
    Examples:
    With KR=2 plot; .bon; output file; input file.
    With KR=1 plot; .bon; output file and the same input file as above
  • You may need not only the correct plot with, say, the periods in years but also the corresponding numerical file, while Bongo output refers to (say) periods in months and frequencies in months-1. You can produce such a numerical file - starting from the output file power.out - by using the commands XSAVE, YSAVE, SAVE nn, as in the following part of a command file:
    DATA mem.out ! open the output of MEM
    LINES 3 2000 ! read lines 3-2000
    XCOL 1 ! read the periods in months
    XOPER   /   12 ! changes the periods from months to years
    XSAVE ! save the periods in years to save.01
    YCOL 2 ! read the frequency in months-1
    YOPER   *   12 ! changes it to yrs-1
    YSAVE ! save the frequency to save.02
    YCOL 3 ! read the power spectrum
    YSAVE ! save the power spectrum to save.03
    SAVE 1 ! save the file save01.sav (save01.sav=save.01+save.02+save.03).
    DOS mv save01.sav some_file.out ! rename save01.sav

    MEMO   

    Format: MEMO ipass
    Parameters: The range in X (or "time", also called "window") used to compute the moving average. Must be an odd number (3,5,7,...)
    Function: Computes the moving average of YV at 'times' XV. Averaged data are saved into the output file memo.out ("MEMO" stays for MEdia MObile, or Moving Average in italian). On exit, XV and YV internal vectors contain the averaged data.
    See also: memo.png (or memo.pdf), memo.bon, memo.dat, memo.out, but remember that X and Y vectors in memo.out are actually (after October 29,2013) in columns 1 and 2, respectively and not in cols 2 and 3).
    Bugs: none.
    Example:
    If you need to read memo.out output file
               data some_file.dat ! read input data
               lines 3 100        ! from line 3 to line 100 (stops at end of data)
               xcol 1             ! put column 1 data into x-vector
               ycol 2             ! put column 2 data into y-vector
                                  !
               ptype 2 2 15       ! define code, size and color (black) of symbols
               points             ! draw symbols
               %                  ! comment
               memo 3             ! perform moving average over a 3 data points interval
               %                  ! comment
               ltype 1 24    ! you can plot directly the average
               connect       ! from XV and YV vectors  or can read the output file
               %             ! OR 
               data memo.out ! read output of memo routine (averaged data)
               lines 2 30    ! read from line 2 to line 30
               xcol 1        ! new abscissae (at the center of ipass interval)
               ycol 2        ! averaged ordinates
                             !
               color 13      ! set drawing color
               ptype 3 2 13  ! define symbols to draw, in red
               ltype 1 13    ! define line aspect and color (red)
               connect       ! draw line through averaged data
               points        ! draw symbols for averaged data
    
    If you do use XV and YV internal vectors written by MEMO:
    	memo 3
    	ltype 1 17  !full green line  
    	connect     !draw line
    

    NOFILL   

    Format: NOFILL
    Parameters: none
    Function: Flag; sets to OFF the Bongo filling capability.
    See also: FILL
    Bugs: none

    NOISE   

    Format: NOISE p1
    Parameters: p1 is a flag: p1=1 uniform; p1=2 (default) gaussian; p1=3 esponential noise
    Function: Computes and writes into EYV internal vector a 3-kind noise. The noise can be added (YOPER 21 1) to an existing function or dataset into YV vector.
    Examples: the Bongo command file used to generate the following plots. Any plot shows in the top frame, the noise (uniform, gaussian, exp) and the sin function used as test; the sin function plus the noise, i.e. the noised function in the bottom frame. noise.bon; noise1.pdf; noise2.pdf; noise3.pdf.
    See also: YOPER, FUNC
    Bugs: none

    OFF   

    Format: OFF
    Parameters: none
    Function: Closes the output file bongo.ps and prepares itself to open another bongo.ps. It doesn't write the logo ' Bongo-Linux 1.4.5' in the bottom right corner of the page. In practice this command is useful to display bongo.ps via Ghostview without exit from the actual Bongo session, like a sort of 'interactive' session. In practice, END exits Bongo and writes the logo; OFF closes bongo.ps and doesn't either write the logo or exit Bongo; QUIT works like END but doesn't write the logo. END is for normal use; OFF for 'see, correct, run again' sessions and QUIT when plots must be inserted in a text, where the logo can give some problem and force supplementary work.
    See also: END, QUIT, WRITE
    Bugs: none

    PAUSE   

    Format: PAUSE
    Parameters: none
    Function: Stops the execution of the next command until a key is pressed. An acustic signal outlines the presence of this command. No message is written to the screen.
    Bugs: none

    PBOX   

    Format: PBOX xor yor
    Parameters: X and Y screen coordinates in pixels
    Function: Defines the origin of BOX. X and Y are the coordinates of the bottom left corner of the plotting region.
    See also: PHYSICAL
    Bugs: none

    PCOM   

    Format: PCOM
    Parameters: none
    Function: displays the values of the variables in the common blocks of both Plotpe and Bongo libraries. This command has been written for author's use, so not all may be clear; nevertheless PCOM can be useful in some cases, to control input values.
    Bugs: none

    PHYSICAL   

    Format: PHYSICAL xstart xend ystart yend
    Parameters: screen coordinates (pixels) of the plotting area
    Function: defines the physical screen coordinates of the plotting area. Corresponds to the combination PBOX+XAXIS+YAXIS. Default physical area is 120,519,200,599: use this command if these values must be changed.
    Examples: plot0, .bon; plot, .bon
    See also: PBOX, XAXIS, YAXIS
    Bugs: none

    PLAYBACK   

    Format: PLAYBACK
    Parameters: none
    Function: Executes the command buffer from the first to the last command. No jump is allowed, apart for the couple JUMP-CONTINUE.
    See also: JUMP, CONTINUE
    Bugs: none

    POINTS   

    Format: POINTS
    Parameters: none
    Function: Draws a symbol, following the last PTYPE command style or the default settings, at the x and y user coordinates defined in the XV and YV internal vectors.
    See also: PTYPE
    Bugs: none

    POW   

    Format: POW p1 p2 p3
    Parameters: p1=ordinate for xv=0; p2=exponent; p3=#of data (kmax)
    Function: Computes the power-law function YV(I)=p1*XV(I)**p2
    Example:(for the command EXP, but both commads have the same structure). .bon, .png, data (ordinate), data (abscissa), fake_file.
    See also: EXP, SIN, COS
    Bugs: none, but the computed data number depends on the last LINES command. If you have, say, 5 data (and so, LINES 1 5) and want to verify if they follow a power-law (or exp) function, this command computes the power (exp) function only for the first 5 points. So you need to read (DATA fake.dat) a fake file and to give another LINES command in order to allow EXP or POW compute a suitable number of data. You cannot give only LINES without DATA command.

    PTYPE   

    Format: PTYPE code,dimension,color
    Parameters: numerical code for symbol shape, dimension (side or radius) in pixels, color.
    Function: Defines symbol code, dimension and color. Symbols are effectively drawn by the command POINTS.
    Available codes:
    0 No Symbol
    1 +
    2 x
    3 Triangle up
    4 Square
    5 Diamond
    6 Circle
    7 Dot (1 pixel)
    8 Asterisk
    9 Star (minimum dimension: 3 pixels)
    10 Triangle down

    Ptype remains in effect until another Ptype is given.

    See also: POINTS, fig9
    Bugs: none

    QUIT   

    Format: QUIT
    Parameters: none
    Function: Exits from Bongo to Linux. Does not save the actual command buffer (use WRITE for that). It closes the output file bongo.ps. Doesn't write the logo 'Bongo-Linux 1.4.5' in the bottom right corner of the page. In practice, END exits Bongo and writes the logo; OFF closes bongo.ps and doesn't either write the logo or exit Bongo; QUIT works like END but doesn't write the logo. END is for normal use; OFF for 'see, correct, run again' sessions and QUIT when plots must be inserted in a text, where the logo can give some problem and force to supplementary work.
    See also: END, OFF, WRITE
    Bugs: none

    READ   

    Format: READ file-name
    Parameters: file-name, 50 characters max string containing the name of a list of Bongo commands (a command file).
    Function: Reads a list of commands from a disk file and inizializes the command buffer. The default extension of file-name is .bon.
    Examples:
    READ cream.xyz !load the command file cream.xyz
    READ cream !load the command file cream.bon
    Bugs: none, but remember to give the full path, if necessary

    RECT   

    Format: RECT p1 p2 p3 p4
    Parameters: p1,p2 user coordinates of the left bottom corner; p3,p4 user coordinates of the right top corner.
    Function: Draws a rectangle from user coordinates. The rectangle can be filled: if so, also the border will be filled. If you need a border of different color, give again the command RECT after new COLOR and LTYPE commands.
    Examples:
    The example refers to a test of both commands, RECT and SLIN. pdf, png, bon.
    Bugs: none, but remember to re-draw with another color if you want to outline the border of the rectangle.

    RELOCATE   

    Format: RELOCATE x-user y-user
    Parameters: x and y user coordinates
    Function: sets the current point to x-user, y-user, i.e. defines where the next writing operation begins on the screen.
    See also: SMOVE, SRELOCATE to set the current point in screen coordinates (pixels).
    Bugs: none

    RGB   

    Format: RGB p1
    Parameters: p1=1 means that the rgb color space will be used in what follows; if p1=0 the graphs are drawn with a gray-scale palette.
    Function: makes available the Red, Green, Blue color space. After RGB 1, the color palette shown in fig.18 is used.
    RGB 1 and RGB 0 can also be used both in the same command file, so the number of colors can be extended. Remember to go back to the original color palette whenever the alternative palette is no more useful.
    To write color text, use the command TEXT.
    See also: COLOR, LTYPE, PTYPE, TEXT, fig.18 (pdf) and text.png, text.bon
    Bugs: none

    RIMA   

    Format: RIMA file-name
    Parameters: file-name containing an image.
    Function: Load the image to be traced by COUNTOUR. The image must be written as REAL*4 (100x100) max. The first row contains NY and NX, # of columns and rows, respectively.
    Example: fortran code to write the image matrix
    .
    .
    real aa
    dimension aa(100,100)
    .
    open (12,file='matrice.dat')
    write(12,*)ny,nx
    do i=1,ny
    write(12,*) (aa(i,j), j=1,nx)
    enddo
    close (12)
    .
    .
    See also: CONTOUR, contour, see matrice.dat, WRIMA
    Bugs: none

    SAVE   

    Format: SAVE n
    Parameters: ordinal to distinguish saved files
    Function: Saves all SAVE.NN into the file SAVEnn.SAV, in the same order the working files have been originally written. Only numerical values are saved, so, if you wish to retain SAVEnn.SAV, add any comment you need. Any SAVE command resets to 01 the NN of SAVE.NN file. If WCOMM l1 l2 has been given, SAVE writes also l1-to-l2 lines of comment read from DATA file (kflag=1). If WCOMM 0 0, then kflag=0 and nothing is written.
    See also: EXSAVE, XSAVE, EYSAVE, YSAVE, WCOMM, DATA
    Examples:
    1)
    DATA file-name ! reads input data
    XCOL 1 ! assigns the column #1 to XV
    YCOL 3 ! assigns the column #3 to YV
    XSAVE ! writes XV to disk file SAVE.01
    YSAVE ! writes YV to disk file SAVE.02
    SAVE 1 ! creates SAVE01.SAV with columns taken from
    ! SAVE.01 and SAVE.02.

    2)
    DATA file-name ! reads input data
    WCOMM 1 5 ! sets kflag=1
    XCOL 1 ! assigns the column #1 to XV
    YCOL 3 ! assigns the column #3 to YV
    XSAVE ! writes XV to disk file SAVE.01
    YSAVE ! writes YV to disk file SAVE.02
    SAVE 1 ! creates SAVE01.SAV with columns taken from
    ! SAVE.01 and SAVE.02. Ahead 5 lines of comment
    DATA file-name ! reads input data
    XCOL 1 ! assigns the column #1 to XV
    YCOL 3 ! assigns the column #3 to YV
    XSAVE ! writes XV to disk file SAVE.01
    YSAVE ! writes YV to disk file SAVE.02
    SAVE 2 ! creates SAVE02.SAV with columns taken from
    ! SAVE.01 and SAVE.02.

    3)
    DATA file-name1 ! reads input data
    XCOL 1 ! assigns the column #1 to XV
    YCOL 3 ! assigns the column #3 to YV
    XSAVE ! writes XV to disk file SAVE.01
    YSAVE ! writes YV to disk file SAVE.02
    DATA file-name2 ! reads input data
    XCOL 1 ! assigns the column #1 to XV
    YCOL 3 ! assigns the column #3 to YV
    XSAVE ! writes XV to disk file SAVE.03
    YSAVE ! writes YV to disk file SAVE.04
    SAVE 10 ! creates SAVE10.SAV with columns taken from
    ! SAVE.01, SAVE.02, SAVE.03 and SAVE.04
    (In any case, the command DOS can be used to change the name(s) of SAVEnn.SAV to a more suitabe one(s),
    e.g DOS mv save10.sav some_name.dat or DOS rename save10.sav some_name.dat , in Windows)

  • Reads a file with years and winter cloudiness anomalies for the station named "bil"; "sea" means "season". Computes anomalies normalized to the sum of all data (yoper code 11). Saves xdata and ydata separately, and writes a new file with both years and normalized anomalies:
    pdf; .bon, save.01, save.02, save01.sav, sum-save.out
    Bugs: none

    SCALOG   

    Format: SCALOG lx,ly
    Parameters: lx=1 means that the scale on the x-axis will be a logarithmic one; the same for y-axis if ly=1. Possible couple of values are: (0,1);(1,0);(1,1). (0,0) is the same as to comment (with %) the command SCALOG (the command stays for SCAla LOGaritmica or LOGarithmic SCAle in English).
    Function: Defines logarithmic scale(s) on x-axis, y-axis or both.
    Examples: Plot and command file for SCALOG 1 0.This example uses the command DOT; the next one the commands POINTS and CONNECT.
    A real case for SCALOG 1 0 (Plot and command file ) and the same for SCALOG 1 1 (Plot and command file ).
    This is the common data file.
    Bugs: none, but note that in log-scales small intervals (command STICKS) are 9 by default and cannot be changed, and that the large ticks labels are only integer decades (e.g. 10-1, 101, 1010, not 5·103 or 0.2·10-2).

    SGF   

    Format: SGF p1 p2 or SGF p1 or SGF
    Parameters: p1= window width (odd), p2=Polynomial order (better 2 or 4), default 11 2.
    Function: computes the filtered data of the vector YV, smoothed by the Savitzky-Golay Filter (SGF) coefficients. SGF allows any window, also an unsymmetrical one and/or with even width, but here it is used ONLY with ODD width (3,5,7,... points) and SYMMETRICAL around the center of the window. The output file sgf.out will be written with general information and abscissa and smoothed ordinate. This command makes use of the Numerical Recipes routine savgol.f.
    Examples: Given as input data the test function funtest0.50.out, an example of the output file sgf.out and a combined plot, sgf-test.png, from various parameter coupling can be analysed along with the bongo command file sgf.bon used to generate output data and plots.
    A new support, in some way connected to SGL (and also to MEMO and SMOOTH), is the creation of a suitable test function (e.g. funtest0.50.out above). In Bongo, this is generated, in the sub-directory funtest/, by the fortran code funtest.f (executable code is funtest) which implements what is described here, at the jonsson.eu site. Please read also the 00readme.txt file.
    See also: MEMO, SMOOTH
    Bugs: none.

    SIN   

    Format: SIN p1 p2 p3 p4 or SIN p1 p2 p3 or SIN p1 p2
    Parameters: p1= amplitude, p2=period, p3=zero-point (start abscissa, default 0), p4=last abscissa (default # data)
    Function: computes the sine function, given: amplitude, period, zero-point (first abscissa) and last abscissa, and stores the result into the XV and YV internal vectors, i.e.
                     YV(I)=p1*sin(2π(i-p3)/p2).
    The abscissae are XV(I)=p3+(i-1).
    Examples: Common XV data (input);
    cos 0.2 60 0; sin 0.2 60 0: plot; .bon; cos 0.2 60 0; sin 0.2 60 80: plot; .bon
    Real examples:
  • GHCN temperature anomalies Land+Ocean, up to march 2013 have been fitted by a line, detrended and represented by two cosine with 66 and 60 years periods. plot, Orig. data, Data read by .bon, .bon.
  • The acf of NOAA monthly averaged world temperature anomaly from 1860 to August 2013 compared to y=0.3 sin(2π(t-574)/780) months or y= 0.3 sin(2π(t-47.8)/65 years: pdf; png; .bon; input data.
    See also: COS, LINES
    Bugs: none, but if you want to extend your actual range use a "fake" LINES -1 -1 to give start- and end-lines by the keyboard, without any control on the range.
    Also note that SIN and COS are computed at constant step [T=T0+(I-1) so (T-T0) is always equal to (I-1) and step=1]. If you try to subtract sin-cos data from a monthly data (step=0.083) you can generate differences with a (totally fake) periodicity. In this example such a fake period is 5 years. The problem rises between b) and c) plots: b) is the detrended from the line in a) and a cosine is also plotted. c) is b) detrended from cosine: note the "birth" of spurius (fake) peaks.

    SLIN   

    Format: SLIN p1 p2 p3 p4
    Parameters: p1,p2 parameters (after FIT or, in any case, user-given) of the line Y=p1+p2*X, so p2 is the slope; p3,p4 the first and the last abscissa you are interested to (they could be years).
    Function: Computes a line (Straight LINe), given both intercept/slope and wanted abscissae, i.e. the interval you want compute and draw the line. This command also writes the output file slin.out.
    This command, combined with SIN or COS can plot a trigonometric function which follows the behaviour the line has (e.g. a growing sin function like this. The command file (.bon) relative to the plot).
    Examples: SLIN -12.5 0.006 1962 2100: here 1962 and 2100 are the extrema of the time (years) range you want compute the line within.
  • This example refers to a test of both commands, RECT and SLIN. pdf, png, bon, out.
    Bugs: none, but remember to re-draw with another color if you want to outline the border of the rectangle.
    See also: FIT, SIN, COS

    SMOOTH   

    Format: SMOOTH step
    Parameters: step - width of smoothing window, in # of data points.
    Function: Computes the smoothing function of the last defined YV data vector. Smoothed values substitute the original YV data. Plotting of the smoothed data is the same as in FIT and left to the user. The output file smooth.out is also written in order to save smoothed data. Smoothing routine SMOOFT comes from Numerical Recipes (1986), where one can read: <<The program gives results that are generally in accord with the notion "draw a smooth curve through these scattered points", and is at least arguably objective in doing so.>> and <<... then uses a Fast Fourier Transform to low-pass filter the data>>.
    See also: FIT, MEMO
    Example:
    DATA file-name ! reads input data
    XCOL 1 ! assigns the column #1 to XV
    XOPER 4 1 ! decimal logarithm of XV
    YCOL 3 ! assigns the column #3 to YV
    PTYPE 3 3 3 ! defines symbol shape and color
    POINTS ! draws symbols for original data
    SMOOTH 6 ! smooths YV by a six-points window
    LTYPE 1 3 ! defines line type
    CONNECT ! draws line through smoothed data
    A real example: pdf; .bon; data file; the same data pdf,smoothed step=6.
    Bugs: none

    STAIRS   

    Format: STAIRS color flag or STAIRS color
    Parameters:color- drawing (and filling, if any) color. flag - controls the histogram kind: if 0 (default), histogram start at the minimum of box y-value; if 1, histogram starts at the minimum of actual y data vector (histograms can be shifted up and down); if 2, histogram starts at zero (both positive and negative bins can be traced).
    Function: draws a stair-shaped (i.e. without the internal bin limits) histogram of binned data given both as external file or after BIN command. Maximum allowed number of bins is 100.
    See also: HISTO
    Examples:
    Old example: bon, gif.
    New example: bon, png (unfilled). bon, png (filled).
    Bugs: filling doesn't work. In order to have a filled stairs-histogram the command HISTO should be used as first step between FILL-NOFILL commands and bins will be filled. Then the command STAIRS with a different drawing color gives the stair shape. See above Examples.

    STICKS   

    Format: STICKS nx ny
    Parameters: Number of x and y intervals
    Function: Defines the small ticks, i.e. the number of intervals large ticks are divided in.
    See also: LTICKS
    Bugs: none

    TEXT   

    Format: TEXT dim col angle or TEXT dim col or TEXT
    Parameters: text dimension, color, angle
    Function: Defines dimension of text characters, in units of actually loaded font, their color and drawing direction. Please note that orientation is clock-wise. Two font faces are actually available: Times-Roman and Helvetica 6, 9, 15 and 24 pixels high.
    Text dimension and face are defined by dim parameter as listed in the following table:
    dim=Times-Roman
    (fontx)
    Symbol
    (fontxg)
    Helvetica
    (fonthx)
    06----
    199--
    21515--
    32424--
    4----6
    5--99
    6--1515
    7--2424

    These settings remain in effect until another TEXT command is given. If TEXT is entered with only two parameters or without at all, the default values (as listed in bconfig.plt, actually dim=2) are set. Parameter dim can be only an integer 0.
    Example:
    Colors refer to RGB 1 command; if RGB 0 refers to gray scale (fig.18); font style is Times Roman.
    TEXT 2 4 45 means 15-pixels chars, avana color, 45 degrees
    TEXT 3 14 76 means 24-pixel chars, dark blue color, 76 degrees
    TEXT 1 1 means dim 1 (9-pixels), yellow(1) color, 0 degrees (default)
    TEXT means dim 2, black(15) color, 0 degrees(defaults)
    TEXT 0 15 draws in black color 6-pixel Times Roman font
    --------------
    TEXT 6 4 45 means 15-pixels chars, avana color, 45 degrees
    TEXT 7 14 76 means 24-pixel chars, dark blue color, 76 degrees
    TEXT 5 1 means dim 5, yellow(1) color, 0 degrees (default)
    TEXT means dim 2, black(15) color, 0 degrees(defaults)
    TEXT 4 15 draws in black color 6-pixel Helvetica font
    See also: text.png, text.pdf, text.bon for text orientation. Please note: on March 7, 2015 the TEXT angle is changed! See the old angles in text-old.png and compare to the new ones. Now the vertical labels are at 90°.
    Bugs: none, but if in the X-axix 4-digits or more must be used, like in the case of the years, TEXT 2 or TEXT 6 (i.e. 15 pixel high characters) can give this unpleasant result. For a better result, the choice is among a lower number of large ticks, a smaller text size (e.g. TEXT 1 or TEXT 5) or an enlargement of the physical dimension of the box via the command PHYSICAL (see the Bongo command file).

    VERSION   

    Format: VERSION
    Parameters: none
    Function: displays on the screen the version number of the Bongo actually in use.
    Bugs: none

    VWRITE   

    Format: VWRITE p1,p2 or VWRITE
    Parameters: p1 first line and p2 last line of the data vectors to be displayed. Default values are 1 and max number of lines
    Function: Vectors WRITE. Display on the screen the last-defined XV, YV and EXV, EYV internal vectors from line p1 to line p2
    Bugs: none, but the listing may be continous. Use Ctrl~S and Ctrl-Q codes to stop-and-go the list.

    WCOMM   

    Format: WCOMM p1 p2 or WCOMM 99 or WCOMM
    Parameters: 1.st and last line of the comments read from the last DATA file.
  • Default parameters are p1=1, p2=3.
  • If p1=99, then p2=1 by default and a dialog opens: one (out of 50) of the comment lines stored in the XYCOM vector can be changed with a (225 characters max) text given by the user via the keybord. Of course multiple WCOMM 99 commands can change several comment lines. The dialog asks for the number of the line (out of 50) to be changed and for the new text.
  • If p1 or p2 are equal to zero, kflag=0 and the comment not written on savenn.sav.
    Function: writes comment(s) - taken from the last DATA file-name - from line p1 to line p2 (max 50 lines) on the file written by SAVE. Sets to 1 the flag KFLAG which allows the writing of the comment(s). Use WCOMM 0 0 to set KFLAG=0 and avoid comment writing.
    Note that, by default, the command DATA file-name also stores the first 50 lines of the input file in the common.bgo character variable XYCOM, so WCOMM command only allows the writing of XYCOM (from p1 to p2) into the files savenn.sav (e.g. save01.sav - save99.sav).
    Examples:
     
    Use WCOMM command as in the following lines
    data ....
    lines .....
    echo change 2nd line with
    echo   year             JFM              AMJ             JAS           OND
    wcomm 99 
    wcomm 1 2
    ====> This writes on savenn.sav 2_comment_lines (wcomm 1 2)read from the data
    file by command "data..." and the second of such lines has been changed by 
    wcomm 99, with the text, given by the 2nd "echo", you perhaps want "cut and
    past" from the echo line.
    
    WCOMM 1 4 ! writes on savenn.sav the first 4 lines
    ! of the last file read by DATA. Sets KFLAG=1.
    WCOMM ! writes on savenn.sav lines 1-3
    ! of the last file read by DATA. Sets KFLAG=1.
    WCOMM 99 ! asks for comment-to-be-changed line number and text
    !of one out of 50 comment lines. Sets KFLAG=1.
    WCOMM 0 0! sets KFLAG=0, i.e. doesn't write any comment
    ! on savenn.sav
    wcomm.txt or the way SAVEnn.SAV can be changed before 2) and after 3), 4) or 5) WCOMM, given the original file 1).
  • A video flv (44MB) shows how to use the WCOMM 99 command, running this .bon with this data_file and this output_file (for both '0814' means 'august 2014', i.e. mmyy). The video makes use of 'bongon' instead of 'bongo' because the new command was not "official" yet; 'gsbgo', the alias to show the plot on screen (alias gsbgo='gv bongo.ps&') and 'joe' is the author's preferred Linux text editor; at the end the video shows both the input file and the plot.
    See also: DATA, SAVE, ECHO
    Bugs: none. But ... Use WCOMM before SAVE! (see, e.g., this). Also, the user can give the new string via the command ECHO and then copy it (paste) in the dialog. If the string needs spaces (e.g. '    year               anomaly'), the spaces appear to be reduced to 2 or 3 (i.e. the blanks, if greater than 2, will be compressed). Use tabs (or any other character) instead of spaces and all will go fine.

    WLINE   

    Format: WLINE line width
    Parameters: line-width (real numbers, e.g. 0.5, 0.7, 1.0, 1.5 ..., 3.6 ...)
    Function: Defines the width of the drawing line. This value remains in effect until another WL command is given.
    Examples:
    WLINE 0.7 ! a common value to draw the box of the plot
    WL 1.5! well visible lines or symbols
    See also code,color,width, the same at 2X zoom and the .bon command file.
    Bugs: none

    WRIMA   

    Format: WRIMA
    Parameters: None
    Function: Writes on stdout (on the screen) the real matrix stored by RIMA. This is mainly a service command, to verify if the matrix AMAT (100,100) has changed in any way.
    See also: RIMA
    Bugs: none

    WRITE   

    Format: WRITE file-name
    Parameters: [path]output file name
    Function: Saves on the disk file file-name.bon the actual command buffer. The extension [e.g. .bon] has no default and must be supplied by the user. If file-name exists, it will be overwritten without warning.
    Bugs: none

    XAXIS   

    Format: XAXIS axis-length
    Parameters: x-axis length in pixels
    Function: Sets X-axis length. If length overcomes the limits of actual graphic mode the plot is truncated. String from IDENT is written in the left side (wrap-around).
    Bugs: none

    XCOLUMN   

    Format: XCOLUMN n
    Parameters: number of a column in the data file. If n=0, the abscissa XCOL contains a cardinal (1,2,3 ...,kmax).
    Function: Assigns the column #n of the data file to Bongo internal vector XV. If LIMITS is not in effect, this command also computes max and min of the vector. Use XCOL 0 if you want, as abscissa, a progressive number from 1 to the number of lines (LINES x1 x2).
    Example: Use of XCOL 0. Plot (png, pdf), bon, input file
    Bugs: none.
    Not a bug, but remember that, within a colums, data type must be homogeneous (eg. all integer or real data, not mixed)

    XDIFF  

    Format: XDIFF p1
    Parameters: p1 flag. =1 forward differences; =-1 (default) backward differences.
    Function: Computes either the differences DIFF(i)=XV(i)-XV(i+1) (forward differences, trimming the last value [kmax]) or the differences DIFF(i)=XV(i)-XV(i-1) (backward differences, trimming the first value[1]),depending on p1 value. The value lost (at the beginning or the end) is fixed to 99. The output file diff.out will be written, with the first or the last line set to 99.
    This command doesn't change the internal vectors. So, to use differences, do read diff.out by the command DATA (only one vector written, the other beeing its last occurrence).
    Example: tma-raw.bon reads tma-rawy.txt. Outputs are: diff.out and one of diff1.pdf or diff2.pdf.
    See also: EXDIFF,EYDIFF,YDIFF,DERIV
    Bugs: none

    XGRID   

    Format: XGRID pattern, color, flag
    Parameters: pattern and color of the grid, flag=1 draws also small ticks
    Function: Draws a vertical (X-axis) grid superimposed to the plot, corresponding to the main ticks. If flag=1 the small ticks are also gridded. The main ticks are always gridded with solid line. if the command DELTA has been given, both small ticks and grid (if required) are drawn also before-the-first and after-the-last main ticks Available patterns are:
    0 No LINE
    1 '----------------'
    2 '----- -- -----'
    3 '-------- '
    4 '-- -- -- -- '
    5 '. . . . . .'
    6 '. . . . . . . . '
    7 '--- . --- . --- '

    Examples:
    XGRID 6 3 1draws a dotted (6) grid in gray (3), all ticks (1). See example and command file
    XGRID 4 4 2draws a dashed (4) grid in bold yellow (4), main ticks (not 1).
    XGRID 4 4 0draws a dashed (4) grid in bold yellow (4), main ticks (not 1).
    XGRID 4 4 1draws a dashed (4) grid in bold yellow (4), all ticks (1)

    See also: GRID, YGRID
    Bugs: none, but use the command before LABEL, so labels can overwrite the grid. Also, choose color or gray level so that the grid does not collide with the graph colors.

    XLABEL   

    Format: XLABEL string or XLABEL ?
    Parameters: string, a text of 40 characters max or "?".
    Function: Writes string centered below the X-axis of the plot. No fixed angle is given, so do control the last given TEXT command and give a new TEXT with angle=0, if necessary. Or it asks for a keyboard-supplied string.
    Examples: only in the case of "?"
    echo enter xlabel:
    xlabel ?

    on the screen will appear:
    enter xlabel:

    give some string from the keyboard
    See also: BOX, CLABEL, ECHO, LABEL, YLABEL
    Bugs: This command must be given after BOX

    XOPER   

    Format: XOPER opcode, constant
    Parameters: code of selected operation, constant required by operation (or 1 or 0 as necessary)
    Function: Applies the operation defined by opcode to the XV internal vector.

    Available opcodes are:

    OperationOpcodeOperationOpcode
    1) vector+constant(+) or (1)10) EXP(vector*constant)(exp,EXP) or (10)
    2) vector*constant (*) or (2)11) vector/(vector values)(11)
    3) vector/constant(/) or (3)12) vector to hh.mmss ordd.mmss(12)
    4) LOG10(vector)*constant(log,LOG) or (4)13) (1:i)vector/ (1:N)vector(13)
    5) LN(vector)*constant(ln,LN) or (5) 14) const/vector(14)
    6) vector**constant(^) or (6) 15) residuals: (X-Xm)**constant(15)
    7) vector/vector(constant)(7) 16) (1:N)vector(16)
    8) vector-vector(constant)(8) 17) vector-constant (-) or (17)
    9) 10**(vector*constant)(10^,10**) or (9) 18)(18)
    21) vector1± (vector2*const)(21) 24) vector1=vector2(24)
    22) vector1*(vector2*const)(22) 25) vector2=vector1(25)
    23) vector1/(vector2*const)(23)  

    Original data vector will be modified by ANY of the above operations.
    Modifications remain in effect until another XOPER is given or command is cancelled.
    Log of negative number is set to -50.

    Code 3: constant=0 (zero) means constant=# of data (N or KMAX).
    Codes 7 and 8 allow normalization with respect to any element (set constant to the ordinal of the element) of the YV vector.
    Code 11 allows normalization with respect to the integral of vector. The file sum.out, containing the sum of the vector is also created.
    Code 12 assumes that data are expressed in terms of minor unit (e.g. in arcsec if degrees.minutesseconds are required)
    Code 13 computes the empirical distribution function (cumulative distribution) of an early binned vector. The file sum.out, containing the sum of the data vector is also created.
    Code 14 computes the inverse of the vector time a constant. If vector=0 then the inverse will be equal to 9999.
    Code 15 computes the residuals from the mean of the vector, raised to a constant. i.e. (Y-Ym)**const, Ym beeing the vector mean.The file aver.out, containing the vector mean and the standard deviation of the sample, is written.

    If in code 15 the constant=-3, the standardized vector will be computed (i.e. [(Y-Ym)/std.dev.]) and the external vector std.out written with average and standard deviation followed by the standardized vector in the form of Ordinal, Standard_value. Another way is described in the 1.st example.

    Code 16 computes the sum of a vector. Constant not used, so set it to 1 in the command (e.g. XOPER 16 1). Result stored in sum.out.
    Codes above 20 allow operations between XV and EXV and/or between YV and EYV vectors. Results are copied into XV and YV vectors respectively (i.e. into vector1).
    Code 25 copies YV value into EYV vector (i.e. saves YV into EYV). On the contrary, Code 24 saves EYV into YV.

    See also: EXOPER,EYOPER,YOPER

    Example:
    only an example referred to 21-25 codes is presented. Two files must be read and three vectors extracted: one abscissa (common to both data vectors) and two ordinates (o1 and o2 from the files file1.dat and file2.dat, respectively). Ordinates must be arranged in order to give a new ordinate o3=log (o1)-log(o2). The command file is:
    LIMITS x1 x2 y1 y2 ! limits in user coords
    BOX ! draw axes and ticks
    DATA [path]file2.dat ! note: the first one is 2.nd file
    LINES 12 200
    XCOL 1 ! load abscissa into XV
    YCOL 2 ! second ordinate o2 into YV
    YOPER log 1 ! log (o2)
    YOPER 25 1 ! put log(o2) into EYV (i.e. vect2=vect1)
    DATA [path]file1.dat ! read first file
    LINES 12 200
    YCOL 2 ! first ordinate o1 into YV
    YOPER log 1 ! log (o1)
    YOPER 21 -1 ! subtract: YV=YV+(-1*EYV)
    LTYPE 1 15 ! set black, solid line
    CONNECT ! draw line
    Bugs: Due to some unknown reason, a command like:
    xoper + -1880.0833333333333 gives the error: XOPER needs 2 parameters, not 3,
    while a command like:
    xoper + -1880.0833333333 works fine. Apparently, the maximum number of decimal digits must be 10.

  • Be sure that in code 23, vector2 is not a null vector.

    XROW   

    Format: XROW n
    Parameters: number of a row in the data file
    Function: Assigns the row #n of the data file to Bongo internal vector XV. If LIMITS is not in effect, this command also computes max and min of the vector.
    Example: plot; command file .bon and data file.
    Bugs: none.

    XSAVE   

    Format: XSAVE
    Parameters: none
    Function: Saves the last-defined XV vector on the disk file SAVE.NN (NN=01, 02 ..., 99). This is a working file: SAVE command saves all SAVE.NN into the file SAVEnn.SAV, in the same order the working files have been originally written. Only numerical values are saved, so, if you wish to retain SAVEnn.SAV, add any comment you need (use DOS command to do that).
    Example:
    DATA file-name ! reads input data
    XCOL 1 ! assigns the column #1 to XV
    XOPER 4 1 ! decimal logarithm of XV
    XSAVE ! writes logarithms to disk file SAVE.01
    YCOL 3 ! assigns the column #3 to YV
    YOPER 7 1 ! gets YV(I)=YV(I)/YV(1)
    YSAVE ! write normalized data to disk file SAVE.02
    SAVE 3 ! creates SAVE03.SAV with column taken from
    ! SAVE.01 and SAVE.02

  • Reads a file with years and winter cloudiness anomalies. Computes anomalies normalized to the sum of all data (yoper code 11). Saves x data and ydata separately, and writes a new file with both years and normalized anomalies:
    pdf; .bon, save.01, save.02, save01.sav, sum-save.out
    Bugs: sometime a zero-length file SAVE.NN is created. Delete the file and try againg PL.

    XSORT   

    Format: XSORT
    Parameters: none
    Function: sorts XV vector in ascending order and consequently rearranges YV. Original XV and YV are modified.
    The output file sort.out is written, containing XV and YV as 2.nd and 3.rd column.
    Example:
    See also: YSORT (note that here, in sort.out, the vectors are exchanged).
    Bugs: EXV and EYV vectors are not sorted.

    XSTAT   

    Format: XSTAT
    Parameters: none
    Function: Computes and saves to the disk file stat.out the number of data, mean value, standard deviation, variance, third moment (skewness), fourth moment (kurtosis), Max, Min, Range (=Max-Min) of the XV data vector. Third and fourth moments are the adimensional ones. This means that:

    skewness=(x- X)3 / (N-1)3

    kurtosis=(x-X)4 / (N-1) 4

    N beeing the number of data, X the mean value of XV and σ the standard deviation of residuals. stat.out is a file with access=append, so new data are appended to an existing file or a new one is created. The first line of any stat.out file indicates what the following colums contain. No other written information is present in the output file: a new row with the above data is added any time XSTAT command is given.

    XYSTAT   

    Format: XYSTAT
    Parameters: none
    Function: Computes and saves to the disk file stat.out (actually from this example) number of data, their sum, mean value, standard deviation, variance, skewness, kurtosis, Max, Min, Range (=Max-Min) of the XV data vector, if its probability (or frequency) distribution is known and contained into the vector YV. Skewness and kurtosis derive from:

    skewness=(x- X)3*p/3

    kurtosis=(x-X)4*p/4

    N beeing the number of data, X the mean value of XV, p its probability and σ the standard deviation of residuals. stat.out is a file with access=append, so new data are appended to an existing file or a new one is created. The first line of any stat.out file indicates what the following colums contain.The last column shows that XYSTAT has been called (not XSTAT or YSTAT). No other written information is present in the output file: a new row with the above data is added any time XSTAT command is given.
    See also: XSTAT, YSTAT
    Example:
    DATA file-name ! reads input data
    XCOL 1 ! assigns the column #1 to XV
    XYSTAT ! a new row of stat.out is added, for XV
       ! if YV is its probability distribution
    Bugs: none

    XZERO   

    Format: XZERO val or XZERO
    Parameters: x user coordinate
    Function: draws a full line at user coordinate x=val, from YMIN to YMAX (i.e. vertical line), with the last-defined color. Val is defaulted to zero. Use LTYPE command to change drawing color.
    Example: XZERO 4 and .bon file
    Bugs: A line shape different from solid line cannot be selected. Using DELTA, the lines drawn by XZERO do not reach the axis. Sometimes (due to a rounding error, I suppose) lines are not drawn in the exact correspondence of a tick. Use a slightly different value (for val) to correct this bug.

    YAXIS   

    Format: YAXIS axis-length
    Parameters: y axis length in pixels
    Function: Sets Y-axis length. If length overcomes y-dimension of actual graphic mode the plot is truncated.
    Bugs: none

    YCOLUMN   

    Format: YCOLUMN n
    Parameters: number of a column in the data file. If n=0 the ordinate is set to cardinal numbers from 1 to # of data.
    Function: Assigns the column #n of the data file to Bongo internal vector YV. If LIMITS is not in effect, this command also computes max and min of the vector. Use YCOL 0 if you want, as ordinate, a progressive number from 1 to the # of lines (LINES x1 x2).
    Bugs: none.
    Not a bug, but remember that, within a colums, data type must be homogeneous (eg. all integer or real data, not mixed)

    YDIFF  

    Format: YDIFF p1
    Parameters: p1 flag. =1 forward differences; =-1 (default) backward differences.
    Function: Computes either the differences DIFF(i)=YV(i)-YV(i+1) (forward differences, trimming the last value [kmax]) or the differences DIFF(i)=YV(i)-YV(i-1) (backward differences, trimming the first value[1]), depending on p1 value. The value lost (at the beginning or the end) is fixed to 99. The output file diff.out will be written, with the first or the last line set to 99.
    This command doesn't change the internal vectors. So, to use differences, do read diff.out by the command DATA (only one vector written, the other beeing its last occurrence).
    Example: tma-raw.bon reads tma-rawy.txt. Outputs are: diff.out and one of diff1.pdf or diff2.pdf.
    See also: EXDIFF,XDIFF,EYDIFF,DERIV
    Bugs: none, but if you need to save in the same file both Xvalues (e.g year) and Yvalues (differences) you can do the following:
    1. assume Xvalues are in the 1st column of the file input.txt
    2. assume you have already computed the difference [e.g. by the command ydiff -1], so you have the file diff.out.
    3. in your bongo file, after the command ydiff, add the following lines:
      data input.txt     !access Xvalues file
      lines 3 130     !read lines from 3 to 130, extrema included
      xcol 1     !Xvalues in XV
      xsave     !save Xvalues
      data diff.out     !access differences file
      lines 1 130     !or your line numbers
      ycol 1     !difference in YV
      ysave     !save differences
      save 1     ! or 2, 3,... save XV and YV into the same file save01.sav
      dos mv save01.sav your_file.ext     !rename savenn.sav
      dos rm save*     !delete all the "housekeeping" save files
    4. use your_file.ext for next operations

    YGRID   

    Format: YGRID pattern, color, flag
    Parameters: pattern and color of the horizontal (y-axis) grid, flag=1 draws also small ticks
    Function: Draws a horizontal (y-axis) grid superimposed to the plot, corresponding to the main ticks. If flag=1 the small ticks are also gridded. The main ticks are always gridded with solid line. if the command DELTA has been given, both small ticks and grid (if required) are drawn also before-the-first and after-the-last main ticks Available patterns are:
    0 No LINE
    1 '----------------'
    2 '----- -- -----'
    3 '-------- '
    4 '-- -- -- -- '
    5 '. . . . . .'
    6 '. . . . . . . . '
    7 '--- . --- . --- '

    Examples:
    YGRID 6 7 1draws a dotted (6) grid in orange (7), all ticks (1). See example and command file.
    YGRID 4 4 2draws a dashed (4) grid in bold yellow (4), main ticks (not 1).
    YGRID 4 4 0draws a dashed (4) grid in bold yellow (4), main ticks (not 1).
    YGRID 4 4 1draws a dashed (4) grid in bold yellow (4), all ticks (1)

    See also: GRID, XGRID
    Bugs: none, but use the command before LABEL, so labels can overwrite the grid. Also, due to solid lines for the main ticks, choose color or gray level so that the grid does not collide with the graph colors.

    YLABEL   

    Format: YLABEL string or YLABEL ?
    Parameters: string, a text of 40 characters max or "?"
    Function: Writes string centered on the left side of the Y-axis of the plot. Angle has the value of 270 degrees or asks for a keyboard-supplied string.
    Examples: only in the case of "?"
    echo enter ylabel:
    ylabel ?

    on the screen will appear:
    enter ylabel:


    give some string from the keyboard
    See also: BOX, CLABEL, ECHO, LABEL, XLABEL
    Bugs: This commando must be given after BOX

    YOPER   

    Format: YOPER opcode, constant
    Parameters: code of selected operation, constant required by operation (or 1 or 0 as necessary)
    Function: Applies the operation defined by opcode to the YV internal vector.

    Available opcodes are:

    OperationOpcodeOperationOpcode
    1) vector+constant(+) or (1)10) EXP(vector*constant)(exp,EXP) or (10)
    2) vector*constant (*) or (2)11) vector/(vector values)(11)
    3) vector/constant(/) or (3)12) vector to hh.mmss ordd.mmss(12)
    4) LOG10(vector)*constant(log,LOG) or (4)13) (1:i)vector/ (1:N)vector(13)
    5) LN(vector)*constant(ln,LN) or (5) 14) const/vector(14)
    6) vector**constant(^) or (6) 15) residuals: (X-Xm)**constant(15)
    7) vector/vector(constant)(7) 16) (1:N)vector (16)
    8) vector-vector(constant)(8) 17) (17)
    9) 10**(vector*constant)(10^,10**) or (9) 18)(18)
    21) vector1± (vector2*const)(21) 24) vector1=vector2(24)
    22) vector1*(vector2*const)(22) 25) vector2=vector1(25)
    23) vector1/(vector2*const)(23)  

    Original data vector will be modified by ANY of the above operations.
    Modifications remain in effect until another YOPER is given or command is cancelled.
    Log of negative number is set to -50.

    Code 3: constant=0 (zero) means constant=# of data (N or KMAX).
    Codes 7 and 8 allow normalization with respect to any element (set constant to the ordinal of the element) of the YV vector.
    Code 11 allows normalization with respect to the integral of vector. The file sum.out, containing the sum of the vector is also created.
    Code 12 assumes that data are expressed in terms of minor unit (e.g. in arcsec if degrees.minutesseconds are required)
    Code 13 computes the empirical distribution function (cumulative distribution) of an early binned vector. The file sum.out, containing the sum of the data vector is also created.
    Code 14 computes the inverse of the vector time a constant. If vector=0 then the inverse will be equal to 9999.
    Code 15 computes the residuals from the mean of the vector, raised to a constant. i.e. (Y-Ym)**const, Ym being the vector mean. The file aver.out, containing the vector mean and the standard deviation of the sample, is written.

    If in code 15 the constant=-3, the standardized vector will be computed (i.e. [(Y-Ym)/std.dev.]) and the external vector std.out written with average and standard deviation followed by the standardized vector in the form of Ordinal, Standard_value. Another way is described in the 1.st example.

    Code 16 computes the sum of a vector. Constant not used, so set it to 1 in the command (e.g. XOPER 16 1). Result stored in sum.out.
    Codes above 20 allow operations between XV and EXV and/or between YV and EYV vectors. Results are copied into XV and YV vectors respectively (i.e. into vector1).
    Code 25 copies YV value into EYV vector (i.e. saves YV into EYV). On the contrary, Code 24 saves EYV into YV.

    See also: EXOPER,EYOPER,YOPER

    Examples:

  • A dataset (i.e. a YCOL content or YV) can be standardized [std=(Y-Ym)/σ(Y)] by the sequence:
    XCOL 1! x-values in XV
    YCOL 2! y-values in YV
    MASK 1 99.9 ! (or so, if necessary)
    YOPER 15 1 !(Y-Ym), residuals, Ym being the average value of YV
    DOS joe aver.out !I use joe as text editor and copy σ(YV) into the .bon file
    !(in the next command line) for a new run. Use your own editor.
    YOPER   /   sigma value ! now YV contains standardized values. Note space(s) before and after the "/" symbol.

    XV and standardized YV can be saved by the sequence:
    XSAVE
    YSAVE
    SAVE 1
    DOS mv save01.sav some file-name.ext

  • Another example refers to 21-25 codes. Two files must be read and three vectors extracted: one abscissa (common to both data vectors) and two ordinates (o1 and o2 from the files file1.dat and file2.dat, respectively). Ordinates must be arranged in order to give a new ordinate o3=log (o1)-log(o2). The command file is:
    LIMITS x1 x2 y1 y2 ! limits in user coords
    BOX ! draw axes and ticks
    DATA [path]file2.dat ! note: the first one is 2.nd file
    LINES 12 200
    XCOL 1 ! load abscissa into XV
    YCOL 2 ! second ordinate o2 into YV
    YOPER log 1 ! log (o2)
    YOPER 25 1 ! put log(o2) into EYV (i.e. vect2=vect1)
    DATA [path]file1.dat ! read first file
    LINES 12 200
    YCOL 2 ! first ordinate o1 into YV
    YOPER log 1 ! log (o1)
    YOPER 21 -1 ! subtract: YV=YV+(-1*EYV)
    LTYPE 1 15 ! set black, solid line
    CONNECT ! draw line
    See also: EYOPER, EXOPER, XOPER
    Bugs:
  • Due to some unknown reason, a command like:
    yoper + -1880.0833333333333 gives the error: YOPER needs 2 parameters, not 3,
    while a command like:
    yoper + -1880.0833333333 works fine. Apparently, the maximum number of decimal digits must be 10.
  • Be sure that in code 23 vector2 is not a null vector.

    YROW   

    Format: YROW n
    Parameters: number of a row in the data file
    Function: Assigns the row #n of the data file to Bongo internal vector YV. If LIMITS is not in effect, this command also computes max and min of the vector.
    Example: plot; command file .bon and data file.
    Bugs: none.

    YSAVE   

    Format: YSAVE
    Parameters: none
    Function: Saves the last-defined Y vector on the disk file SAVE.NN (NN=01, 02 ..., 99). This is a working file: SAVE command saves all SAVE.NN into the file SAVEnn.SAV, in the same order the working files have been originally written. Only numerical values are saved, so, if you wish to retain SAVEnn.SAV, add any comment you need (use DOS command to do that).
    Example:
    DATA file-name ! reads input data
    XCOL 1 ! assigns the column #1 to XV
    XOPER 4 1 ! decimal logarithm of XV
    XSAVE ! writes logarithms to disk file SAVE.01
    YCOL 3 ! assigns the column #3 to YV
    YOPER 7 1 ! gets YV(I)=YV(I)/YV(1)
    YSAVE ! write normalized data to disk file SAVE.02
    SAVE 3 ! creates SAVE03.SAV with column taken from
    ! SAVE.01 and SAVE.02

  • Reads a file with years and winter cloudiness anomalies. Computes anomalies normalized to the sum of all data (yoper code 11). Saves x data and ydata separately, and writes a new file with both years and normalized anomalies:
    pdf; .bon, save.01, save.02, save01.sav, sum-save.out
    Bugs: sometime a zero-length file SAVE.NN is created. Delete the file and try againg PL.

    YSORT   

    Format: YSORT
    Parameters: none
    Function: sorts YV vector in ascending order and consequently rearranges XV. Original XV and YV are modified.
    The output file sort.out is written, containing YV and XV as 1.st and 2.nd column.
    Example: The fifth colums (YV, called "Derivatives") of this file is sorted here and the first column (XV) rearranged.
    See also: XSORT (note that here, in sort.out, the vectors are exchanged).
    Bugs: EXV and EYV vectors are not sorted.

    YSTAT   

    Format: YSTAT
    Parameters: none
    Function: Computes and saves to the disk file stat.out the number of data, mean value, standard deviation, variance, third moment (skewness), fourth moment (kurtosis), Max, Min, Range (=Max-Min) of the YV data vector. Third and fourth moments are the adimensional ones. This means that:

    skewness=(y- Y)3 / (N-1) 3

    kurtosis=(y-Y)4 / (N-1) 4

    N beeing the number of data, Y the mean value of YV and σ the standard deviation of residuals. stat.out is a file with access=append, so new data are appended to an existing file or a new one is created. The first line of any stat.out file indicates what the following colums contain. No other written information is present in the output file: a new row with the above data is added any time YSTAT command is given.
    See also: XSTAT
    Example:
    DATA file-name ! reads input data
    XCOL 1 ! assigns the column #1 to XV
    XSTAT ! a new row of stat.out is added, for XV
    XOPER 4 1 ! decimal logarithm of XV
    XSTAT ! a new row of stat.out is added, for new XV
    YCOL 3 ! assigns the column #3 to YV
    YSTAT ! a new row of stat.out is added, for YV
    YOPER 7 1 ! gets YV(I)=YV(I)/YV(1)
    YSTAT ! a new row of stat.out is added, for new YV
    Bugs: none

    YZERO   

    Format: YZERO val or YZERO
    Parameters: y user coordinate
    Function: draws a full line at user coordinate y=val, from XMIN to XMAX (i.e. a horizontal line), with the last-defined color. Val is defaulted to zero. Use LTYPE command to change drawing color.
    Example: YZERO 3 and .bon file
    Bugs: a line shape different from solid line cannot be selected. Using DELTA, the lines drawn by YZERO do not reach the axis. Sometimes (due to a rounding error, I suppose) lines are not drawn in the exact correspondence of a tick. Use a slightly different value (for val) to correct this bug.

    SCIRC   

    Format: SCIRC ir
    Parameters: Circle radius (ir,pixels)
    Function: Draws a circle, at the last defined current point, with radius ir, all in SCREEN COORDINATES. Uses the last defined filling color. The filling covers also the external border of the circle so, in order to have a border give again the command SCIRC after the command COLOR xx, where xx is the preferred color.
    See also: SRECT, SRELOCATE. The fifth command using screen-coordinates is PHYSICAL. Remember that the default screen-limits of the plotting area -i.e. the BOX- are 120,519,200,599 (400x400 pixels).
    Bugs: none
    Example: See a plot (png) and the relative command file test-screen.bon

    SDRAW   

    Format: SDRAW x1,y1,x2,y2
    Parameters: first, last screen (pixel) coordinates
    Function: Draws a line, from x1,y1 to x2,y2 in SCREEN COORDINATES. Use COLOR x, LTYPE y x to change line color to x and shape to y.
    See also: SRECT, SRELOCATE, SMOVE. The sixth command doing use of screen-coordinates is PHYSICAL.
    Bugs: none. Not sure but the line width should be the default one, without any capability to change it.
    Example: See a plot (png) and the relative command file picchi-2.bon for an enlargement defined by a dashed-line.

    SMOVE   

    Format: SMOVE ix,iy
    Parameters: Screen coordinates x,y
    Function: Defines the current point at ix,iy pixels. The same as SRELOCATE
    See also: SCIRC, SRECT, SRELOCATE. The fifth command using screen-coordinates is PHYSICAL. Remember that the default screen-limits of the plotting area -i.e. the BOX- are 120,519,200,599 (400x400 pixels box).
    Bugs: none

    SRECT   

    Format: SRECT ix,iy
    Parameters: screen coordinates (ix,iy in pixels) of the opposite corner of the rectangle, with respect to the current point.
    Function: Draws a rectangle from the last defined current point to the present coordinates.
    Uses the last defined filling color. The filling covers also the external border of the rectangle so, in order to have a border with a different color give again the command SRECT after the command COLOR xx, where xx is the preferred color and after the command NOFILL.
    See also: SCIRC, SRELOCATE. The fifth command using screen-coordinates is PHYSICAL. Remember that the default screen-limits of the plotting area -i.e. the BOX- are 120,519,200,599 (400x400 pixels).
    Bugs: none
    Example: See a plot (png) and the relative command file test-screen.bon

    SRELOCATE   

    Format: SRELOCATE ix,iy
    Parameters: Screen coordinates x,y
    Function: Defines the current point at ix,iy pixels.
    See also: SCIRC, SRECT. The fifth command using screen-coordinates is PHYSICAL. Remember that the default screen-limits of the plotting area -i.e. the BOX- are 120,519,200,599 (400x400 pixels box).
    Bugs: none
    Example: See a plot (png) and the relative command file test-screen.bon
    Last Updated:                                 Back to HomePage