CircleGraph - Features

Finally we want to indicate any "features" about our data.
These features are plotted within any of the band's segment.

CircleGraphoffers a set of basic and combined features:

A mixture of features may be used within a segment.
E.g. a line graph and a point marker indicating an important position which is annotated with a text.






Target segment/band

Any feature is connected to a specified segment within a band.
Positioning in angular/radius is relativ to the target band/segment.

Define the band and segment you want to use for the following features:
band=band:2
segment=segment:4

All features defined from now on will be targeted to band=2, segment=4.





Radius / vertical line

Place a radial line into a segment, using presently defined pen color/width:
feature=type:radius;xxxx,y1,y2
  • xxxx = position in angular/x-dimension, relativ to the containing segment
  • y1 = start of the radius line in radius/ ydirecton relative to the containing segment
  • y2 = end of the radius line in radius/ ydirecton relative to the containing segment

In the example we set a "scaling" tick mark on a segment which show chromosomal G-banding pattern.
Previously we had set the anguar data range for the segment to chromome 2,
By default the radius datarange of a segment is set o to 100.
Now we paint a "tick mark outside the segment at e.g. base position 10000000:
band=band:2
segment=segment:4
pen.color=black
pen.width=2
#
feature=type:radius;10000000,100,110












Segments/Bars

Place a single - or multiple "bar" into a segment, using presently defined pen / brush:
feature=type:segment;x1,x2,y1,y2;x1,x2,y1,y2;...
  • x1 = start position in angular/x-dimension, relativ to the containing segment
  • x2 = end position in angular/x-dimension, relativ to the containing segment
  • y1 = start position radius/y-dimension relative to the containing segment
  • y2 = start position radius/y-dimension relative to the containing segment
You may have multiple coordinate sets - divided by semicolon (";").
You may place a "bar" freely anywhere within its containing segment;
but also outside if you exceed the containig segmwents boudaroes - erraneously or on purpose.

The script fragment generates various segments:
pen.color=black
brush.color=blue
feature=type:segment; band:1;segment:5;data:805,825,0,100;
brush.color=red
band=band:1
segment=segment:5
feature=type:segment;data:830,850,20,80;
brush.color=green
feature=type:segment;data:855,875,-20,120;880,900,-50,50;905,925,50,150;
brush.color=RGB(240,183,210)
feature=type:segment;data:930,1000,0,50;
brush.color=RGB(187,240,183)
feature=type:segment;data:930,1000,50,100;












Marker

band=band:1 segment=segment:5 pen.color=rgb(0,0,0) pen.width=1 segment.angledatarange=0,100 feature=type:xyseries marker.show=false ydata=80;70;20;50;90;60;80;10;20;60 xdata=5;15;25;35;45;55;65;75;85;95 // feature=type:marker;801,50,10




Lines






Text

Place a text into a segment, using presently defined Font:
feature=type:text;xxxx,yyyy,The text
  • xxxx = position in angular/x-dimension, relativ to the containing segment.
    If omitted, the text is placed in the middle of the containng segment.
  • yyyy = position in radius/y-dimension, relativ to the containing segment.
    If omitted, the text is placed in the middle of the containng segment.
  • The text = that will be displayed in the graph.
Text will be centered around defined x/y-position.
The present font (Face, size, bold, italic, ...) will be used.
In particular you may want to set the orientation how the text is displayed on the graph:
font=orientation:radial;
font=orientation:tangential;
font=orientation:horizontal;

The script fragment:
Band=Band:3
Segment=Segment:1
Segment.Arc=1,200
Font=Orientation:tangential
feature=Type:Text;100,-60,Tangential
Font=Orientation:horizontal
feature=Type:Text;,50,Horizontal
Font=Orientation:radial
feature=Type:Text;190,110,Radial
Generates the graph:
















Bar series

Plot a series of bars (with error) and custom colors.
The series is fitted into the target segment.
Data are autoscaled, but you may define a custom scaling,
e.g. to have same scaling in multiple segments.

Define basic parameters: band, segment, pen, brush, font:
Pen.Color=black
Pen.width=1
brush.color=blue
band=band:2
Segment=segment:4

Define the bar series:
feature=type:barseries
command
command
//

To define a barseries, you may use the following commands.
Command
feature=type:barseries This will start the definition of a barseries.
All following commands will be interpreted
as bar-series commands, until a "end-block" command
is given: "//"
type=y,error,color Define how data tuples are interpreted:
- y = only bars: list of semi-colon separated values for several bars
     (e.g. "12;23;89;16;")
