I'd like some help wrt Lookup. As a starting point I used GroceryList and almost got to where I wanted to be. What remains is getting the sizes of the spheres to be relative to the corresponding entry in 'column2'. Apparently, I haven't understood Lookup yet. Any hint will be appreciated.
Thanks, Marko
//
// time: Thu May 26 11:32:52 2005
//
// version: 3.2.0 (format), 4.3.2 (DX)
//
//
//
// macro reference (direct): FormatList
/usr/pkg/dx/samples/macros/FormatListMacro.net
include "FormatListMacro.net"
//
// MODULE main
//
// comment: This visual program shows the application of categorical tools to
the visualization of a grocery list. The plot on the left is a view of
spending in the grocery list according to one of the 3 categorical variables:
food group, item, and unit. If you use the cursor to pick on the plot (to go
into pick mode, choose View Control from the Options menu of the Image window,
then choose Pick from the Mode option menu), the items contributing to the
picked category will appear in the plot on the right. If you select 3D view
(in the control panel) you will see a scatter plot of the entire grocery list
plotted with axes corresponding to the 3 categorical variables and the
size/color of the glyph set by the total amount spent.
// page assignment: 3DView order=3, windowed=0, showing=1
// workspace: width = 554, height = 612
// layout: snap = 1, width = 50, height = 50, align = NL
//
macro main(
) -> (
) {
//
// node ImportSpreadsheet[1]: x = 0, y = 10, inputs = 10, label =
ImportSpreadsheet
// input[1]: defaulting = 0, visible = 1, type = 32, value = "testfield.csv"
// input[2]: defaulting = 0, visible = 1, type = 32, value = "\t"
// input[5]: defaulting = 0, visible = 0, type = 16777248, value =
{"allstring"}
// page group: 3DView
//
main_ImportSpreadsheet_1_out_1,
main_ImportSpreadsheet_1_out_2[cache: 0] =
ImportSpreadsheet(
main_ImportSpreadsheet_1_in_1,
main_ImportSpreadsheet_1_in_2,
main_ImportSpreadsheet_1_in_3,
main_ImportSpreadsheet_1_in_4,
main_ImportSpreadsheet_1_in_5,
main_ImportSpreadsheet_1_in_6,
main_ImportSpreadsheet_1_in_7,
main_ImportSpreadsheet_1_in_8,
main_ImportSpreadsheet_1_in_9,
main_ImportSpreadsheet_1_in_10
) [instance: 1, cache: 1];
//
// node Mark[3]: x = 50, y = 100, inputs = 2, label = Mark
// input[2]: defaulting = 0, visible = 1, type = 32, value = "column0"
// page group: 3DView
//
main_Mark_3_out_1 =
Mark(
main_ImportSpreadsheet_1_out_1,
main_Mark_3_in_2
) [instance: 3, cache: 1];
//
// node Mark[4]: x = 100, y = 100, inputs = 2, label = Mark
// input[2]: defaulting = 0, visible = 1, type = 32, value = "column1"
// page group: 3DView
//
main_Mark_4_out_1 =
Mark(
main_ImportSpreadsheet_1_out_1,
main_Mark_4_in_2
) [instance: 4, cache: 1];
//
// node Compute[5]: x = 100, y = 190, inputs = 4, label = Compute
// input[1]: defaulting = 0, visible = 0, type = 32, value = "float([$0.x,
$1.x])"
// page group: 3DView
// expression: value = float([a.x, b.x])
// name[2]: value = a
// name[3]: value = b
// name[4]: value = c
//
main_Compute_5_out_1[cache: 0] =
Compute(
main_Compute_5_in_1,
main_Mark_3_out_1,
main_Mark_4_out_1,
main_Compute_5_in_4
) [instance: 5, cache: 1];
//
// node Categorize[1]: x = 100, y = 280, inputs = 2, label = Categorize
// page group: 3DView
//
main_Categorize_1_out_1 =
Categorize(
main_Compute_5_out_1,
main_Categorize_1_in_2
) [instance: 1, cache: 1];
//
// node Lookup[1]: x = 150, y = 370, inputs = 7, label = Lookup
// input[2]: defaulting = 1, visible = 1, type = 32, value = "data lookup"
// input[3]: defaulting = 0, visible = 0, type = 32, value = "data"
// input[4]: defaulting = 1, visible = 0, type = 32, value = "data lookup"
// input[5]: defaulting = 0, visible = 0, type = 32, value = "column2"
// input[6]: defaulting = 0, visible = 0, type = 32, value = "positions"
// page group: 3DView
//
main_Lookup_1_out_1[cache: 0] =
Lookup(
main_Categorize_1_out_1,
main_Lookup_1_in_2,
main_Lookup_1_in_3,
main_Lookup_1_in_4,
main_Lookup_1_in_5,
main_Lookup_1_in_6,
main_Lookup_1_in_7
) [instance: 1, cache: 1];
//
// node AutoGlyph[1]: x = 150, y = 460, inputs = 7, label = AutoGlyph
// input[2]: defaulting = 0, visible = 1, type = 32, value = "text"
// input[3]: defaulting = 1, visible = 1, type = 5, value = 3.0
// input[4]: defaulting = 0, visible = 1, type = 5, value = .5
// input[5]: defaulting = 1, visible = 1, type = 5, value = NULL
// input[6]: defaulting = 0, visible = 0, type = 5, value = 0.0
// input[7]: defaulting = 1, visible = 0, type = 5, value = 10.0
// page group: 3DView
//
main_AutoGlyph_1_out_1 =
AutoGlyph(
main_Lookup_1_out_1,
main_AutoGlyph_1_in_2,
main_AutoGlyph_1_in_3,
main_AutoGlyph_1_in_4,
main_AutoGlyph_1_in_5,
main_AutoGlyph_1_in_6,
main_AutoGlyph_1_in_7
) [instance: 1, cache: 1];
//
// node Mark[6]: x = 400, y = 190, inputs = 2, label = Mark
// input[2]: defaulting = 0, visible = 1, type = 32, value = "column1"
// page group: 3DView
//
main_Mark_6_out_1 =
Mark(
main_ImportSpreadsheet_1_out_1,
main_Mark_6_in_2
) [instance: 6, cache: 1];
//
// node Categorize[2]: x = 400, y = 280, inputs = 2, label = Categorize
// input[2]: defaulting = 1, visible = 1, type = 16777248, value = NULL
// page group: 3DView
//
main_Categorize_2_out_1 =
Categorize(
main_Mark_6_out_1,
main_Categorize_2_in_2
) [instance: 2, cache: 1];
//
// node Extract[5]: x = 350, y = 370, inputs = 2, label = Extract
// input[2]: defaulting = 0, visible = 1, type = 32, value = "column0
lookup"
// page group: 3DView
//
main_Extract_5_out_1 =
Extract(
main_ImportSpreadsheet_1_out_1,
main_Extract_5_in_2
) [instance: 5, cache: 1];
//
// node Extract[6]: x = 500, y = 370, inputs = 2, label = Extract
// input[2]: defaulting = 0, visible = 1, type = 32, value = "data lookup"
// page group: 3DView
//
main_Extract_6_out_1 =
Extract(
main_Categorize_2_out_1,
main_Extract_6_in_2
) [instance: 6, cache: 1];
//
// node FormatList[1]: x = 400, y = 460, inputs = 2, label = FormatList
// input[2]: defaulting = 0, visible = 1, type = 32, value = "%d"
// page group: 3DView
//
main_FormatList_1_out_1 =
FormatList(
main_Extract_6_out_1,
main_FormatList_1_in_2
) [instance: 1, cache: 1];
//
// node Image[4]: x = 400, y = 550, inputs = 49, label = Image
// input[1]: defaulting = 0, visible = 0, type = 67108863, value = "Image_4"
// input[4]: defaulting = 0, visible = 0, type = 1, value = 1
// input[5]: defaulting = 0, visible = 0, type = 8, value = [5.6636 7.01723
0]
// input[6]: defaulting = 0, visible = 0, type = 8, value = [5.6636 7.01723
51.2808]
// input[7]: defaulting = 0, visible = 0, type = 5, value = 27.4814
// input[8]: defaulting = 0, visible = 0, type = 1, value = 509
// input[9]: defaulting = 0, visible = 0, type = 5, value = 0.691
// input[10]: defaulting = 0, visible = 0, type = 8, value = [0 1 0]
// input[11]: defaulting = 1, visible = 0, type = 5, value = 30.0001
// input[12]: defaulting = 0, visible = 0, type = 1, value = 0
// input[14]: defaulting = 0, visible = 0, type = 1, value = 1
// input[15]: defaulting = 1, visible = 0, type = 32, value = "none"
// input[16]: defaulting = 1, visible = 0, type = 32, value = "none"
// input[17]: defaulting = 1, visible = 0, type = 1, value = 1
// input[18]: defaulting = 1, visible = 0, type = 1, value = 1
// input[19]: defaulting = 0, visible = 0, type = 1, value = 0
// input[29]: defaulting = 0, visible = 0, type = 3, value = 1
// input[41]: defaulting = 0, visible = 0, type = 32, value = "none"
// input[42]: defaulting = 0, visible = 0, type = 32, value = "3dview"
// input[46]: visible = 1
// input[47]: visible = 1
// input[48]: visible = 1
// page group: 3DView
// title: value = 3dview
// depth: value = 24
// window: position = (0.2285,0.4271), size = 0.5107x0.5117
// internal caching: 1
//
main_Image_4_out_1[cache: 0],
main_Image_4_out_2[cache: 0],
main_Image_4_out_3[cache: 0] =
Image(
main_Image_4_in_1,
main_AutoGlyph_1_out_1,
main_Image_4_in_3,
main_Image_4_in_4,
main_Image_4_in_5,
main_Image_4_in_6,
main_Image_4_in_7,
main_Image_4_in_8,
main_Image_4_in_9,
main_Image_4_in_10,
main_Image_4_in_11,
main_Image_4_in_12,
main_Image_4_in_13,
main_Image_4_in_14,
main_Image_4_in_15,
main_Image_4_in_16,
main_Image_4_in_17,
main_Image_4_in_18,
main_Image_4_in_19,
main_Image_4_in_20,
main_Image_4_in_21,
main_Image_4_in_22,
main_Image_4_in_23,
main_Image_4_in_24,
main_Image_4_in_25,
main_Image_4_in_26,
main_Image_4_in_27,
main_Image_4_in_28,
main_Image_4_in_29,
main_Image_4_in_30,
main_Image_4_in_31,
main_Image_4_in_32,
main_Image_4_in_33,
main_Image_4_in_34,
main_Image_4_in_35,
main_Image_4_in_36,
main_Image_4_in_37,
main_Image_4_in_38,
main_Image_4_in_39,
main_Image_4_in_40,
main_Image_4_in_41,
main_Image_4_in_42,
main_Image_4_in_43,
main_Image_4_in_44,
main_Image_4_in_45,
main_Extract_5_out_1,
main_FormatList_1_out_1,
main_Image_4_in_48,
main_Image_4_in_49
) [instance: 4, cache: 1];
//
// node Print[3]: x = 50, y = 370, inputs = 3, label = Print
// input[2]: defaulting = 0, visible = 1, type = 32, value = "rd"
// page group: 3DView
//
Print(
main_Categorize_1_out_1,
main_Print_3_in_2,
main_Print_3_in_3
) [instance: 3, cache: 1];
// network: end of macro body
CacheScene(main_Image_4_in_1, main_Image_4_out_1, main_Image_4_out_2);
}
main_ImportSpreadsheet_1_in_1 = "testfield.csv";
main_ImportSpreadsheet_1_in_2 = "\t";
main_ImportSpreadsheet_1_in_3 = NULL;
main_ImportSpreadsheet_1_in_4 = NULL;
main_ImportSpreadsheet_1_in_5 = {"allstring"};
main_ImportSpreadsheet_1_in_6 = NULL;
main_ImportSpreadsheet_1_in_7 = NULL;
main_ImportSpreadsheet_1_in_8 = NULL;
main_ImportSpreadsheet_1_in_9 = NULL;
main_ImportSpreadsheet_1_in_10 = NULL;
main_ImportSpreadsheet_1_out_1 = NULL;
main_Mark_3_in_2 = "column0";
main_Mark_3_out_1 = NULL;
main_Mark_4_in_2 = "column1";
main_Mark_4_out_1 = NULL;
main_Compute_5_in_1 = "float([$0.x, $1.x])";
main_Compute_5_in_4 = NULL;
main_Compute_5_out_1 = NULL;
main_Categorize_1_in_2 = NULL;
main_Categorize_1_out_1 = NULL;
main_Lookup_1_in_2 = NULL;
main_Lookup_1_in_3 = "data";
main_Lookup_1_in_4 = NULL;
main_Lookup_1_in_5 = "column2";
main_Lookup_1_in_6 = "positions";
main_Lookup_1_in_7 = NULL;
main_Lookup_1_out_1 = NULL;
main_AutoGlyph_1_in_2 = "text";
main_AutoGlyph_1_in_3 = NULL;
main_AutoGlyph_1_in_4 = .5;
main_AutoGlyph_1_in_5 = NULL;
main_AutoGlyph_1_in_6 = 0.0;
main_AutoGlyph_1_in_7 = NULL;
main_AutoGlyph_1_out_1 = NULL;
main_Mark_6_in_2 = "column1";
main_Mark_6_out_1 = NULL;
main_Categorize_2_in_2 = NULL;
main_Categorize_2_out_1 = NULL;
main_Extract_5_in_2 = "column0 lookup";
main_Extract_5_out_1 = NULL;
main_Extract_6_in_2 = "data lookup";
main_Extract_6_out_1 = NULL;
main_FormatList_1_in_2 = "%d";
main_FormatList_1_out_1 = NULL;
macro Image(
id,
object,
where,
useVector,
to,
from,
width,
resolution,
aspect,
up,
viewAngle,
perspective,
options,
buttonState = 1,
buttonUpApprox = "none",
buttonDownApprox = "none",
buttonUpDensity = 1,
buttonDownDensity = 1,
renderMode = 0,
defaultCamera,
reset,
backgroundColor,
throttle,
RECenable = 0,
RECfile,
RECformat,
RECresolution,
RECaspect,
AAenable = 0,
AAlabels,
AAticks,
AAcorners,
AAframe,
AAadjust,
AAcursor,
AAgrid,
AAcolors,
AAannotation,
AAlabelscale,
AAfont,
interactionMode,
title,
AAxTickLocs,
AAyTickLocs,
AAzTickLocs,
AAxTickLabels,
AAyTickLabels,
AAzTickLabels,
webOptions) -> (
object,
camera,
where)
{
ImageMessage(
id,
backgroundColor,
throttle,
RECenable,
RECfile,
RECformat,
RECresolution,
RECaspect,
AAenable,
AAlabels,
AAticks,
AAcorners,
AAframe,
AAadjust,
AAcursor,
AAgrid,
AAcolors,
AAannotation,
AAlabelscale,
AAfont,
AAxTickLocs,
AAyTickLocs,
AAzTickLocs,
AAxTickLabels,
AAyTickLabels,
AAzTickLabels,
interactionMode,
title,
renderMode,
buttonUpApprox,
buttonDownApprox,
buttonUpDensity,
buttonDownDensity) [instance: 1, cache: 1];
autoCamera =
AutoCamera(
object,
"front",
object,
resolution,
aspect,
[0,1,0],
perspective,
viewAngle,
backgroundColor) [instance: 1, cache: 1];
realCamera =
Camera(
to,
from,
width,
resolution,
aspect,
up,
perspective,
viewAngle,
backgroundColor) [instance: 1, cache: 1];
coloredDefaultCamera =
UpdateCamera(defaultCamera,
background=backgroundColor) [instance: 1, cache: 1];
nullDefaultCamera =
Inquire(defaultCamera,
"is null + 1") [instance: 1, cache: 1];
resetCamera =
Switch(
nullDefaultCamera,
coloredDefaultCamera,
autoCamera) [instance: 1, cache: 1];
resetNull =
Inquire(
reset,
"is null + 1") [instance: 2, cache: 1];
reset =
Switch(
resetNull,
reset,
0) [instance: 2, cache: 1];
whichCamera =
Compute(
"($0 != 0 || $1 == 0) ? 1 : 2",
reset,
useVector) [instance: 1, cache: 1];
camera = Switch(
whichCamera,
resetCamera,
realCamera) [instance: 3, cache: 1];
AAobject =
AutoAxes(
object,
camera,
AAlabels,
AAticks,
AAcorners,
AAframe,
AAadjust,
AAcursor,
AAgrid,
AAcolors,
AAannotation,
AAlabelscale,
AAfont,
AAxTickLocs,
AAyTickLocs,
AAzTickLocs,
AAxTickLabels,
AAyTickLabels,
AAzTickLabels) [instance: 1, cache: 1];
switchAAenable = Compute("$0+1",
AAenable) [instance: 2, cache: 1];
object = Switch(
switchAAenable,
object,
AAobject) [instance:4, cache: 1];
SWapproximation_options =
Switch(
buttonState,
buttonUpApprox,
buttonDownApprox) [instance: 5, cache: 1];
SWdensity_options =
Switch(
buttonState,
buttonUpDensity,
buttonDownDensity) [instance: 6, cache: 1];
HWapproximation_options =
Format(
"%s,%s",
buttonDownApprox,
buttonUpApprox) [instance: 1, cache: 1];
HWdensity_options =
Format(
"%d,%d",
buttonDownDensity,
buttonUpDensity) [instance: 2, cache: 1];
switchRenderMode = Compute(
"$0+1",
renderMode) [instance: 3, cache: 1];
approximation_options = Switch(
switchRenderMode,
SWapproximation_options,
HWapproximation_options) [instance: 7, cache: 1];
density_options = Switch(
switchRenderMode,
SWdensity_options,
HWdensity_options) [instance: 8, cache: 1];
renderModeString = Switch(
switchRenderMode,
"software",
"hardware")[instance: 9, cache: 1];
object_tag = Inquire(
object,
"object tag")[instance: 3, cache: 1];
annoted_object =
Options(
object,
"send boxes",
0,
"cache",
1,
"object tag",
object_tag,
"ddcamera",
whichCamera,
"rendering approximation",
approximation_options,
"render every",
density_options,
"button state",
buttonState,
"rendering mode",
renderModeString) [instance: 1, cache: 1];
RECresNull =
Inquire(
RECresolution,
"is null + 1") [instance: 4, cache: 1];
ImageResolution =
Inquire(
camera,
"camera resolution") [instance: 5, cache: 1];
RECresolution =
Switch(
RECresNull,
RECresolution,
ImageResolution) [instance: 10, cache: 1];
RECaspectNull =
Inquire(
RECaspect,
"is null + 1") [instance: 6, cache: 1];
ImageAspect =
Inquire(
camera,
"camera aspect") [instance: 7, cache: 1];
RECaspect =
Switch(
RECaspectNull,
RECaspect,
ImageAspect) [instance: 11, cache: 1];
switchRECenable = Compute(
"$0 == 0 ? 1 : (($2 == $3) && ($4 == $5)) ? ($1 == 1 ? 2 : 3) : 4",
RECenable,
switchRenderMode,
RECresolution,
ImageResolution,
RECaspect,
ImageAspect) [instance: 4, cache: 1];
NoRECobject, RECNoRerenderObject, RECNoRerHW, RECRerenderObject =
Route(switchRECenable, annoted_object);
Display(
NoRECobject,
camera,
where,
throttle) [instance: 1, cache: 1];
image =
Render(
RECNoRerenderObject,
camera) [instance: 1, cache: 1];
Display(
image,
NULL,
where,
throttle) [instance: 2, cache: 1];
WriteImage(
image,
RECfile,
RECformat) [instance: 1, cache: 1];
rec_where = Display(
RECNoRerHW,
camera,
where,
throttle) [instance: 1, cache: 0];
rec_image = ReadImageWindow(
rec_where) [instance: 1, cache: 1];
WriteImage(
rec_image,
RECfile,
RECformat) [instance: 1, cache: 1];
RECupdateCamera =
UpdateCamera(
camera,
resolution=RECresolution,
aspect=RECaspect) [instance: 2, cache: 1];
Display(
RECRerenderObject,
camera,
where,
throttle) [instance: 1, cache: 1];
RECRerenderObject =
ScaleScreen(
RECRerenderObject,
NULL,
RECresolution,
camera) [instance: 1, cache: 1];
image =
Render(
RECRerenderObject,
RECupdateCamera) [instance: 2, cache: 1];
WriteImage(
image,
RECfile,
RECformat) [instance: 2, cache: 1];
}
main_Image_4_in_1 = "Image_4";
main_Image_4_in_3 = "X24,,3dview";
main_Image_4_in_4 = 1;
main_Image_4_in_5 = [5.6636 7.01723 0];
main_Image_4_in_6 = [5.6636 7.01723 51.2808];
main_Image_4_in_7 = 27.4814;
main_Image_4_in_8 = 509;
main_Image_4_in_9 = 0.691;
main_Image_4_in_10 = [0 1 0];
main_Image_4_in_11 = NULL;
main_Image_4_in_12 = 0;
main_Image_4_in_13 = NULL;
main_Image_4_in_14 = 1;
main_Image_4_in_15 = NULL;
main_Image_4_in_16 = NULL;
main_Image_4_in_17 = NULL;
main_Image_4_in_18 = NULL;
main_Image_4_in_19 = 0;
main_Image_4_in_20 = NULL;
main_Image_4_in_21 = NULL;
main_Image_4_in_22 = NULL;
main_Image_4_in_23 = NULL;
main_Image_4_in_25 = NULL;
main_Image_4_in_26 = NULL;
main_Image_4_in_27 = NULL;
main_Image_4_in_28 = NULL;
main_Image_4_in_29 = 1;
main_Image_4_in_30 = NULL;
main_Image_4_in_31 = NULL;
main_Image_4_in_32 = NULL;
main_Image_4_in_33 = NULL;
main_Image_4_in_34 = NULL;
main_Image_4_in_35 = NULL;
main_Image_4_in_36 = NULL;
main_Image_4_in_37 = NULL;
main_Image_4_in_38 = NULL;
main_Image_4_in_39 = NULL;
main_Image_4_in_40 = NULL;
main_Image_4_in_41 = "none";
main_Image_4_in_42 = "3dview";
main_Image_4_in_43 = NULL;
main_Image_4_in_44 = NULL;
main_Image_4_in_45 = NULL;
main_Image_4_in_48 = NULL;
main_Image_4_in_49 = NULL;
main_Print_3_in_2 = "rd";
main_Print_3_in_3 = NULL;
Executive("product version 4 3 2");
$sync
main();
Academics 0 3 Academics 1 1 Academics 2 0 Academics 3 2 Academics 4 0 Academics 5 2 Academics 6 1 Academics 7 1 Academics 8 2 Academics 9 3 Academics 10 1 Academics 11 3 Academics 12 1 Academics 13 3 Academics 14 1 Work Colleagues 0 5 Work Colleagues 1 0 Work Colleagues 2 0 Work Colleagues 3 1 Work Colleagues 4 2 Work Colleagues 5 4 Work Colleagues 6 1 Work Colleagues 7 2 Work Colleagues 8 5 Work Colleagues 9 2 Work Colleagues 10 4 Work Colleagues 11 3 Work Colleagues 12 2 Work Colleagues 13 4 Work Colleagues 14 1 FOSS community 0 1 FOSS community 1 1 FOSS community 2 0 FOSS community 3 2 FOSS community 4 1 FOSS community 5 2 FOSS community 6 0 FOSS community 7 1 FOSS community 8 3 FOSS community 9 2 FOSS community 10 3 FOSS community 11 1 FOSS community 12 1 FOSS community 13 4 FOSS community 14 1 Conference/workshop 0 1 Conference/workshop 1 1 Conference/workshop 2 2 Conference/workshop 3 3 Conference/workshop 4 0 Conference/workshop 5 2 Conference/workshop 6 3 Conference/workshop 7 2 Conference/workshop 8 1 Conference/workshop 9 5 Conference/workshop 10 2 Conference/workshop 11 3 Conference/workshop 12 0 Conference/workshop 13 3 Conference/workshop 14 2 Friends 0 5 Friends 1 2 Friends 2 2 Friends 3 2 Friends 4 1 Friends 5 6 Friends 6 1 Friends 7 2 Friends 8 3 Friends 9 2 Friends 10 3 Friends 11 1 Friends 12 2 Friends 13 5 Friends 14 2 Internet 0 6 Internet 1 3 Internet 2 3 Internet 3 4 Internet 4 8 Internet 5 2 Internet 6 4 Internet 7 7 Internet 8 6 Internet 9 9 Internet 10 6 Internet 11 0 Internet 12 5 Internet 13 4 Internet 14 0 Magazine/Journals 0 3 Magazine/Journals 1 2 Magazine/Journals 2 1 Magazine/Journals 3 2 Magazine/Journals 4 1 Magazine/Journals 5 4 Magazine/Journals 6 2 Magazine/Journals 7 1 Magazine/Journals 8 2 Magazine/Journals 9 6 Magazine/Journals 10 2 Magazine/Journals 11 6 Magazine/Journals 12 1 Magazine/Journals 13 3 Magazine/Journals 14 6 Newspaper 0 2 Newspaper 1 2 Newspaper 2 0 Newspaper 3 2 Newspaper 4 1 Newspaper 5 1 Newspaper 6 1 Newspaper 7 0 Newspaper 8 0 Newspaper 9 1 Newspaper 10 0 Newspaper 11 1 Newspaper 12 0 Newspaper 13 3 Newspaper 14 2 Radio 0 0 Radio 1 0 Radio 2 0 Radio 3 1 Radio 4 0 Radio 5 1 Radio 6 0 Radio 7 0 Radio 8 0 Radio 9 0 Radio 10 0 Radio 11 0 Radio 12 0 Radio 13 0 Radio 14 0 During studies 0 2 During studies 1 0 During studies 2 1 During studies 3 1 During studies 4 0 During studies 5 5 During studies 6 1 During studies 7 1 During studies 8 0 During studies 9 4 During studies 10 2 During studies 11 2 During studies 12 3 During studies 13 2 During studies 14 0 Training 0 2 Training 1 1 Training 2 0 Training 3 3 Training 4 0 Training 5 3 Training 6 1 Training 7 3 Training 8 3 Training 9 5 Training 10 3 Training 11 3 Training 12 1 Training 13 2 Training 14 0 Television 0 0 Television 1 0 Television 2 0 Television 3 2 Television 4 0 Television 5 1 Television 6 0 Television 7 1 Television 8 0 Television 9 0 Television 10 0 Television 11 0 Television 12 1 Television 13 1 Television 14 1
pgpzcYrKiO3dY.pgp
Description: PGP signature