- y,error = bars and error: list of semi-colon separated value pairs of "value,error"
     (e.g. "12,1.3;25,4.2;40,4;" )
- y,color = value and color: list of semi-colon separated value triples of "value,brushcolor,pencolor"
     (e.g. "12,Red,green;25,blue,red;40,yellow,navy;" )
     if second color value missig => pen-color=brushcolor
- y,error,color = value,error and color: list of semi-colon separated value quadruplets of "value,error,brushcolor,pencolor"
     (e.g. "12,2.1,Red,green;25,4.6,blue,red;40,8,yellow,navy;" )
     if second color value missig => pen-color=brushcolor
Alternatively, you may the different values as separate values lists.

You may append (separated by colon) an optional name for the individal bar:
12,Bar1;24,Bar2;43;bar3; ...
ydata=4;8.5;12;24;4; List of semi-colon separated values
yerror=1.4;4.8;4.12;4.5;2; List of semi-colon separated values.
Error must match above list of data values.
Additional error data are ignored, missing value are set to zero.
colors=red;green;blue;lime;aqua; List of semi-colon values for brush- AND pen-color of indivual bars.
Colors MUST match above list of data values.
Additional color values are ignored.
If to few color values are used defined ones are recycled.
brushcolors=red;green;blue;lime;aqua; List of semi-colon values for brush color of indivual bars.
Colors MUST match above list of data values.
Additional color values ......
pencolors=red;green;blue;lime;aqua; List of semi-colon values for pen color of indivual bars.
Colors MUST match above list of data values.
Additional color values .....
Names=Bar1;Bar2;Bar3;Bar4;Bar5; List of semi-colon seperated Names for the individual bars.
Names MUST match above list of data values.
Additional names are ignored.
Names are plotted in radial directon on top of the target segment
centered to the respective bars.
Obviouisly, the names should not contain a semi color.
yscale=min,max Define custom data scaling range
barspacer=xxx Define distance between bars, as fraction of barwidth:
- barspacer=0 : no distance, bars are touchning
- barspacer=0.5 : distance=width of bar
error.color=black Define the color for error bars, independant from the
global pen-color
error.width=2 Define the pen width for error bars, independant from the
global pen-width

Instead of bars you may display Box-Whisker plots:
box1=4;8.5;12;24;4; List of semi-colon separated values for lower Box value.
box2=8;17;24;48;8; List of semi-colon separated values for higher Box value.
whisker1=2;4;6;12;2; List of semi-colon separated values for lower Whisker value.
whisker2=12;23;30;60;10; List of semi-colon separated values for lower Whisker value.
As always, data should be given in the same order.
Number of Box-Whiskers is derived from Box1 line
Missing values are set to zero, addtional values ignored.

A very basic series of bares could be coded:
Segment=segment:5
pen.color=red
brush.color=red
# define barseries
feature=type:barseries
type=y
21;62;83;10;44
//



With errors and names:
Segment=segment:5
pen.color=red
brush.color=red
feature=type:barseries
type=y,error
21,7,Bar1;62,4,Bar2;83,12,Bar3;10,4,Bar4;44,8,Bar5
//



Last example:
y-/error-data, pen-/brush-colors in separate lines
(more easy to copy from other applications):
pen.width=3
band=band:3
Segment=segment:5
feature=type:barseries
error.color=black
error.width=2
ydata=21;62;83;10;44;
yerror=6;9;12;4;8;
brushcolors=red;blue;green;aqua;lime;
pencolors=blue;green;aqua;red;blue;
names=Bar1;bar2;bar3;bar4;bar5;



Convert Tab/NewLine-separated data to Semi-Colon separated data

When copying data from spreadsheet programs, they are mostly separated by Tabs or new line characters.

To get these data easily into CircleGraph:
- copy data from spreadsheet into Clipboard
- Click the convert data button:

- data from clipboard are converted to semi-colon separated format
- placed back into cliboard
Now you paste them anywhere.















XY series

Plot a series of xy-data points with:
Define basic parameters: band, segment, pen, brush, font:
Pen.Color=black
Pen.width=1
brush.color=blue
band=band:2
Segment=segment:4

Define the sx-series:
feature=type:xyseries
command
command
//

To define a xy-series, you may use the following commands.
Command
feature=type:xyseries This will start the definition of a xy-series.
All following commands will be interpreted
as xy-series commands, until a "end-block" command
is given: "//"
ydata=4;8.5;12;24;4; List of semi-colon separated values for y-coodinates
of the data points.
You may have multiple "xdata" command.
Respective data are just appended to the already exisiting data.
Required !!
For test purposes you may generate a random data set:
ydata=simulate;random;Min;Max;Number;
E.g. "ydata=simulate;random;-3;3;100" would generate 100 random datapoints between -3..3
xdata=4;8.5;12;24;4; List of semi-colon separated values for x-coordinate
of the data points.
X-values MUST match order of Y-calues !!
If not supplied, data-points are fitted into
the target segement at equal distances.
yerror=4;8.5;12;24;4; List of semi-colon separated error of y-coodinates
for the data points.
Y-errors MUST match order of Y-values !!
Optional.
xerror=4;8.5;12;24;4; List of semi-colon separated error of x-coodinates
for the data points.
X-errors MUST match order of X-values !!
Optioonal.
colors=red;green;blue;lime;aqua; List of semi-colon values for brush- AND pen-color of indivual bars.
Colors MUST match above list of y-values.
Additional color values are ignored, missing values are to black.
Not yet available.
bruscolors=red;green;blue;lime;aqua; List of semi-colon values for brush color of indivual points.
Colors MUST match above list of y-values.
Additional color values are ignored, missing values are to black.
Not yet available.
pencolors=red;green;blue;lime;aqua; List of semi-colon values for pen color of indivual data points.
Colors MUST match above list of y-values.
Additional color values are ignored, missing values are to black.
Not yet available.
Names=Bar1;Bar2;Bar3;Bar4;Bar5; List of semi-colon seperated Names for the indivual data points.
Names MUST match above list of y-values.
Additional names are ignored, missing Names are skipped.
Names are plotted in radial directon on top of the target segment
centgered to the respective bars.
Obviouisly, the names shold not contain a semi color.
yscale=min,max Define custom data scaling range in y-dimension (radius)
xscale=min,max Define custom data scaling range in x-dimension (angle)
error.pen.color=black Define the color for error bars, independant from the
global pen-color
error.pen.width=2 Define the pen width for error bars, independant from the
global pen-width
error.size=xxx Define the size of the error end markers in pixel.
Default=5.
marker.show=true / false Switch on (=true) / off (=false) display of markers
for the individual data ponits.
Default=true.
lines.show=true / false Switch on (=true) / off (=false) display of connecting lines
between the individual data ponits.
Default=true.
lines.steps=true / false Switch on (=true) / off (=false) display of connecting lines
as STEP function instead of direct point-point connections.
Default=false.
marker.size=xxx Define size for all marker (default=5)
marker.pen.width=xxx Define pen width for all marker (default=2)
marker.pen.color=Color Define pen color for all marker independent from global pen-color
Default is global pen-color,
marker.brush.color=Color Define brush color for all marker independent from global pen-color
Default is global brush-color.

A very basic xy-series could be coded:
brush.color=blue
pen.color=red
band=band:3
Segment=segment:5
# define xy-series feature=type:xyseries
error.color=black
error.width=2
ydata=21;62;83;10;44;
//



A bit more sophisticated, with x-data, errors and names:
brush.color=blue
pen.color=red
band=band:3
Segment=segment:5
# define xy-series feature=type:xyseries
error.color=black
error.width=2
ydata=21;62;83;10;44;
xdata=3;9;13;14;19;
yerror=6;9;12;4;8;
xerror=0.6;0.9;1.2;0.4;0.8;
names=DP1;Dp2;DP3;DP4;DP5;
//



Negative values - auto-fitted:
brush.color=blue
pen.color=red
band=band:3
Segment=segment:5
# define xy-series feature=type:xyseries
error.color=black
error.width=2
ydata=21;-62;83;-10;44;
xdata=-3;9;13;14;19;
//

















Heatmaps

Display a "rectangular" mosaic of numerical values.
Color of the individual tiles indicates magnitude of the values:


The heatmap is automaticall scaled, to fit into the target segment.


To define a heatmap, you need multiple commands.
Command
feature=type:heatmap This will start the definition of a heatmap.
All following commands will be interpreted
as heatmap commands, until a "end-block" command
is given: "//"
Dimension=x,y Dimension of the heatmap:
- x : number of data columns
- y : number of data rows
Lateron non supplied values will be set zo Zero
Lateron additonally supplied values will be ignored.
Required !!
Define the heatmap dimensions prior to any other
parameters !
Palette=Min,Mid,Max Define the color palette to stain values.
For signed values, all three parameters are used.
For unsigned (positive values) only Mid and Max are used.
E.g. "Green,Black,Red":
- negative values will be show in shades of green,
- positive values in red
- values ~0 in black.
You may use the fixed color values or
RGB(r,g,b) color definition.
By default a "Green,Black,Red" palette is used.
Scale Define the color scale for the displayed heatmap.
E.g. "scale=3-,3":
- All values <=3 are given bright green,
- value >=3 bright red, other values are linearly mapped to shades of green and red
By default a "-3,3" sclae is used.
ColumnNames=C1;C2;C3;C4,... Define a list of column names (semi-colon separated).
If defined, they will be displayed on top of the heatmap,
using presently defined font.
RowNames=R1,R2,R3,R4,...Define a list of row names (semi-colon separated).
If defined, they will be displayed on left of the heatmap.
cellborder=true Draws a border around each individual tile/data cell,
using presently defined pen-color, pen-width
RowDataX=yy;yy;yy;yy;.... list (semi-colon separated) of
numercical values for the heatmap
For each Row within the heatmap, supply a RowDataX command.
- RowData1 for the first heatmap row,
- RowData2 for the second heatmap row
- ...
Missing rows/data values are set to Zero
Superficial Rows/data values are ignored.
font=color:colorvalueDefine color for column/row header in heatmap.
font=Size:xxDefine font size for column/row header in heatmap.
pen.color=color:colorvalueDefine color for cell border - if activated.
// ccccccc "//" terminates the heatmap command block
You may append any comment
Required !!



The following code sample would generate the above heatmap:

band=Band:3
segment=segment:1
# heatmap:
Feature=Type:Heatmap
Palette=Green,Black,Red
Scale=-3,3
Dimension=10,4
ColumnNames=c1;c2;c3;c4;c5;c6;c7;c8;c9;10
RowData1= 2; 1; 0;-1;-2;-3;-1; 1; 3; 2
RowData2= 0;-1;-2;-3;-1; 1; 3; 2;-1;-3
RowData3=-1; 1; 1; 0;-1;-2;-3;-1; 1; 3
RowData4=-3;-1; 2; 1; 0;-1;-2;-3;-1; 1
// end of heatmap















Connectors


Connectors may be used to indicate relating positions in your graph.
In the example, left half of the graph shows 24 chromosomes with some (random) data.
Right half shows chromospone 5 and 10 magnified, to better visualize some "important" aspects.

The two connectors (red/blue) indicate the respective chromosomes on the full/magnified view.

Red connector connects whole chromosome 5, blue connector a user defined sub-region within chromosome 10.

Like Heatmaps, xy-series, bar-series, a connector definition may contain multiple commands and must be terminated with a "//":
feature=type:connector
command
command
...
//

Before the connector definiton declare its source Band and Segment.


To define a connector, you may use the following commands.
Command
feature=type:connector This will start the definition of a connector.
All following commands will be interpreted
as connector commands, until a "end-block" command
is given: "//"
type=nnnnn,p1,p2 Defines the type of connector:
  • nnnn : type of shape:
    • parabolic : shows a parabola shaped connector between two segments
      (as shown in the example.
    • others will come later
    Default: if not specified, "parabolic is used.
  • p1 : position where to dock the connector at the source segment
    • in : connector starts at the inner side of the source segment
      (direction to graph centre)
    • out : connector starts at the outer side of the source segment
    Default: if not defined "in"
    NB: presently only "in" is supported.
  • p2 : position where to dock the connector at the target
    "in" or "out as above
    NB: presently only "in" is supported.
source=b,s,p1,p2 Defines the Source of your connector:
- b : ID of band where connector should start. Required
- s : ID of segment where connector should start Required
- p1 : Start (x-/angular) position on source segment. Optional
- p2 : End (x-/angular) position on source segment. Optional
If neither P1/P2 are defined, the whole segments range will be used (red connector in example).
Otherwise you may define the sub-region P1-P2 as start of the connecor (blue connector in the example.
If only P1 is defined the source region will the position P1 ( i.e. P2==P1)
Required
source=b,s,p1,p2 Defines the Target of your connector:
- b : ID of band where connector should end. Required
- s : ID of segment where connector should end Required
- p1 : Start (x-/angular) position on target segment. Optional
- p2 : End (x-/angular) position on target segment. Optional
If neither P1/P2 are defined, the whole segments range will be used (red connector in example).
Otherwise you may define the sub-region P1-P2 as end of the connecor (blue connector in the example.
If only P1 is defined the target region will the position P1 ( i.e. P2==P1)
Required
anchordistance=d1,d2 Defines the Gap ( in pixel) between the connector and the Source/target segment.
- d1 : Distance at source.
- d2 : Distance at target.
For "in" connectors, supply negative values,
for "out" connectors positive values
If only d1 is supplied, d2==d1
Default: if not defined, d1=d2=-5
Optional
taille=t Defines how slim your connector will be compared to a straight trapez.
0 - no taille => straight trapez
0.5 - narrow to 1 pixel at the support points.
Default: 0.1
Optional
supportposition=p Defines at which fraction between Source and Target the taille is applied.
Default: 0.3
Optional. Taille and Supportposition may be used to modulate the shape of the polygonal connector.
If wrongly selected/combined they may generate bizarre forms.

The code fragment generates the red connector in the example:
band=band:1
segment=segment:5
pen.color=rgb(255,192,192)
brush.color=pencolor
# feature=type:connector
type=polygon.parabolic
source=1,5
target=4,1
//


The second code fragment generates the blue connector in the example,
with custom modified docking regions and parabola shape.
band=band:1
segment=segment:10
pen.color=rgb(192,192,255)
brush.color=pencolor
# feature=type:connector
type=polygon.parabolic
taille=0.25
source=1,10
target=4,2
taille=0.1
supportposition=0.2
anchordistance=-10,-30
//


















Paste data series

When entering data series (e.g. for xy-series) you may just type the values, separated by semi-colon.

But for larger data series this may become unconvenient and error prone.

Therefore, CircleGraph allows to convert data from clipboard into xy-series formats.

Copy your data - e.g. from a tab delimited text file or spread sheet into clipboard.

Click the convert data button:

and select the respective converter from the pull-down menu.


The converted text is placed into CircleGraph's script editor at the current text cursor position, as well as back into clipbord.










Anything to one row

Tab / New-line delimited data from clipboard are converted to a list semi-colon separated values.
E.g.:

would be converted to the string:
-1.612;-2.768;-1.51;-2.511;-1.349;-2.308;











Multi column data to Muliple segment's xy-series

This allows to generate xy-series for multiple segments in one go.

Prepare data in the format:
Data MUST be sorted by x-position.
Data with invalid segment-IDs are ignored.
x,y-data are used just as provided, even if they are falling outside the target segment's boundaries.

The copied data table


would be converted to the script fragment:
# transformed pasted data ################################################
#
# define lower y-scaling value for following data
define=$1:-5
# define higher y-scaling value for following data
define=$2:5
#define: show/hide connecting lines between data points
define=$3:false
#define: show hide marker for data points
define=$4:true;
#
segment=segment:1
feature=type:xyseries
YScale=$1,$2
line.show=$3
marker.show=$4
pen.color=maroon
marker.pen.color=maroon
marker.brush.color=maroon
xdata=6304223;10733510;17308156;
Ydata=-1.379;-0.317;-1.032;
//
#
feature=type:xyseries
YScale=$1,$2
line.show=$3
marker.show=$4
pen.color=green
marker.pen.color=green
marker.brush.color=green
xdata=6304223;10733510;17308156;
Ydata=-1.612;-1.51;-1.349;
//
#
feature=type:xyseries
YScale=$1,$2
line.show=$3
marker.show=$4
pen.color=blue
marker.pen.color=blue
marker.brush.color=blue
xdata=6304223;10733510;17308156;
Ydata=-2.768;-2.511;-2.308;
//
#
segment=segment:2
feature=type:xyseries
YScale=$1,$2
line.show=$3
marker.show=$4
pen.color=maroon
marker.pen.color=maroon
marker.brush.color=maroon
xdata=109788001;139537197;170834803;223917527;
Ydata=-0.7;-1.576;-0.407;0.69;
//
#
feature=type:xyseries
YScale=$1,$2
line.show=$3
marker.show=$4
pen.color=green
marker.pen.color=green
marker.brush.color=green
xdata=109788001;139537197;170834803;223917527;
Ydata=-0.905;-3.229;-1.244;-2.513;
//
#
feature=type:xyseries
YScale=$1,$2
line.show=$3
marker.show=$4
pen.color=blue
marker.pen.color=blue
marker.brush.color=blue
xdata=109788001;139537197;170834803;223917527;
Ydata=-2.437;-2.776;-2.756;-3.156;
//
#
segment=segment:3
feature=type:xyseries
YScale=$1,$2
line.show=$3
marker.show=$4
pen.color=maroon
marker.pen.color=maroon
marker.brush.color=maroon
xdata=14755220;62365002;
Ydata=-0.769;-1.979;
//
#
feature=type:xyseries
YScale=$1,$2
line.show=$3
marker.show=$4
pen.color=green
marker.pen.color=green
marker.brush.color=green
xdata=14755220;62365002;
Ydata=-1.295;-1.151;
//
#
feature=type:xyseries
YScale=$1,$2
line.show=$3
marker.show=$4
pen.color=blue
marker.pen.color=blue
marker.brush.color=blue
xdata=14755220;62365002;
Ydata=-1.326;-1.254;
//

The generated parameters:
# define lower y-scaling value for following data
define=$1:-5
# define higher y-scaling value for following data
define=$2:5
#define: show/hide connecting lines between data points
define=$3:false
#define: show hide marker for data points
define=$4:true;


allows to easily adopt all automatically generated series / segments.











Data to bar series

This option allows to copy raw data series to clipboard.
With the respective option, Statistic parameters from data in clipboarda are computed:
For each of the pasted data columns a bar / Bow-Whisker ist generated in the defined target segment.

When converting, CirclGraph ask for some options:


The data range copied from a spreadsheet:


would be processed and converted to e.g. Mean/SDev bar definitions:
feature=type:barseries
ydata=-0.87000;-1.96560;-2.57920;-0.61510;-1.01430;-1.05010;
yerror=0.68162;0.83981;0.16808;1.90706;0.89055;0.89307;
//
#

Adding target band/segment, color, names, scaling:
#
band=band:3
segment=segment:5
#
feature=type:barseries
yscale=-4,4
ydata=-0.87000;-1.96560;-2.57920;-0.61510;-1.01430;-1.05010;
yerror=0.68162;0.83981;0.16808;1.90706;0.89055;0.89307;
colors=red;blue;
names=S1;S2;S3;S4;S5;S6
//
#

will generate the graph:













Data to heat map

This option allows to copy a tab delimited data table from e.g. a spread sheet via Clipboard into CircleGraph.

Select the respective part of the table and copy to clipboard.




From the Convert data menu, select Multi-row to heatmap.

A parameter dialog opens up, allowing to customize the heat map script:


Target Band ID ID of the band where the heat-map will show up.
Leave empty to omit this scrip line.
Target Segment ID ID of the band where the heat-map will show up.
Leave empty to omit this scrip line.
Cell border Show (=yes) or hide (=no) cell borders
Border width Width of pen for painting cell boders.
Border color Pen color for border.
Either a fixed or RGB color value.
Heatmap colors Color range from Min->Zero->Max color value
Scale Define a custom Min/Max value for Data=>Color mapping in heatmap.
Leave empty to autoscale.
First row = Column names Use first copied data row as columns names (=yes).
First column = Row names Use first cell from copied data rows as row names (=yes).
Parameters are memorized and may be used next time data are pasted as heatmaps.

The above table using above parameters will generate the script fragment:

Band=Band:1
Segment=Segment:1
Feature=Type:heatmap
ColumnNames=Ex3;Ex4;Ex5;Ex6;Ex7;
Palette=green,black,rgb(255,0,0)
Scale=-1,1
Dimension=5,13
RowNames=A5;A6;A7;A8;A9;A10;A11;A12;A13;A14;A15;A16;A17;
RowData1=0.37;-0.11;-0.48;0.46;0.16
RowData2=0.42;0.27;-0.07;-0.37;-0.12
RowData3=-0.36;-0.15;0.4;0.16;-0.36
RowData4=0.13;-0.11;0.28;0.15;-0.13
RowData5=-0.23;0.39;0.21;0.18;-0.48
RowData6=0.48;0.09;0.34;0.38;-0.24
RowData7=0.027;-0.09;0.46;-0.18;-0.44
RowData8=-0.18;0.05;0.12;-0.48;-0.25
RowData9=0.25;-0.45;-0.34;0.09;0.43
RowData10=0.04;-0.43;0.23;0.04;-0.11
RowData11=0.38;-0.01;0.16;0;0
RowData12=-0.34;0.42;-0.24;-0.19;0.01
RowData13=-0.09;0.2;-0.16;-0.36;-0.29
// end of heatmap