<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
@@color(blue):WARNING: The Add Additional Attribute filter is unsupported in parallel mode.@@
!Open test file
Open up the test file {{{b1.00300.d0-1000.std}}}, available as part of the test data in [[Downloads]]. If you have trouble doing this, see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]].  You may have to execute a {{{Glyph}}} filter as well for the data to become visible, this is covered in the tutorial.
!Add additional attribute
#Go to {{{File->Filters->AstroViz Analysis->Add Additional Attribute}}}
#In the {{{Object Inspector}}} click on the {{{...}}} at the end of the {{{Additional Attribute File}}} textbox to open a file picker dialog. Alternately, manually type the full path in the box.
#Select {{{b1.00300.d0-1000.den}}}, the additional attribute file, available in the test data.
#Click {{{OK}}}
#In the {{{Object Inspector}}} change the text in the {{{Attribute Name}}} textbox to be {{{Density}}}
#Click {{{Apply}}}
#Go to the {{{Display}}} tab in the {{{Object Inspector}}},  click on the {{{Color By}}} drop down menu, change to the {{{density}}}, which region is the most dense? This operation can also be done in the the toolbar.
!Advanced Usage
#Examine the format of the additional attribute file {{{b1.00300.d0-1000.den}}}. It first lists the number of particles in the file, then beginning on the next line it list an additional float attribute one per line.
#Assign each particle in {{{b1.00300.d0-1000.std}}} a random number by producing a file of the additional attribute format. Python would be a good language of choice, an example script is given in the test data directory, {{{genRandomAttribute.py}}}.
#Load this attribute in via the {{{Add Additional Attribute}}} filter by following the same procedure as above, naming your attribute e.g. {{{random}}}.
#Generate a histogram of your random numbers
##Go to {{{Filters->AstroViz Analysis->Histogram}}}
##Change the {{{Scalars}}} selection box in the {{{Object Inspector}}} to be your {{{random}}} attribute
##Click {{{Apply}}}
#The window will split with your histogram on one half. You can label it, just as you did the plots you generated in the [[Profile tutorial]]. Do this with the labels of your choice
#Export your histogram as a high resolution {{{png}}} file
##Click on your histogram
##Go to {{{File->Save Screenshot}}}
##Leave the {{{Save only selected view}}} checkbox checked
##Change the resolution to be {{{1200x800}}} and the image quality to {{{100}}}
##Click {{{OK}}} and give your figure a name
!Overview
~AstroViz is a parallel visualization tool for astrophysical simulations implemented as a plugin extending the open source application ~ParaView.
!!Key Features
*Tipsy binary reader
**marked particle files
*Calculate center-of-mass
*Profile
**bins by linear or log radius
**density
**cumulative mass
**circular velocity
**radial/tangential velocity
**angular momentum
**velocity dispersions
*Calculate principle moments of inertia
*Smooth particle quantities
**smooth over any quantity in input
**calculate smoothed density
*Find virial radius
*~Friends-Of-Friends halo finder
*Append additional ascii attributes
*Tipsy color maps
!Common astrophysics codes whose output is supported
*PKDGRAV 
**via ~HDF5 or Tipsy binary
*Ramses 
**via VTK
*Gadget2
**via ~HDF5 
**support for ~GADGET2 binaries to be added
*Enzo 
**via ~HDF5
*Athena
**outputs legacy VTK files which can be read, 
**there is a script to convert binary file chunks into a single VTK file provided with the Athena distribution
!Parallel features
All ~AstroViz features, except those which require reading files in ascii format, are fully parallel, 
!Python Scripting
*Each plugin feature, as well as all standard ~ParaView functionality is available wrapped in python.
*Can record any interaction within the GUI as a python script
!License
~AstroViz is fully opensource and is released under a [[BSD license|http://creativecommons.org/licenses/BSD/]]. 
For ~AstroViz binaries for common platforms will be provided, and builds are already available on the server machines I have setup, see [[List of machines on which ParaView/AstroViz are currently setup and administered by myself]].

But for now, you may need to build AstroViz or your desired plugin manually on the client. Obtain ~AstroViz source from [[ParaView/AstroViz Downloads|Downloads]], and see [[build a ParaView plugin]] for more information about building.
!Easy install
There are many ~ParaView binaries available from [[ParaView's website|http://paraview.org/paraview/resources/software.html]]. 
!Cases where you need to build from source
#if a binary isn't available for your platform
#if building ~AstroViz or your own plugin from source
#if configuring your own ~ParaView server
#if you want to run with the latest bleeding edge CVS version of ~ParaView
!Building ~ParaView from source
!!Dependencies
*[[cmake|http://www.cmake.org/cmake/resources/software.html]]
**I recommend version 2.6.4 as I have problems with 2.8.0 and ~ParaView
*build from source of [[QT version 4.3.5|ftp://ftp.trolltech.com/qt/source/]] for ~ParaView 3.6.1, [[QT version 4.5|http://qt.nokia.com/downloads]] or greater for CVS ~ParaView 
*if you are setting up your own ~ParaView server
**[[OSMesa|http://www.mesa3d.org/]] if your server doesn't have ~GPUs
**[[mpi|http://www.mcs.anl.gov/research/projects/mpi/]] to enable parallel features
!!Build
#Obtain ~ParaView source of your desired version from  [[ParaView's website|http://paraview.org/paraview/resources/software.html]]. 
#Create a build directory
#Point to ~ParaView source directory by running {{{ccmake /path/to/paraview/src/}}} from the build directory
#Push {{{c}}} for "configure"
#Modify options as needed, iteratively pushing {{{c}}} for "configure". See below for suggested modifications of default options
#When there are no problems, the {{{g}}} will become available for generating the make file. Press {{{g}}}
#Make file will be generated. Execute {{{make}}} in plugin build directory to build.
!!Suggested build options
These depend on you aim for building from source. In any case the following flags should be set. 
{{{
BUILD_SHARED_LIBS		ON
BUILD_TESTING			OFF  
CMAKE_BUILD_TYPE		Release   
PARAVIEW_ENABLE_PYTHON		ON
}}}
!if configuring your own ~ParaView server
*enable MPI with
{{{
PARAVIEW_USE_MPI		ON 
MPIEXEC_MAX_NUMPROCS		desired number
}}}
*if your sever doesn't have ~GPUs, then enable ~OSMesa by 
{{{
 OPENGL_INCLUDE_DIR		/path/to/MesaBuild/include                                    
 OPENGL_gl_LIBRARY		/path/to/MesaBuild/lib64/libGL.so
 OPENGL_glu_LIBRARY		/path/to/MesaBuild/lib64/libGLU.so  
 OSMESA_INCLUDE_DIR		/path/to/MesaBuild/include
 OSMESA_LIBRARY			/path/to/MesaBuild/lib64/libOSMesa.so
 VTK_USE_OFFSCREEN		ON  
}}}
!if you want to run with the latest bleeding edge CVS version of ~ParaView
There are lots of useful plugins and additional features in CVS ~ParaView, you can try enabling some of them. Sometimes they don't work out of the box or have additional dependencies.
!Open test file
Open up the test file {{{b1.00300.d0-1000.std}}}, available as part of the test data in [[Downloads]]. If you have trouble doing this, see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]].
!Find the center of mass of the entire collection of particles
#Go to {{{Filters->AstroViz Analysis->Center Of Mass}}}
#Mouse over the {{{Scalars}}} menu in the {{{Object Inspector}}} to see its purpose (hint, it indicates what scalar array represents the mass, so that the filter can be used with multiple types of readers)
#Select {{{mass}}} from this menu
#Click {{{Apply}}}, you should see a single point on the screen, this is the center of mass
##If other particles are obscuring the one that just appeared go to the {{{Pipeline Browser}}} and click on the Eye icon on each filter but the {{{Center Of Mass}}}
#View the coordinates of the center of mass by clicking on the {{{Information}}} tab in the {{{Object Inspector}}}. The {{{X,Y,Z}}} range should be equal to the {{{X,Y,Z}}} coordinates of the Center Of Mass, respectively. In this case, it is {{{(-0.0465,-0.058,-0.107)}}}.
!Find the center of mass of a selected subset of particles
#Delete any previous executions of the Center-of-mass filter but clicking on them in the {{{Pipeline Browser}}} then clicking {{{Delete}}} in the {{{Properties}}} tab of the {{{Object Inspector}}}
#Make sure you can see the particles in the test file, you may need to execute a {{{Glyph}}} filter. If you are having trouble doing this see the [[Tipsy binary reader tutorial]].
#Find the ''Select Points On'' icon in the toolbar, the icon is a mouse pointer hovering over a grey dotted line square surrounding three orange points which form a triangle. Click it.
#Select a subset of points of your choice by drawing a square with the mouse. The points should change color. You can rotate the view and see the selection in 3D.
#Go to {{{Filters->Alphabetical->Extract Selection}}}. Click {{{Apply}}} without modifying any parameters. The 3D view should now contain only the particles you have selected. Any further analysis filters you run past this point in the pipeline will operate on this subset. Go to the {{{Information}}} tab in the {{{Object Inspector}}} panel to see how many particles your selected extraction is composed of.
#Execute the Center-of-mass filter exactly as the ''Find the center of mass of the entire collection of particles'' section. You now have calculated the center of mass of your selection.
#See the [[ParaView tutorial|http://www.cmake.org/Wiki/SC08_ParaView_Tutorial]] (external) for more information about selection. You can extract a selection in 3D via a cube or sphere as well.
!Open test file
Open up the test file {{{b1.00300.d0-1000.std}}}, available as part of the test data in [[Downloads]]. If you have trouble doing this, see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]].
!Execute the Principle Moments Of Inertia filter
#Go to {{{Filters->AstroViz Analysis->Principle Moments of Inertia}}}
#Mouse over the {{{Scalars}}} menu in the {{{Object Inspector}}} to see its purpose (hint, it indicates what scalar array represents the mass, so that the filter can be used with multiple types of readers, not all of which will have the same name for the mass array)
##Select {{{mass}}} from this menu
#Click {{{Apply}}}
##You should now see three lines, each representing a different principle moment
#Color by the principle moment
##Go to the {{{Display}}} tab in the {{{Object Inspector}}}, change the {{{Color By}}} drop down menu to {{{moment number}}}. This operation can also be done in the the toolbar
##Toggle the {{{Color Legend Visibility}}} by clicking on the button that looks like a vertical color spectrum in the toolbar. This will then tell you which moment is which.
!Can't see anything after clicking 'apply'
The filter/reader you are using may not produce data in a structure ~ParaView automatically displays. Try creating a glyph using the glyph filter, if your data/attributes are now visible/accessible then this was the case.
!Crash immediately after clicking 'apply' in client/server mode
*You might be using features enabled by a plugin that not loaded on both client and server
*You might have the ~LD_LIBRARY_PATH screwed up for your ~ParaView client or server. Do an {{{ldd}}} on the installation lib directory of ~ParaView on both client and server. If you get "not found" for any library this is the case
!Build problems with ~ParaView or ~ParaView plugin
This could be a range of issues. Some I've run across myself are listed in [[Build/install ParaView]] and [[Build/install AstroViz]].
*launch the server manually from the machine you wish to run on see [[Running in client/server mode]] for list of currently configured servers
*click the connect to server button from toolbar (icon is two computers with a green circle connecting them)
!First time connecting
*click add server
*enter info of server launched and port, along with a name for the configuration
*click configure
*select option to launch server manually
!Next time connecting
Configuration of servers should automatically be saved, click on desired configuration and click connect.
Most filters function best if data is distributed spatially across processes, but it is also important that the amount of data each process is responsible for is balanced. If the data has some defined structure to it, it is easy to do this directly while reading the file as each process knows exactly what coordinate extent it is responsible for reading and where in the file this coordinate extent corresponds to. If the data has no predefined structure, then the entire file must first be read in before the data is redistributed spatially. This process can also be done manually with the D3 filter, or automatically within the Tipsy binary reader (see the [[Tipsy binary reader tutorial]]) as Tipsy files are an example of a data format without a predefined structure.  Distributing the data spatially is best for most filter's operations, but can take time to run on a large dataset. 
!!~AstroViz Filters which are independent of data distribution
*[[Tipsy binary reader|Tipsy binary reader tutorial]]
*[[Center-of-Mass filter|Calculate center-of-mass tutorial]]
*[[Profile filter|Profile tutorial]]
*[[Principle Moments of Inertia filter|Calculate principle moments of inertia tutorial]]
!!~AstroViz Filters where data distribution will change result
Currently these filters will be nonsensical in parallel if data is not first spatially distributed as they rely on information about neighbor particles but only have capability to consider particles residing on the same process as neighbors. ~AstroViz 2.0 will fix this, but for now the filters may be used, but only with caution.
*[[Friends-Of-Friends halo finder filter|Friends-Of-Friends halo finder tutorial]]
*[[Neighbor Smooth filter|Smooth particle quantities tutorial]]
!!~AstroViz filters which do not function in parallel under any circumstances
*[[Add Additional Attribute filter|Append additional ascii attributes tutorial]]
*[[Marked particle file option of Tipsy binary reader|Tipsy binary reader tutorial]]
[[Getting Started]]
!~AstroViz
!!Binaries
OS X 10.5 and 10.6 binaries as well as Linux x86 64-bit binaries will be made available in mid-December 2009 coinciding with the release of ~AstroViz 2.0.
!!Source Code
[[Version 1.3 source, stable|http://www.itp.uzh.ch/~corbett/astroviz/AstroViz_Snapshot_22-11-09.zip]]
!!Source Code Documentation
Currently every method in the Version 1.3 source is documented. I haven't yet run Doxygen, so the user will need to do that herself/himself if they don't fancy reading code.
!!Test Data
[[Test data for use in testing or tutorials|http://www.itp.uzh.ch/~corbett/astroviz/Testing.zip]]
!!Papers and Presentations
[[AstroViz MICA talk, October 2009|http://www.itp.uzh.ch/~corbett/astroviz/AstroViz.pdf]]
!~ParaView
[[ParaView|http://www.paraview.org/paraview/resources/software.html]]
[[CMake|http://www.cmake.org/cmake/resources/software.html]]
[[OSMesa|http://www.mesa3d.org/]]
{{{
try: paraview.simple
except: from paraview.simple import *

Glyph3 = GetActiveSource()
AddAdditionalAttribute1 = AddAdditionalAttribute()

AddAdditionalAttribute1.AttributeName = 'Density'
AddAdditionalAttribute1.AdditionalAttributeFile = '/Users/corbett/Documents/Projects/Work/Viz/pvaddons/testdata/b1.00300.d0-1000.den'

DataRepresentation4 = GetDisplayProperties(Glyph3)
DataRepresentation5 = Show()
DataRepresentation5.EdgeColor = [0.0, 0.0, 0.50000762951094835]
DataRepresentation5.SelectionCellLabelColor = [0.0, 1.0, 0.0]
DataRepresentation5.SelectionPointLabelJustification = 'Center'
DataRepresentation5.SelectionCellLabelJustification = 'Center'
DataRepresentation5.PointSize = 1.0
DataRepresentation5.ColorAttributeType = 'POINT_DATA'
DataRepresentation5.ColorArrayName = 'global id'
DataRepresentation5.SelectionLineWidth = 2.0
DataRepresentation5.Texture = []
DataRepresentation5.SelectionCellLabelFontSize = 24
DataRepresentation5.SelectionColor = [0.048416876478217748, 0.63672846570534825, 1.0]
DataRepresentation5.SelectionRepresentation = 'Wireframe'
DataRepresentation5.LookupTable = []

DataRepresentation4.Visibility = 0

Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *
connection = servermanager.Connect('x01y01.zbox.physik.uzh.ch', 11111)
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

Glyph1 = FindSource("Glyph1")
my_representation1 = GetDisplayProperties(Glyph1)
NeighborSmooth1 = GetActiveSource()
DataRepresentation8 = GetDisplayProperties(NeighborSmooth1)
Delete(DataRepresentation8)
Delete(NeighborSmooth1)
my_representation1.Visibility = 1

Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *
connection = servermanager.Connect()
servermanager.LoadPlugin("/Users/corbett/Documents/Projects/Work/Viz/pvaddons/ParaViz/ParaViz1.3_build/libAstroVizPlugin.dylib")
dir(servermanager.sources.TipsyReader)
help(servermanager.sources.TipsyReader)
b1_00300_d01000_std = servermanager.sources.TipsyReader( AaaFileName='/Users/corbett/Documents/Projects/Work/Viz/pvaddons/testdata/b1.00300.d0-1000.std' )
b1_00300_d01000_std.ListProperties()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

b1_00300_d01000_std = GetActiveSource()
Glyph2 = Glyph( GlyphType="Arrow" )

Glyph2.Scalars = ['POINTS', 'global id']
Glyph2.SetScaleFactor = 0.0021977998316287995
Glyph2.Vectors = ['POINTS', 'velocity']
Glyph2.GlyphType = "Arrow"

Glyph2.SetScaleFactor = 0.0083106366129561508
Glyph2.RandomMode = 0
Glyph2.GlyphType = "2D Glyph"
Glyph2.MaskPoints = 0

Glyph2.GlyphType.GlyphType = 'Vertex'

a1_globalid_PVLookupTable = CreateLookupTable( RGBPoints=[0.0, 0.0, 0.0, 1.0, 3.9220000000000002, 0.0, 0.0, 0.99607800000000002, 7.8429999999999991, 0.0039215700000000001, 0.0, 0.99215699999999996, 11.764999999999999, 0.0078431400000000002, 0.0, 0.98823499999999997, 15.685999999999998, 0.011764699999999999, 0.0, 0.98039200000000004, 19.608000000000001, 0.0156863, 0.0, 0.97647099999999998, 23.529, 0.019607800000000002, 0.0, 0.972549, 27.451000000000001, 0.023529399999999999, 0.0, 0.96862700000000002, 31.372999999999998, 0.027451, 0.0, 0.96862700000000002, 35.293999999999997, 0.031372499999999998, 0.0, 0.96470599999999995, 39.216000000000001, 0.035294100000000002, 0.0, 0.96078399999999997, 43.137, 0.039215699999999999, 0.0, 0.95686300000000002, 47.058999999999997, 0.043137300000000003, 0.0, 0.94901999999999997, 50.979999999999997, 0.047058799999999998, 0.0, 0.94509799999999999, 54.902000000000001, 0.050980400000000002, 0.0, 0.94117600000000001, 58.823999999999998, 0.054901999999999999, 0.0, 0.93725499999999995, 62.744999999999997, 0.058823500000000001, 0.0, 0.93725499999999995, 66.667000000000002, 0.062745099999999998, 0.0, 0.93333299999999997, 70.587999999999994, 0.066666699999999995, 0.0, 0.92941200000000002, 74.510000000000005, 0.070588200000000004, 0.0, 0.92549000000000003, 78.430999999999997, 0.074509800000000001, 0.0, 0.91764699999999999, 82.352999999999994, 0.078431399999999998, 0.0, 0.91372500000000001, 86.275000000000006, 0.082352900000000007, 0.0, 0.90980399999999995, 90.195999999999998, 0.086274500000000004, 0.0, 0.90588199999999997, 94.117999999999995, 0.090196100000000001, 0.0, 0.90588199999999997, 98.039000000000001, 0.094117599999999996, 0.0, 0.90196100000000001, 101.961, 0.098039200000000007, 0.0, 0.89803900000000003, 105.88200000000001, 0.101961, 0.0, 0.89411799999999997, 109.804, 0.105882, 0.0, 0.88627500000000003, 113.72500000000001, 0.109804, 0.0, 0.88235300000000005, 117.64700000000001, 0.11372500000000001, 0.0, 0.87843099999999996, 121.569, 0.117647, 0.0, 0.87451000000000001, 125.48999999999999, 0.121569, 0.0, 0.87451000000000001, 129.41200000000001, 0.129412, 0.0, 0.87058800000000003, 133.333, 0.129412, 0.0, 0.86666699999999997, 137.255, 0.13725499999999999, 0.0, 0.86274499999999998, 141.17599999999999, 0.13725499999999999, 0.0, 0.85490200000000005, 145.09800000000001, 0.145098, 0.0, 0.85097999999999996, 149.02000000000001, 0.145098, 0.0, 0.84705900000000001, 152.941, 0.15294099999999999, 0.0, 0.84313700000000003, 156.863, 0.15294099999999999, 0.0, 0.84313700000000003, 160.78400000000002, 0.16078400000000001, 0.0, 0.83921599999999996, 164.70599999999999, 0.16078400000000001, 0.0, 0.83529399999999998, 168.62700000000001, 0.168627, 0.0, 0.83137300000000003, 172.54900000000001, 0.168627, 0.0, 0.82352899999999996, 176.47099999999998, 0.17647099999999999, 0.0, 0.819608, 180.392, 0.17647099999999999, 0.0, 0.81568600000000002, 184.31399999999999, 0.18431400000000001, 0.0, 0.81176499999999996, 188.23500000000001, 0.18431400000000001, 0.0, 0.81176499999999996, 192.15699999999998, 0.19215699999999999, 0.0, 0.80784299999999998, 196.078, 0.19215699999999999, 0.0, 0.80392200000000003, 200.0, 0.20000000000000001, 0.0, 0.80000000000000004, 203.922, 0.20000000000000001, 0.0, 0.792157, 207.84299999999999, 0.207843, 0.0, 0.78823500000000002, 211.76500000000001, 0.207843, 0.0, 0.78431399999999996, 215.68599999999998, 0.21568599999999999, 0.0, 0.78039199999999997, 219.608, 0.21568599999999999, 0.0, 0.78039199999999997, 223.529, 0.22352900000000001, 0.0, 0.77647100000000002, 227.45099999999999, 0.22352900000000001, 0.0, 0.77254900000000004, 231.37299999999999, 0.231373, 0.0, 0.76862699999999995, 235.29400000000001, 0.231373, 0.0, 0.76078400000000002, 239.21600000000001, 0.23921600000000001, 0.0, 0.75686299999999995, 243.137, 0.23921600000000001, 0.0, 0.75294099999999997, 247.059, 0.247059, 0.0, 0.74902000000000002, 250.97999999999999, 0.247059, 0.0, 0.74902000000000002, 254.90200000000002, 0.25097999999999998, 0.0, 0.74509800000000004, 258.82400000000001, 0.258824, 0.0, 0.74117599999999995, 262.745, 0.26274500000000001, 0.0, 0.73725499999999999, 266.66699999999997, 0.26274500000000001, 0.0, 0.72941199999999995, 270.58800000000002, 0.26666699999999999, 0.0, 0.72548999999999997, 274.50999999999999, 0.27450999999999998, 0.0, 0.72156900000000002, 278.43099999999998, 0.27843099999999998, 0.0, 0.71764700000000003, 282.35300000000001, 0.27843099999999998, 0.0, 0.71764700000000003, 286.27499999999998, 0.28235300000000002, 0.0, 0.71372500000000005, 290.19600000000003, 0.29019600000000001, 0.0, 0.70980399999999999, 294.11799999999999, 0.29411799999999999, 0.0, 0.70588200000000001, 298.03899999999999, 0.29411799999999999, 0.0, 0.69803899999999997, 301.96099999999996, 0.298039, 0.0, 0.69411800000000001, 305.88200000000001, 0.30588199999999999, 0.0, 0.69019600000000003, 309.80400000000003, 0.30980400000000002, 0.0, 0.68627499999999997, 313.726, 0.30980400000000002, 0.0, 0.68627499999999997, 317.64699999999999, 0.31372499999999998, 0.0, 0.68235299999999999, 321.56900000000002, 0.32156899999999999, 0.0, 0.67843100000000001, 325.49000000000001, 0.32549, 0.0, 0.67451000000000005, 329.41199999999998, 0.32549, 0.0, 0.66666700000000001, 333.33299999999997, 0.32941199999999998, 0.0, 0.66274500000000003, 337.25500000000005, 0.33725500000000003, 0.0, 0.65882399999999997, 341.17599999999999, 0.34117599999999998, 0.0, 0.65490199999999998, 345.09800000000001, 0.34117599999999998, 0.0, 0.65490199999999998, 349.01999999999998, 0.34509800000000002, 0.0, 0.65098, 352.94100000000003, 0.352941, 0.0, 0.64705900000000005, 356.863, 0.35686299999999999, 0.0, 0.64313699999999996, 360.78399999999999, 0.35686299999999999, 0.0, 0.63529400000000003, 364.70599999999996, 0.36078399999999999, 0.0, 0.63137299999999996, 368.62700000000001, 0.36862699999999998, 0.0, 0.62745099999999998, 372.54900000000004, 0.37254900000000002, 0.0, 0.623529, 376.471, 0.37254900000000002, 0.0, 0.623529, 380.392, 0.376471, 0.0, 0.61960800000000005, 384.31399999999996, 0.38431399999999999, 0.0, 0.61568599999999996, 388.23500000000001, 0.388235, 0.0, 0.611765, 392.15699999999998, 0.388235, 0.0, 0.60392199999999996, 396.07799999999997, 0.39215699999999998, 0.0, 0.59999999999999998, 400.0, 0.40000000000000002, 0.0, 0.596078, 403.92200000000003, 0.403922, 0.0, 0.59215700000000004, 407.84300000000002, 0.403922, 0.0, 0.59215700000000004, 411.76499999999999, 0.40784300000000001, 0.0, 0.58823499999999995, 415.68599999999998, 0.415686, 0.0, 0.584314, 419.608, 0.41960799999999998, 0.0, 0.58039200000000002, 423.529, 0.41960799999999998, 0.0, 0.57254899999999997, 427.45100000000002, 0.42352899999999999, 0.0, 0.56862699999999999, 431.37299999999999, 0.43137300000000001, 0.0, 0.56470600000000004, 435.29400000000004, 0.43529400000000001, 0.0, 0.56078399999999995, 439.21600000000001, 0.43529400000000001, 0.0, 0.56078399999999995, 443.137, 0.439216, 0.0, 0.556863, 447.05899999999997, 0.44705899999999998, 0.0, 0.55294100000000002, 450.98000000000002, 0.45097999999999999, 0.0, 0.54901999999999995, 454.90199999999999, 0.45097999999999999, 0.0, 0.54117599999999999, 458.82400000000001, 0.45490199999999997, 0.0, 0.53725500000000004, 462.745, 0.46274500000000002, 0.0, 0.53333299999999995, 466.66699999999997, 0.466667, 0.0, 0.52941199999999999, 470.58800000000002, 0.466667, 0.0, 0.52941199999999999, 474.50999999999999, 0.47058800000000001, 0.0, 0.52549000000000001, 478.43099999999998, 0.478431, 0.0, 0.52156899999999995, 482.35299999999995, 0.48235299999999998, 0.0, 0.51764699999999997, 486.27500000000003, 0.48235299999999998, 0.0, 0.50980400000000003, 490.19600000000003, 0.48627500000000001, 0.0, 0.50588200000000005, 494.11799999999999, 0.494118, 0.0, 0.50196099999999999, 498.03899999999999, 0.49803900000000001, 0.0, 0.49803900000000001, 501.96100000000001, 0.49803900000000001, 0.0, 0.49803900000000001, 505.88200000000006, 0.50196099999999999, 0.0, 0.494118, 509.80400000000003, 0.50588200000000005, 0.0, 0.48627500000000001, 513.726, 0.50980400000000003, 0.0, 0.48235299999999998, 517.64699999999993, 0.51764699999999997, 0.0, 0.48235299999999998, 521.56899999999996, 0.52156899999999995, 0.0, 0.478431, 525.49000000000001, 0.52549000000000001, 0.0, 0.47058800000000001, 529.41200000000003, 0.52941199999999999, 0.0, 0.466667, 533.33299999999997, 0.52941199999999999, 0.0, 0.466667, 537.255, 0.53333299999999995, 0.0, 0.46274500000000002, 541.17600000000004, 0.53725500000000004, 0.0, 0.45490199999999997, 545.09799999999996, 0.54117599999999999, 0.0, 0.45097999999999999, 549.01999999999998, 0.54901999999999995, 0.0, 0.45097999999999999, 552.94100000000003, 0.55294100000000002, 0.0, 0.44705899999999998, 556.86299999999994, 0.556863, 0.0, 0.439216, 560.78399999999999, 0.56078399999999995, 0.0, 0.43529400000000001, 564.70600000000002, 0.56078399999999995, 0.0, 0.43529400000000001, 568.62699999999995, 0.56470600000000004, 0.0, 0.43137300000000001, 572.54899999999998, 0.56862699999999999, 0.0, 0.42352899999999999, 576.471, 0.57254899999999997, 0.0, 0.41960799999999998, 580.39200000000005, 0.58039200000000002, 0.0, 0.41960799999999998, 584.31399999999996, 0.584314, 0.0, 0.415686, 588.2349999999999, 0.58823499999999995, 0.0, 0.40784300000000001, 592.15700000000004, 0.59215700000000004, 0.0, 0.403922, 596.07799999999997, 0.59215700000000004, 0.0, 0.403922, 600.0, 0.596078, 0.0, 0.40000000000000002, 603.92199999999991, 0.59999999999999998, 0.0, 0.39215699999999998, 607.84300000000007, 0.60392199999999996, 0.0, 0.388235, 611.76499999999999, 0.611765, 0.0, 0.388235, 615.68599999999992, 0.61568599999999996, 0.0, 0.38431399999999999, 619.60800000000006, 0.61960800000000005, 0.0, 0.376471, 623.529, 0.623529, 0.0, 0.37254900000000002, 627.45100000000002, 0.623529, 0.0, 0.37254900000000002, 631.37299999999993, 0.62745099999999998, 0.0, 0.36862699999999998, 635.29399999999998, 0.63137299999999996, 0.0, 0.36078399999999999, 639.21600000000001, 0.63529400000000003, 0.0, 0.35686299999999999, 643.13699999999994, 0.64313699999999996, 0.0, 0.35686299999999999, 647.05900000000008, 0.64705900000000005, 0.0, 0.352941, 650.98000000000002, 0.65098, 0.0, 0.34509800000000002, 654.90199999999993, 0.65490199999999998, 0.0, 0.34117599999999998, 658.82399999999996, 0.65490199999999998, 0.0, 0.34117599999999998, 662.745, 0.65882399999999997, 0.0, 0.33725500000000003, 666.66700000000003, 0.66274500000000003, 0.0, 0.32941199999999998, 670.58799999999997, 0.66666700000000001, 0.0, 0.32549, 674.5100000000001, 0.67451000000000005, 0.0, 0.32549, 678.43100000000004, 0.67843100000000001, 0.0, 0.32156899999999999, 682.35299999999995, 0.68235299999999999, 0.0, 0.31372499999999998, 686.27499999999998, 0.68627499999999997, 0.0, 0.30980400000000002, 690.19600000000003, 0.68627499999999997, 0.0, 0.30980400000000002, 694.11800000000005, 0.69019600000000003, 0.0, 0.30588199999999999, 698.03899999999999, 0.69411800000000001, 0.0, 0.298039, 701.9609999999999, 0.69803899999999997, 0.0, 0.29411799999999999, 705.88200000000006, 0.70588200000000001, 0.0, 0.29411799999999999, 709.80399999999997, 0.70980399999999999, 0.0, 0.29019600000000001, 713.726, 0.71372500000000005, 0.0, 0.28235300000000002, 717.64700000000005, 0.71764700000000003, 0.0, 0.27843099999999998, 721.56899999999996, 0.71764700000000003, 0.0, 0.27843099999999998, 725.49000000000001, 0.72156900000000002, 0.0, 0.27450999999999998, 729.41199999999992, 0.72548999999999997, 0.0, 0.26666699999999999, 733.33299999999997, 0.72941199999999995, 0.0, 0.26274500000000001, 737.255, 0.73725499999999999, 0.0, 0.26274500000000001, 741.17599999999993, 0.74117599999999995, 0.0, 0.258824, 745.09800000000007, 0.74509800000000004, 0.0, 0.25097999999999998, 749.01999999999998, 0.74902000000000002, 0.0, 0.247059, 752.94099999999992, 0.74902000000000002, 0.0, 0.247059, 756.86299999999994, 0.75294099999999997, 0.0, 0.23921600000000001, 760.78399999999999, 0.75686299999999995, 0.0, 0.23921600000000001, 764.70600000000002, 0.76078400000000002, 0.0, 0.231373, 768.62799999999993, 0.76862699999999995, 0.0, 0.231373, 772.54900000000009, 0.77254900000000004, 0.0, 0.22352900000000001, 776.471, 0.77647100000000002, 0.0, 0.22352900000000001, 780.39199999999994, 0.78039199999999997, 0.0, 0.21568599999999999, 784.31399999999996, 0.78039199999999997, 0.0, 0.21568599999999999, 788.23500000000001, 0.78431399999999996, 0.0, 0.207843, 792.15700000000004, 0.78823500000000002, 0.0, 0.207843, 796.07899999999995, 0.792157, 0.0, 0.20000000000000001, 800.0, 0.80000000000000004, 0.0, 0.20000000000000001, 803.92200000000003, 0.80392200000000003, 0.0, 0.19215699999999999, 807.84299999999996, 0.80784299999999998, 0.0, 0.19215699999999999, 811.76499999999999, 0.81176499999999996, 0.0, 0.18431400000000001, 815.68600000000004, 0.81176499999999996, 0.0, 0.18431400000000001, 819.60799999999995, 0.81568600000000002, 0.0, 0.17647099999999999, 823.529, 0.819608, 0.0, 0.17647099999999999, 827.45100000000002, 0.82352899999999996, 0.0, 0.168627, 831.37300000000005, 0.83137300000000003, 0.0, 0.168627, 835.29399999999998, 0.83529399999999998, 0.0, 0.16078400000000001, 839.21600000000001, 0.83921599999999996, 0.0, 0.16078400000000001, 843.13700000000006, 0.84313700000000003, 0.0, 0.15294099999999999, 847.05899999999997, 0.84313700000000003, 0.0, 0.15294099999999999, 850.9799999999999, 0.84705900000000001, 0.0, 0.145098, 854.90200000000004, 0.85097999999999996, 0.0, 0.145098, 858.82400000000007, 0.85490200000000005, 0.0, 0.13725499999999999, 862.745, 0.86274499999999998, 0.0, 0.13725499999999999, 866.66699999999992, 0.86666699999999997, 0.0, 0.129412, 870.58800000000008, 0.87058800000000003, 0.0, 0.129412, 874.50999999999999, 0.87451000000000001, 0.0, 0.121569, 878.43099999999993, 0.87451000000000001, 0.0, 0.117647, 882.35300000000007, 0.87843099999999996, 0.0, 0.11372500000000001, 886.27500000000009, 0.88235300000000005, 0.0, 0.109804, 890.19600000000003, 0.88627500000000003, 0.0, 0.105882, 894.11799999999994, 0.89411799999999997, 0.0, 0.101961, 898.03899999999999, 0.89803900000000003, 0.0, 0.098039200000000007, 901.96100000000001, 0.90196100000000001, 0.0, 0.094117599999999996, 905.88199999999995, 0.90588199999999997, 0.0, 0.090196100000000001, 909.80399999999997, 0.90588199999999997, 0.0, 0.086274500000000004, 913.726, 0.90980399999999995, 0.0, 0.082352900000000007, 917.64699999999993, 0.91372500000000001, 0.0, 0.078431399999999998, 921.56899999999996, 0.91764699999999999, 0.0, 0.074509800000000001, 925.49000000000001, 0.92549000000000003, 0.0, 0.070588200000000004, 929.41200000000003, 0.92941200000000002, 0.0, 0.066666699999999995, 933.33299999999997, 0.93333299999999997, 0.0, 0.062745099999999998, 937.255, 0.93725499999999995, 0.0, 0.058823500000000001, 941.17700000000002, 0.93725499999999995, 0.0, 0.054901999999999999, 945.09799999999996, 0.94117600000000001, 0.0, 0.050980400000000002, 949.01999999999998, 0.94509799999999999, 0.0, 0.047058799999999998, 952.94100000000003, 0.94901999999999997, 0.0, 0.043137300000000003, 956.86300000000006, 0.95686300000000002, 0.0, 0.039215699999999999, 960.78399999999999, 0.96078399999999997, 0.0, 0.035294100000000002, 964.7059999999999, 0.96470599999999995, 0.0, 0.031372499999999998, 968.62800000000004, 0.96862700000000002, 0.0, 0.027451, 972.54899999999998, 0.96862700000000002, 0.0, 0.023529399999999999, 976.471, 0.972549, 0.0, 0.019607800000000002, 980.39200000000005, 0.97647099999999998, 0.0, 0.0156863, 984.31400000000008, 0.98039200000000004, 0.0, 0.011764699999999999, 988.23500000000001, 0.98823499999999997, 0.0, 0.0078431400000000002, 992.15699999999993, 0.99215699999999996, 0.0, 0.0039215700000000001, 996.07799999999997, 0.99607800000000002, 0.0, 0.0, 1000.0, 1.0, 0.0, 0.0], VectorMode='Magnitude', ColorSpace='RGB', ScalarRangeInitialized=1.0 )

a1_globalid_PiecewiseFunction = CreatePiecewiseFunction()

DataRepresentation3 = Show()
DataRepresentation3.EdgeColor = [0.0, 0.0, 0.50000762951094835]
DataRepresentation3.SelectionCellLabelColor = [0.0, 1.0, 0.0]
DataRepresentation3.SelectionPointLabelJustification = 'Center'
DataRepresentation3.SelectionCellLabelJustification = 'Center'
DataRepresentation3.ColorAttributeType = 'POINT_DATA'
DataRepresentation3.ColorArrayName = 'global id'
DataRepresentation3.SelectionLineWidth = 2.0
DataRepresentation3.Texture = []
DataRepresentation3.SelectionCellLabelFontSize = 24
DataRepresentation3.SelectionColor = [0.048416876478217748, 0.63672846570534825, 1.0]
DataRepresentation3.SelectionRepresentation = 'Wireframe'
DataRepresentation3.LookupTable = a1_globalid_PVLookupTable

DataRepresentation3.PointSize = 1.0

Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *
connection = servermanager.Connect('x01y01.zbox.physik.uzh.ch', 11111)
servermanager.LoadPlugin("/Users/corbett/Documents/Projects/Work/Viz/pvaddons/ParaViz/ParaViz1.3_build/libAstroVizPlugin.dylib")
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

ScalarBarWidgetRepresentation1 = CreateScalarBar( Title='global id', Position2=[0.13, 0.5], Enabled=1, LabelFontSize=12, LookupTable=[], TitleFontSize=12, Position=[0.87, 0.25] )
GetRenderView().Representations.append(ScalarBarWidgetRepresentation1)
Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

b1_00300_d01000_std = TipsyReader( AaaFileName='/Users/corbett/Documents/Projects/Work/Viz/pvaddons/testdata/b1.00300.d0-1000.std' )

b1_00300_d01000_std.MarkFileName = ''
b1_00300_d01000_std.DistributeDataOn = 0

DataRepresentation1 = Show()
DataRepresentation1.EdgeColor = [0.0, 0.0, 0.50000762951094835]
DataRepresentation1.SelectionCellLabelColor = [0.0, 1.0, 0.0]
DataRepresentation1.SelectionPointLabelJustification = 'Center'
DataRepresentation1.SelectionCellLabelJustification = 'Center'
DataRepresentation1.SelectionLineWidth = 2.0
DataRepresentation1.ScalarOpacityUnitDistance = 0.023835305423260164
DataRepresentation1.SelectionCellLabelFontSize = 24
DataRepresentation1.SelectionColor = [0.048416876478217748, 0.63672846570534825, 1.0]
DataRepresentation1.SelectionRepresentation = 'Wireframe'

Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

Profile1 = GetActiveSource()
PlotData1 = PlotData()

XYPlotView1 = CreateXYPlotView()

DataRepresentation13 = Show()
DataRepresentation13.AttributeType = 'Row Data'
DataRepresentation13.SeriesVisibility = ['velocity_total (0)', '0', 'velocity_total (1)', '0', 'velocity_total (2)', '0', 'velocity_average (0)', '0', 'velocity_average (1)', '0', 'velocity_average (2)', '0', 'velocity_cumulative (0)', '0', 'velocity_cumulative (1)', '0', 'velocity_cumulative (2)', '0', 'GlyphVector_total (0)', '0', 'GlyphVector_total (1)', '0', 'GlyphVector_total (2)', '0', 'GlyphVector_average (0)', '0', 'GlyphVector_average (1)', '0', 'GlyphVector_average (2)', '0', 'GlyphVector_cumulative (0)', '0', 'GlyphVector_cumulative (1)', '0', 'GlyphVector_cumulative (2)', '0', 'angular momentum_average (0)', '0', 'angular momentum_average (1)', '0', 'angular momentum_average (2)', '0', 'radial velocity_average (0)', '0', 'radial velocity_average (1)', '0', 'radial velocity_average (2)', '0', 'tangential velocity_average (0)', '0', 'tangential velocity_average (1)', '0', 'tangential velocity_average (2)', '0', 'velocity dispersion_total (0)', '0', 'velocity dispersion_total (1)', '0', 'velocity dispersion_total (2)', '0', 'tangential velocity dispersion_total (0)', '0', 'tangential velocity dispersion_total (1)', '0', 'tangential velocity dispersion_total (2)', '0', 'radial velocity dispersion_total (0)', '0', 'radial velocity dispersion_total (1)', '0', 'radial velocity dispersion_total (2)', '0', '', '1']

XYPlotView1.ChartTitle = 'Density vs. Radius'
XYPlotView1.ShowLegend = 0
XYPlotView1.AxisLabelPrecision = [4, 3, 2, 2]
XYPlotView1.AxisTitle = ['Density', 'Radius', '', '']

DataRepresentation13.XArrayName = 'bin radius_total'
DataRepresentation13.SeriesColor = ['density_total', '1', '0.352972', '0.222614']
DataRepresentation13.SeriesLineStyle = ['density_total', '1']
DataRepresentation13.SeriesMarkerStyle = ['density_total', '1']
DataRepresentation13.SeriesVisibility = ['velocity_total (0)', '0', 'velocity_total (1)', '0', 'velocity_total (2)', '0', 'velocity_average (0)', '0', 'velocity_average (1)', '0', 'velocity_average (2)', '0', 'velocity_cumulative (0)', '0', 'velocity_cumulative (1)', '0', 'velocity_cumulative (2)', '0', 'GlyphVector_total (0)', '0', 'GlyphVector_total (1)', '0', 'GlyphVector_total (2)', '0', 'GlyphVector_average (0)', '0', 'GlyphVector_average (1)', '0', 'GlyphVector_average (2)', '0', 'GlyphVector_cumulative (0)', '0', 'GlyphVector_cumulative (1)', '0', 'GlyphVector_cumulative (2)', '0', 'angular momentum_average (0)', '0', 'angular momentum_average (1)', '0', 'angular momentum_average (2)', '0', 'radial velocity_average (0)', '0', 'radial velocity_average (1)', '0', 'radial velocity_average (2)', '0', 'tangential velocity_average (0)', '0', 'tangential velocity_average (1)', '0', 'tangential velocity_average (2)', '0', 'velocity dispersion_total (0)', '0', 'velocity dispersion_total (1)', '0', 'velocity dispersion_total (2)', '0', 'tangential velocity dispersion_total (0)', '0', 'tangential velocity dispersion_total (1)', '0', 'tangential velocity dispersion_total (2)', '0', 'radial velocity dispersion_total (0)', '0', 'radial velocity dispersion_total (1)', '0', 'radial velocity dispersion_total (2)', '0', '', '1', 'bin radius_total', '0', 'number in bin_total', '0', 'number in bin_cumulative', '0', 'global id_total', '0', 'global id_average', '0', 'global id_cumulative', '0', 'potential_total', '0', 'potential_average', '0', 'potential_cumulative', '0', 'mass_total', '0', 'mass_average', '0', 'mass_cumulative', '0', 'eps_total', '0', 'eps_average', '0', 'eps_cumulative', '0', 'rho_total', '0', 'rho_average', '0', 'rho_cumulative', '0', 'hsmooth_total', '0', 'hsmooth_average', '0', 'hsmooth_cumulative', '0', 'temperature_total', '0', 'temperature_average', '0', 'temperature_cumulative', '0', 'metals_total', '0', 'metals_average', '0', 'metals_cumulative', '0', 'tform_total', '0', 'tform_average', '0', 'tform_cumulative', '0', 'velocity_total (Magnitude)', '0', 'velocity_average (Magnitude)', '0', 'velocity_cumulative (Magnitude)', '0', 'GlyphVector_total (Magnitude)', '0', 'GlyphVector_average (Magnitude)', '0', 'GlyphVector_cumulative (Magnitude)', '0', 'angular momentum_average (Magnitude)', '0', 'radial velocity_average (Magnitude)', '0', 'tangential velocity_average (Magnitude)', '0', 'velocity squared_average', '0', 'radial velocity squared_average', '0', 'tangential velocity squared_average', '0', 'velocity dispersion_total (Magnitude)', '0', 'tangential velocity dispersion_total (Magnitude)', '0', 'radial velocity dispersion_total (Magnitude)', '0', 'circular velocity_total', '0', 'density_total', '1']
DataRepresentation13.UseIndexForXAxis = 0

Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

Glyph1 = GetActiveSource()
PrincipleMomentsofInertia1 = PrincipleMomentsofInertia()

PrincipleMomentsofInertia1.SelectInputArray = ['POINTS', 'global id']

PrincipleMomentsofInertia1.SelectInputArray = ['POINTS', 'mass']

DataRepresentation10 = Show()
DataRepresentation10.EdgeColor = [0.0, 0.0, 0.50000762951094835]
DataRepresentation10.SelectionCellLabelColor = [0.0, 1.0, 0.0]
DataRepresentation10.SelectionPointLabelJustification = 'Center'
DataRepresentation10.SelectionCellLabelJustification = 'Center'
DataRepresentation10.PointSize = 1.0
DataRepresentation10.SelectionLineWidth = 2.0
DataRepresentation10.Texture = []
DataRepresentation10.SelectionCellLabelFontSize = 24
DataRepresentation10.SelectionColor = [0.048416876478217748, 0.63672846570534825, 1.0]
DataRepresentation10.SelectionRepresentation = 'Wireframe'

Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

Glyph1 = GetActiveSource()
Profile1 = Profile( ProbeType="High Resolution Line Source" )

Profile1.ProbeType.Point1 = [-0.010403109714388847, -0.061579469591379166, -0.11254894733428955]
Profile1.ProbeType.Point2 = [-0.0036313242744654417, -0.055315900593996048, -0.090570949018001556]

Profile1.SelectInputArray = ['POINTS', 'global id']
Profile1.ProbeType = "High Resolution Line Source"

Profile1.SelectInputArray = ['POINTS', 'mass']
Profile1.BinNumber = 20

SpreadSheetView1 = CreateRenderView()

DataRepresentation12 = Show()
DataRepresentation12.FieldAssociation = 'Row Data'

Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

Glyph1 = GetActiveSource()
FriendsOfFriendsHaloFinder1 = FriendsOfFriendsHaloFinder()

FriendsOfFriendsHaloFinder1.SelectInputArray = ['POINTS', 'global id']

FriendsOfFriendsHaloFinder1.LinkingLength = 0.001
FriendsOfFriendsHaloFinder1.MinimumNumberOfParticles = 40

my_representation1 = GetDisplayProperties(Glyph1)
DataRepresentation7 = Show()
DataRepresentation7.EdgeColor = [0.0, 0.0, 0.50000762951094835]
DataRepresentation7.SelectionCellLabelColor = [0.0, 1.0, 0.0]
DataRepresentation7.SelectionPointLabelJustification = 'Center'
DataRepresentation7.SelectionCellLabelJustification = 'Center'
DataRepresentation7.PointSize = 1.0
DataRepresentation7.ColorAttributeType = 'POINT_DATA'
DataRepresentation7.ColorArrayName = 'global id'
DataRepresentation7.SelectionLineWidth = 2.0
DataRepresentation7.Texture = []
DataRepresentation7.SelectionCellLabelFontSize = 24
DataRepresentation7.SelectionColor = [0.048416876478217748, 0.63672846570534825, 1.0]
DataRepresentation7.SelectionRepresentation = 'Wireframe'
DataRepresentation7.LookupTable = []

my_representation1.Visibility = 0

Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

Glyph1 = GetActiveSource()
NeighborSmooth2 = NeighborSmooth()

NeighborSmooth2.SelectInputArray = ['POINTS', 'global id']

NeighborSmooth2.NeighborNumber = 25
NeighborSmooth2.SelectInputArray = ['POINTS', 'mass']

my_representation1 = GetDisplayProperties(Glyph1)
DataRepresentation9 = Show()
DataRepresentation9.EdgeColor = [0.0, 0.0, 0.50000762951094835]
DataRepresentation9.SelectionCellLabelColor = [0.0, 1.0, 0.0]
DataRepresentation9.SelectionPointLabelJustification = 'Center'
DataRepresentation9.SelectionCellLabelJustification = 'Center'
DataRepresentation9.PointSize = 1.0
DataRepresentation9.ColorAttributeType = 'POINT_DATA'
DataRepresentation9.ColorArrayName = 'global id'
DataRepresentation9.SelectionLineWidth = 2.0
DataRepresentation9.Texture = []
DataRepresentation9.SelectionCellLabelFontSize = 24
DataRepresentation9.SelectionColor = [0.048416876478217748, 0.63672846570534825, 1.0]
DataRepresentation9.SelectionRepresentation = 'Wireframe'
DataRepresentation9.LookupTable = []

my_representation1.Visibility = 0

Render()
}}}
{{{
try: paraview.simple
except: from paraview.simple import *

Glyph1 = GetActiveSource()
VirialRadius1 = VirialRadius( ProbeType="High Resolution Line Source" )

VirialRadius1.ProbeType.Point1 = [-0.010403109714388847, -0.061579469591379166, -0.11254894733428955]
VirialRadius1.ProbeType.Point2 = [-0.0036313242744654417, -0.055315900593996048, -0.090570949018001556]

VirialRadius1.SelectInputArray = ['POINTS', 'global id']
VirialRadius1.ProbeType = "High Resolution Line Source"

VirialRadius1.SelectInputArray = ['POINTS', 'mass']
VirialRadius1.ProbeType = "Fixed Radius Point Source"
VirialRadius1.Softening = 0.001
VirialRadius1.Delta = 0.13

my_representation1 = GetDisplayProperties(Glyph1)
DataRepresentation11 = Show()
DataRepresentation11.EdgeColor = [0.0, 0.0, 0.50000762951094835]
DataRepresentation11.SelectionCellLabelColor = [0.0, 1.0, 0.0]
DataRepresentation11.SelectionPointLabelJustification = 'Center'
DataRepresentation11.SelectionCellLabelJustification = 'Center'
DataRepresentation11.PointSize = 1.0
DataRepresentation11.ColorAttributeType = 'POINT_DATA'
DataRepresentation11.ColorArrayName = 'global id'
DataRepresentation11.SelectionLineWidth = 2.0
DataRepresentation11.Texture = []
DataRepresentation11.SelectionCellLabelFontSize = 24
DataRepresentation11.SelectionColor = [0.048416876478217748, 0.63672846570534825, 1.0]
DataRepresentation11.SelectionRepresentation = 'Wireframe'
DataRepresentation11.LookupTable = []

VirialRadius1.ProbeType.Center = [-0.015999002019237738, -0.055182199643817965, -0.10699443917338176]

my_representation1.Visibility = 0

Render()
}}}
!Open test file
Open up the test file {{{b1.00300.d0-1000.std}}}, available as part of the test data in [[Downloads]]. If you have trouble doing this, see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]]. Make sure you can see the particles in the test file, you may need to execute a {{{Glyph}}} filter. If you are having trouble doing this see the [[Tipsy binary reader tutorial]].
!Finding the virial radius
#Go to {{{Filters->AstroViz Analysis->Virial Radius}}}
#Mouse over the {{{Scalars}}} menu in the {{{Object Inspector}}} to see its purpose (hint, it indicates what scalar array represents the mass, so that the filter can be used with multiple types of readers, not all of which will have the same name for the mass array)
##Select {{{mass}}} from this menu
#There are two options to select the center around which to find the virial radius. These are defined by the {{{Probe Type}}} drop-down menu.  Pick one of the following methods, and attempt to select a center in a denser region of the test file. If you can't decide by eye follow the [[smooth tutorial|Smooth particle quantities tutorial]] to calculate it yourself:
##{{{High Resolution Line Source}}}
###Center is defined by the midpoint of the line
###Will automatically span the bounding box of the points
###Can redefine endpoints in GUI by simply clicking and dragging
###Can also redefine endpoints explicitly by modifying numbers under {{{Point1}}}} or {{{Point2}}} text fields
##{{{Fixed Radius Point Source}}}
###Center is point selected/defined
###Select a point by moving mouse and using the {{{P}}} key to change position
###Options {{{Number of Points}}} and {{{Radius}}} have no effect
#Change delta, the density parameter, to something such as {{{.1}}}. 
#Click {{{Apply}}}
#The dataset is reduced to only the points within the radius equal to the virial radius. You may need to execute a {{{Glyph}}} filter to actually see your results. See the [[Tipsy binary reader tutorial]] for information about how to do this.
!Advanced usage
#Play around with the softening parameter and the overdensity parameter. What effect do they have on the virial radius found? What happens if a virial radius corresponding to the specified overdensity is not found?
!Overview
In this tutorial, you will learn the basics of data visualization and analysis using ~ParaView/~AstroViz. Usage of each ~AstroViz filter from within the ~ParaView GUI is reviewed along with an examination of sample python code utilizing the feature. It is assumed you already have followed the [[initial ParaView setup tutorial|Initial ParaView setup tutorial]] and now are able to launch ~ParaView and load the ~AstroViz plugin without errors, either locally or remotely.
!Obtaining data 
The data reference in this tutorial is obtainable from the [[Downloads]] section.
!Loading plugin
#Go to {{{Tools->Manage Plugins/Extensions}}}
#Click {{{Load}}} on the local plugin side
#Navigate to the ~AstroViz plugin, click {{{OK}}}
#Click {{{Close}}}
!Tutorials of ~AstroViz filters
*[[Tipsy binary reader tutorial]]
*[[Calculate center-of-mass tutorial]]
*[[Profile tutorial]]
*[[Calculate principle moments of inertia tutorial]]
*[[Smooth particle quantities tutorial]]
*[[Find virial radius tutorial]]
*[[Friends-Of-Friends halo finder tutorial]]
*[[Append additional ascii attributes tutorial]]
*[[Tipsy color maps tutorial]]
It is assumed for this tutorial, you have already setup ~ParaView/~AstroViz on your local machine (see [[Initial ParaView setup tutorial]] and/or [[Follow the AstroViz tutorial with sample data]] if not). This tutorial should then be fairly basic, but being able to run in client/server mode is the key step toward parallel visualization as it enables the user to connect to a ~ParaView server running as an MPI process.
!Pick your server
See the [[current list of machines on which ParaView/AstroViz are setup|List of machines on which ParaView/AstroViz are currently setup and administered by myself]]. If possible ~ZBox would be a good choice for the tutorial as it will prepare you for larger scale run. If you don't have access to any of the [[servers on the list|List of machines on which ParaView/AstroViz are currently setup and administered by myself]] then you can run on your local machine, which is more meaningful of an exercise if you have multiple cores or you can configure a ~ParaView server on one of your local machines. See [[running on your own multicore and/or multi-GPU machine|Running on your own multicore and/or multi-GPU machine]] in the former case and the ''if configuring your own ~ParaView server'' section of [[build/install ParaView|Build/install ParaView]] in the latter.
!Launch and connect to your server from the client
Launch per the instructions on your server's page above. Then see [[connecting to server|Connecting to server]] for instructions how to connect.
!Load the ~AstroViz plugin on both client and server side
See [[using plugins in client/server mode|Using plugins in client/server mode]]
!Open a sample file
Open the file {{{b1.00300.d0-1000.std}}} included with the test data. See the [[Downloads]] section if you have not yet downloaded the test data, and see the [[Tipsy binary reader tutorial]] if you have trouble with this operation. For now, leave {{{distribute data}}} unchecked
!See which process your data resides on
Go to {{{Filters->Alphabetical->Process Id Scalars}}}, click {{{apply}}}. Click the color bar logo to display a legend for the colors representing the process ids. There should be as many process ids as {{{number of processors-1}}}.
!Redistribute data spatially
Click on the Tipsy file in the pipeline, and then check {{{distribute data}}} and click {{{apply}}}. Your change will cause the file to be reread, and the data to be redistributed spatially as part of the reading process. You should see this reflected visually, the data should now be manifestly spatially distributed.
!Get setup with running in parallel
[[Follow the client/server AstroViz tutorial]]
!Data Distribution
Read the [[Data Distribution in ParaView and AstroViz]] article to get an overview of how data distribution effects a filter's performance in ~AstroViz and ~ParaView.
!Memory requirements
A good estimate for the memory requirements is the size of the file, if only positions are read, and 3-4 times this size if all attributes of a Tipsy binary file are read. A {{{Glyph}}} filter will typically require memory on the order of the file size. The memory a object in the pipeline takes up can be see by clicking on the filter, then going to the {{{Information}}} tab in the object inspector.
#Connect to a server from your client (see [[the client/server AstroViz tutorial|Follow the client/server AstroViz tutorial]]
#Open up a Tipsy binary file (see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]]). 
##The small file {{{b1.00300.d0-1000.std}}} available as part of the test data may be too small to be interesting, so if you can get your hands on a larger file and the server you are running on can handle it (see the ''Memory requirements'' section above) this would be a better choice.
##First try leaving the {{{Read Positions Only}}} checkbox unchecked. How much memory does the file take up when read?
##Now try checking the {{{Read Positions Only}}} checkbox. How much memory does the file take up now?
!Performance analysis
#Connect to a server from your client (see [[the client/server AstroViz tutorial|Follow the client/server AstroViz tutorial]]
#Go to {{{Tools->Timer Log}}}
#Click the {{{Clear}}} button to start a fresh log
#Change the {{{Time Threshold}}} to {{{Show All}}}
#Change the {{{Buffer Length}}} to be {{{5000}}}
#Open up a Tipsy binary file (see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]]). 
##The small file {{{b1.00300.d0-1000.std}}} available as part of the test data may be too small to be interesting, so if you can get your hands on a larger file and the server you are running on can handle it (see the ''Memory requirements'' section above) this would be a better choice.
##First try leaving the {{{Distribute Data}}} checkbox unchecked
#Open up the timer log again, and hit refresh. You should see the time and details of the operation taken for the local machine as well as for each process.
#Run each of the filters in the {{{Filters->AstroViz Analysis}}} menu, clearing the timer log before each one, and refereshing it afterward.
##Check out the memory each filter takes up as well, per the ''Memory requirements'' section above
#Repeat this section again from step {{{6.}}}, but this time with the {{{Distribute Data}}} checkbox checked. By how much do the timings change?
!Tweak Client/Server parameters
#Connect to a server from your client (see [[the client/server AstroViz tutorial|Follow the client/server AstroViz tutorial]]
#Go to {{{File->Settings->Render View->Server}}}, mousing over each option to get a description
#Change the option of your choice. How does it effect performance? Follow the ''Performance Analysis'' section above again to see. 
!Open test file
Open up the test file {{{b1.00300.d0-1000.std}}}, available as part of the test data in [[Downloads]]. If you have trouble doing this, see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]]. Make sure you can see the particles in the test file, you may need to execute a {{{Glyph}}} filter. If you are having trouble doing this see the [[Tipsy binary reader tutorial]].
!!Finding halos
#Go to {{{Filters->AstroViz Analysis->Friends-Of-Friends Halo Finder}}}
#Mouse over the {{{Scalars}}} menu in the {{{Object Inspector}}} to see its purpose (hint, it indicates what scalar array represents global id, so that the filter can be properly used in parallel). This menu will be ignored if not running in parallel.
##Select {{{global id}}} from this menu
#In the {{{Object Inspector}}} change the {{{Linking Length}}} property to {{{1e-3}}}
#Click {{{Apply}}}
#Go to the {{{Display}}} tab in the {{{Object Inspector}}},  click on the {{{Color By}}} drop down menu. Change this to {{{halo ID}}}. How many halos do you see? If a particle has a {{{halo ID}}} of 0 it means that the particle does not belong to a halo. Note that the ID is unique for each halo, but the range of IDs does not correspond to the number of haloes. 
!Advanced Usage
!!Changing the parameters
#Get an idea of the scale of the test file 
##examine the order of magnitude of the softening parameter ({{{eps}}})
##display the cube axes and a 3D coordinate grid
###Click on the original test file, then go in the {{{Object Inspector}}} to the {{{Display Tab}}} and scrolling down to the {{{Annotation}}} section. Check the {{{Show cube axes}}} checkbox. 
###Click the {{{Edit}}} button besides this checkbox. For each axis, in its tab check the {{{Show Grid Lines}}} box. Click {{{OK}}}. You will now have a 3D coordinate grid.
#Based on what you learned about the scale, play around with the linking length, what effect does it have on the size of halos? What do you think the optimal linking length is? @@color(blue):Note: this linking length should always be less than the box size.@@
#Play around with the {{{Minimum Number of Particles}}} option which defines the minimum number of particles to consider a halo. The trend is predictable, but at what point do you no longer see halos? At what point do the results no longer make sense visually?
!!Display only the particles which belong to haloes
#Go to {{{Filters->Alphabetical->Threshold}}}. This operation can also be done via the toolbar.
#In the {{{Object Inspector}}} panel, mouse over the {{{Scalars}}} selection box to see its purpose. It selects which scalar array to perform the thresholding based upon. Select {{{halo ID}}}.
#Now increase the lower threshold limit from {{{0}}} to {{{1}}}, this will ensure we cut out all particles with {{{halo ID}}} equal to zero, which corresponds to those particles which do not belong to haloes.
#Click {{{Apply}}}
#Now only the particles belonging to haloes should be visible. If your view doesn't change, go to the {{{Pipeline Browser}}} and make sure that the {{{Threshold}}} filter is the only one with a highlighted eye icon. If it is not, click on the eye icon of the other filters which have a highlighted eye icon to make them not visible in the view
!!Display only particles belonging to a certain halo. 
There are a few options for this. Each number below corresponds to a different approach
#Use the selection tool  (this process covered in the [[center of mass tutorial|Calculate center-of-mass tutorial]])
##use the tool to select all particles belonging to a given halo
## extract them with the {{{Extract Selection}}} filter as in the tutorial
#Use the spreedsheet view to see and chose a halo ID, finally use Threshold filter to extract particles with this halo ID
##close the 3D view via the {{{x}}} button
##open a {{{Spreadsheet View}}} by clicking on this button
##navigate to the {{{halo ID}}} section of the spreadsheet, pick a halo ID
##execute a {{{Threshold}}} filter (as in the first part of this tutorial) to extract only particles belong to this halo by setting the upper and the lower limit of the {{{Threshold}}} filter to the halo ID you picked
#Use the selection tool and the selection inspector couple with method {{{2.}}}
##use the selection tool to select a few particles of your target halo
##go to {{{View->Selection Inspector}}}
##scroll down to the {{{Display Style}}} section and select the {{{Point Label}}} tab
##select the {{{Visible}}} checkbox. The particle ID of each point should now be visible
##Pick an ID use the spreadsheet view outlined in method {{{2.}}} to find which halo ID corresponds to this particle ID.
##Threshold based on this ID as in method {{{2.}}}
!~ParaView
#[[ParaView overview]]
#[[Build/install ParaView]]
#[[Follow the ParaView tutorial with sample data|http://www.cmake.org/Wiki/SC08_ParaView_Tutorial]]
#[[ParaView help|www.paraview.org]]
!~AstroViz
#[[AstroViz overview]]
#[[Build/install AstroViz]]
#[[Follow the AstroViz tutorial with sample data]]
#If your data are big, see [[running in client/server mode|Running in client/server mode]] and contact your system administrator to setup ~ParaView/~AstroViz on your desired cluster
!Client/server connections
#[[Running in client/server mode]] 
#[[Follow the client/server AstroViz tutorial]]
#[[List of available ParaView servers to UZH/CSCS personnel |List of machines on which ParaView/AstroViz are currently setup and administered by myself]]
!Issues?
#[[Common pitfalls]]
#[[Feature requests/bug reports|http://astroviz.uservoice.com/pages/29636]]
#[[ParaView mailing list|http://www.paraview.org/mailman/listinfo/paraview]]
#[[ParaView wiki|http://www.cmake.org/Wiki/ParaView]]
#[[AstroViz mailing list|http://groups.google.com/group/astroviz]]
First decide whether you want to run ~ParaView/~AstroViz remotely via an X-connection or run ~ParaView locally. The former option will involve little setup and get you off the ground with learning ~ParaView/~AstroViz quickly, the latter may involve building ~ParaView and/or ~AstroViz from source which can itself involve a number of sub- and side- steps but it has the advantage of preparing you for using your local machine as a client to do large scale parallel analysis and visualization on one of the powerful machines which have [[already been configured as a ParaView server|List of machines on which ParaView/AstroViz are currently setup and administered by myself]]. It's your choice, and you can do them both in time.
!Running remotely
Pick one of the machines which have [[already been configured as a ParaView server|List of machines on which ParaView/AstroViz are currently setup and administered by myself]]. Follow the instructions [[linked in the available machine list|List of machines on which ParaView/AstroViz are currently setup and administered by myself]] for the machine you picked to launch ~ParaView, simply running ~ParaView remotely over an X-connection.
!Running locally
!!Obtain ~ParaView
See [[Build/install ParaView]]. Check below to see if an ~AstroViz build is currently available for your platform, if not you will have to build both ~ParaView and ~AstroViz from source.
!!Obtain ~AstroViz
!!!Binaries
~AstroViz universal plugin binaries for selected platforms are available in the [[Downloads]] section.
!!!Source
If an ~AstroViz binary is not available for your platform, [[Version 1.3 of AstroViz source is here|http://www.itp.uzh.ch/~corbett/astroviz/AstroViz_Snapshot_22-11-09.zip]]. 
In this case you will have to [[build/install ParaView|Build/install ParaView]] from source and [[build/install AstroViz|Build/install AstroViz]] from source. 
*See [[Build/install ParaView]] and/or [[Build/install AstroViz]]
!~ParaView 3.6, ~ParaView 3.7 CVS, ~AstroViz
*[[Fangorn at UZH|Running on Fangorn at UZH]]
*[[ZBox3 at UZH|Running on ZBox3 at UZH]]
*[[Mayall at UZH|Running on Mayall at UZH]]
*[[Horus at CSCS|Running on Horus at CSCS]]
!Coming soon
*Borin at UZH (tiled display)
*Schrodinger at UZH
!Alternate Options
*[[run on your own multicore and/or multi-GPU machine|Running on your own multicore and/or multi-GPU machine]]
*[[setup your own ParaView server|Build/install ParaView]]
[[Downloads]]
[[Getting Started]]
[[Tutorials]]
[[Common pitfalls]]
[[Feedback|http://astroviz.uservoice.com/pages/29636]]
[[Home|http://www.itp.uzh.ch/~corbett/astroviz/astroviz.html]]
<!--{{{-->
<div id='header' class='header'>
    <div id='title'>
        <div id='topMenu' refresh='content' tiddler='MainMenu'></div>
        <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
        <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
    </div>

</div>

<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div class='clearAll'></div>
</div>
<div id='contentFooter' refresh='content' tiddler='contentFooter'></div>
<!--}}}-->
From [[ParaView.org|paraview.org]]
<<<
~ParaView is an open-source, multi-platform data analysis and visualization application. ~ParaView users can quickly build visualizations to analyze their data using qualitative and quantitative techniques. The data exploration can be done interactively in 3D or programmatically using ~ParaView's batch processing capabilities.

~ParaView was developed to analyze extremely large datasets using distributed memory computing resources. It can be run on supercomputers to analyze datasets of terascale as well as on laptops for smaller data.
<<<
!Main advantages for ~ParaView over other visualization programs for Astrophysical research applications
*Parallel capabilities 
*Wide variety of data formats supported
*Extensible
*Ease of comparison 
*Short learning curve 
!Other visualization programs for Astrophysical research applications
*~SimAm
*~AstroMD 
*Salsa
*Tipsy 
*Flash 
*View 
*python 
*~VisIt 
*SPLASH 
*IDL 
*~MayaVi 
*Splotch 
*yt
*gnuplot 
*~IFrIT
*~OpenDX
!Open test file
Open up the test file {{{b1.00300.d0-1000.std}}}, available as part of the test data in [[Downloads]]. If you have trouble doing this, see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]]. Make sure you can see the particles in the test file, you may need to execute a {{{Glyph}}} filter. If you are having trouble doing this see the [[Tipsy binary reader tutorial]].
!Execute Profile filter
#Go to {{{Filters->AstroViz Analysis->Profile}}}
#Mouse over the {{{Scalars}}} menu in the {{{Object Inspector}}} to see its purpose (hint, it indicates what scalar array represents the mass, so that the filter can be used with multiple types of readers, not all of which will have the same name for the mass array)
##Select {{{mass}}} from this menu
#There are two options to select the center to profile. These are defined by the {{{Probe Type}}} drop-down menu. This selection is important as the bins and quantities generated by the Profile filter are a function of radius, and the radius is the distance of a point to the selected center.  Pick one of the following:
##{{{High Resolution Line Source}}}
###Profile is around the center defined by the midpoint of the line
###Will automatically span the bounding box of the points
###Can redefine endpoints in GUI by simply clicking and dragging
###Can also redefine endpoints explicitly by modifying numbers under {{{Point1}}}} or {{{Point2}}} text fields
##{{{Fixed Radius Point Source}}}
###Profile is around point selected/defined
###Select a point by moving mouse and using the {{{P}}} key to change position
###Options {{{Number of Points}}} and {{{Radius}}} have no effect
#Modify the number of bins by decreasing it to 15 via the slider or text box 
#Click {{{Apply}}}
##The view will split in two, and a spreadsheet with the total bin radius and varius physical quantities within that bin will be generated
!Plot your results
#Go to {{{Filters->Data Analysis->Plot Data}}}
#Click {{{Apply}}}
##The view should split again and a plot should appear
#Go to the {{{Display}}} tab in the {{{Object Inspector}}} panel
##Change the X Axis data to be the {{{bin radius_total}}} by selecting the check box {{{Use Data Array}}} then selecting {{{bin radius_total}}} from the drop-down menu
#Change the variable plotted from all to a single item by deselecting all options but {{{Circular Velocity}}} from the items listed after the {{{Line Series}}} field
#Label your plot by clicking the small icon in the left corner above your plot that looks like a small spreadsheet. When you mouse over it it should say "Edit View Options"
##Under the {{{General}}} section change the {{{Text}}} field under {{{Chart Title}}} to be {{{Circular velocity vs. Radius}}}
##Expand the {{{Left axis}}} section, then click on the {{{Title}}} section, changing its text in a similar manner as above to {{{Circular Velocity}}}
##Expand the {{{Bottom axis}}} section, then click on the {{{Title}}} section, changing its text in a similar manner as above to {{{Radius}}}
!Advanced usage
#Follow the [[tutorial to find the virial radius|Find virial radius tutorial]] to reduce your data set to points within the virial radius of the center you defined within the tutorial
#Now execute the Profile filter as above on this subset of the data, defining your center as one of the following
##execute Profile filter per above
###leave the Profile center as default (center of bounding box as defined by {{{High Resolution Line Source}}} default)
##First execute the center-of-mass filter to find the center of mass of the points within the virial radius around which to profile
###Click on the virial radius filter in the pipeline in the {{{Pipeline Browser}}} 
###execute the ~Center-Of-Mass filter per the [[calculate center of mass tutorial|Calculate center-of-mass tutorial]] 
###Click again on the virial radius filter in the pipeline in the {{{Pipeline Browser}}} 
###Finally, execute the Profile filter per above, manually inputting the center of mass coordinates found in the previous step
#Optionally, plot Density vs. Radius per above
!Overview
*[[Servers available|List of machines on which ParaView/AstroViz are currently setup and administered by myself]]
*[[Connecting to server]]
*[[Using plugins in client/server mode]]
!Pitfalls
Version of ~ParaView/~AstroViz on client and server must be identical. This is a common pitfall for using CVS ~ParaView.
Some use cases to use this rather than ~ZBox, Horus, Mayall, or your local machine might be:
*do visualization and analysis tasks on medium sized files, analysis will benefit from large amount of shared memory available on Fangorn.
*quickly get a feel for ~ParaView and ~AstroViz without going through a download/installation process or obtaining a ~ZBox or Horus project or permission to use Mayall.
*do development on ~AstroViz or other ~ParaView plugins.
!Launching ~ParaView on Fangorn
*Ssh into fangorn with X forwarding enabled. 
*Execute {{{source /scr/2/corbett/viz/BuildParaview/FangornBuild/set_path_3.6stable.sh}}}
**This will set the environment variables necessary for running ~ParaView 3.6 or a ~ParaView 3.6 server on Fangorn
**Will set the path so that {{{paraview}}} and {{{pvserver}}} are both available from the command line
**This will also set the environment variables automatically load the ~AstroViz plugin, version 1.3, when ~ParaView is launched 
*Execute {{{paraview}}} to launch
!Launching a ~ParaView server on Fangorn
*Execute {{{source /scr/2/corbett/viz/BuildParaview/FangornBuild/set_path_3.6stable.sh}}}, per above
*Execute {{{pvserver}}}, optionally specifying an alternate port (default is {{{11111}}}) with {{{pvserver -np 11111}}}
*From within your client on your local machine connect to the server you have launched on mayall. See [[connecting to a ParaView server|Connecting to server]]. With the example above, the server would be {{{mayall.physik.uzh.ch}}} and the port {{{11111}}}. If multiple people are running ~ParaView servers on Fangorn, it is important to specify a unique port.
!Building a ~ParaView plugin on Mayall
Follow the traditional [[build a ParaView plugin]] steps. Cmake is located in {{{/scr/2/corbett/viz/BuildParaview/cmake-2.6.3-Linux-i386/bin}}}. The ~ParaView build to link against is {{{/scr/2/corbett/viz/BuildParaview/FangornBuild/ParaView-3.6_build}}}
!CVS ~ParaView 3.7
CVS ~ParaView 3.7 is not yet available on Fangorn.
!Preliminary setup
#Obtain a project/sponsor at UZH to run on Horus and [[submit a proposal|http://www.cscs.ch/435.0.html]] to run on horus. Dr. Ben Moore, Dr. Lucio Mayer or myself at UZH are good contacts. 
#Install the necessary software on your machine
##For Linux/Windows HP Remote Graphics Software (RGS) obtainable from [[CSCS website|https://horus.cscs.ch/rgs]]
##For OS X install [[TurboVNC and VirtualGL|http://www.virtualgl.org/]] 
!Connecting
*Ssh into the gateway node {{{ssh bar.cscs.ch}}}
*Ssh into horus {{{ssh horus.cscs.sh}}}
!!OS X
*run (on horus) {{{sva_vgltvnc.sh -I -g 1280x960}}}  (first time prompted to set password)
*connect via vnc from X11 on mac {{{/opt/TurboVNC/bin/vncviewer horus-rgs11.login.cscs.ch:1}}} where login node and display are given by above command run on horus
!!Linux/Windows
*I haven't tried using Horus via the HP RGS, so can't provide a short help section, but there is plenty of information about this on the CSCS website, see the help section below for a link.
!Loading/launching programs
Do all this from within your VNC session. If your command requires ~OpenGL libraries, launch via {{{vglrun mycommand}}}, if not launch as usual. Execute the command {{{module avail}}} to see a list of available modules. {{{module load desiredmodule}}} will set all the environment variables necessary to run.
!!~ParaView/~AstroViz
!!!Load requisite modules
*{{{module load mpi}}}
*{{{module load paraview/paraview-3.6}}}
!!!Launch
~ParaView certainly requires ~OpenGL libraries, so a quick test would be runing {{{vglrun paraview}}}. This should launch ~ParaView within your VNC process.
!!!Running a ~ParaView server on one node/across many nodes
Running the following from within your VNC session should autolaunch a paraview server across the desired number of processors, autolaunch ParaView, and autoconnect to the ~ParaView server launched
*run ~ParaView on single node
{{{/apps-vis/sva/csvis_sva_paraview.sh –l -s N }}} (uses N cpus on the node)
*run ~ParaView on multiple nodes 
{{{/apps-vis/sva/csvis_sva_paraview.sh -l –r N}}}
*enabling multiple gpus per node
{{{--2gpus}}} option will run two servers per node
!!!Loading ~AstroViz/external ~ParaView plugin
Within ~ParaView GUI, go to {{{Tools->Manage plugins/extensions}}}. Navigate to a build of the plugin against the version of ~ParaView with which you are running. For ~AstroViz and ~ParaView 3.6, {{{/users/corbett/Documents/AstroViz/AstroViz_build/libAstroVizPlugin.so}}}. Be sure to load on ''both'' the client and the server side if you are connected to the server.
!!!Building a ~ParaView plugin
Follow the usual [[build a ParaView plugin]] steps. {{{cmake}}} is located in {{{/apps-vis/cmake-2.6.4/bin/}}} on Horus. For ~ParaView 3.6 the build to link against would be {{{/workspace/jfavre/ParaView-3.6.1Build}}}.
!Pitfalls
!!sva_vgltvnc.sh produces errors
Contact a Horus administrator, something is likely wrong with the X server on the node the script automatically picked to launch your session on and it probably needs restarted. A quick hack is to launch two instances of this script within seconds of eachother (forcing the second script to choose another available and hopefully healthier node).
!!csvis_sva_paraview.sh produces errors
Run the script with {{{-D}}} for debug, you should get a significantly more verbose output and hopefully be able to diagnose the problem. If debug doesn't even work, it's a problem with the parameters to the script. Examine the source to see valid parameters. Once I accidentally passed in a non-ascii character and this caused all sorts of mysterious problems
!Additional Help
http://www.cscs.ch/299.0.html
We have a small multiple GPU machine available at ITP, named {{{mayall}}}. Jonathan Coles and myself currently administer this machine, so it's best to first contact us if you want to perform visualization tasks on this machine as we don't currently have a reservation system in place. Some use cases to use this rather than ~ZBox, Horus, Fangorn, or your local machine might be:
*do visualization and analysis tasks on smaller files, visualization will benefit from the ~GPUs on Mayall and the locality of the machine.
*quickly get a feel for ~ParaView and ~AstroViz without going through a download/installation process or obtaining a ~ZBox or Horus project
*quickly test support for your favorite format/analysis tasks in ~ParaView/~AstroViz
*do development on ~AstroViz or other ~ParaView plugins
!Launching ~ParaView on Mayall
*Ssh into mayall with X forwarding enabled. 
*Execute {{{source /home/itp/corbett/bin/paraview_cvs_path.sh}}} to enable the latest build of CVS ~ParaView, execute {{{source /home/itp/corbett/bin/paraview_stable_path.sh}}} to enable the stable build of ~ParaView. 
**This will also automatically load the ~AstroViz plugin when paraview is launched (the development build of ~AstroViz, so may have issues the stable build does not).
*Execute {{{paraview}}} to launch
*A speed improvement is seen even if launching the client as well on mayall by connecting to a server on mayall, see below how to do this
!Launching a ~ParaView server on Mayall
*There are several alternate configurations. First make sure that {{{Xorg :1&}}} has already been launched, launching an alternate X server than the login one. You can execute {{{ps aux | grep Xorg}}} to see. One example configuration would be 
{{{
mpirun -np 2 pvserver -sp=26623 -display :1.0 --use-offscreen-rendering : \
               -np 1 pvserver -sp=26623 -display :1.1 --use-offscreen-rendering : \
               -np 1 pvserver -sp=26623 -display :1.2 --use-offscreen-rendering
}}}
**this assigns two processors to a single GPU, and the last two to their own GPUs. Note the port specification, due to port blocking don't use {{{11111}}} rather specify a non-blocked alternate, as above.
*From within your client on your local machine connect to the server you have launched on mayall. See [[connecting to a ParaView server|Connecting to server]]. With the example above, the server would be {{{mayall.physik.uzh.ch}}} and the port {{{26623}}}.
!Building a ~ParaView plugin on Mayall
Follow the traditional [[build a ParaView plugin]] steps. Cmake in installed in {{{/usr/local/bin}}}. The ~ParaView build to link against is either {{{/BUILD/ParaView-3.6.1-Stable/ParaView-3.6.1-Stable_build/}}} or {{{/BUILD/ParaView3-11.13.09/ParaView3-11.13.09_build/}}}
ParaView and AstroViz are already set up on ZBox3 at UZH
!Quick overview
#Obtain a ZBox project id (something of the form Pxxx) from Doug Potter
#Write a job script (see below)
#Ssh into a node of the zbox  {{{ssh xNNyNN.zbox.physik.uzh.ch}}} 
#Submit the job {{{qsub myjobscript}}}
#Run {{{qstat}}} or examine output file/email to see which node is the root node of the ParaView server and which port to connect to
#Connect to this node from your local ParaView client, typical parameters would be 
server: {{{xNNyNN.zbox.physik.uzh.ch}}}, port: {{{11111}}}
!Sample job script
The following runs a ParaView server over 16 cores/4 nodes on the ZBox3 for project Pxxx, see Doug Potter's [[ZBox Queue Submission page|http://www-theorie.physik.unizh.ch/~dpotter/zbox/queue]] for information about how to modify.
{{{
#!/bin/bash
# This is an MPI job
#$ -N testAstroViz
#$ -pe mpi4-z3 16
#$ -P Pxxx
#$ -j y
#$ -o $HOME/astroviz.out
#
source /scr/2/corbett/viz/BuildParaview/ZBox3Build/set_path_3.6stable.sh
mpiexec pvserver --use-offscreen-rendering
}}}
#build ~ParaView with mpi enabled, see [[build/install ParaView|Build/install ParaView]] for more details
#Launch {{{pvserver -np numberOfCores}}} on your local machine
#launch {{{paraview}}} on your local machine, connect to your server on {{{localhost}}}, default port is {{{11111}}}
a parallel visualization tool for astrophysical simulations
[[AstroViz|AstroViz overview]]
!Open test file
Open up the test file {{{b1.00300.d0-1000.std}}}, available as part of the test data in [[Downloads]]. If you have trouble doing this, see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]]. Make sure you can see the points, you may need to first execute a {{{Glyph}}} filter per the tutorial
!Execute the Neighbor Smooth filter
#Go to {{{Filters->AstroViz Analysis->Neighbor Smooth}}}
#Mouse over the {{{Scalars}}} menu in the {{{Object Inspector}}} to see its purpose (hint, it indicates what scalar array represents the mass, so that the filter can be used with multiple types of readers, not all of which will have the same name for the mass array)
##Select {{{mass}}} from this menu
#Change the neighbor number from 50 to 40
#Click {{{Apply}}}
#Go to the {{{Display}}} tab in the {{{Object Inspector}}},  click on the {{{Color By}}} drop down menu, there should now be many more options. Change to e.g. the {{{smoothed density}}}, which region is the most dense? This operation can also be done in the the toolbar.
!Advanced usage
!!Plot Data
#Plot the data as in the [[Profile tutorial]]
!!See the effect of changing neighbor number
#Split the 3D view into two by clicking the rectangle split into two button directly above the 3D view
#Click on the new subwindow created
##Click the {{{3D View button}}}
#Click on the original test file {{{b1.00300.d0-1000.std}}} or the {{{Glyph}}} filter if you created one in the {{{Pipeline Browser}}}
#Execute Neighbor Smooth again (this tutorial assumes you have already executed it once, if not follow this step twice) per the instructions above. Pick a new neighbor number from the previous choice
#Click on your new, empty view. Click on the eye symbol in the {{{Pipeline}}} browser next to your new execution of Neighbor Smooth. Your particles will now be visible in the new view. 
#Link the cameras of the two views, syncing their displays.
##Right click one of the two views and select {{{Link Camera}}}
##Click on the other view; now the cameras  are linked
##Manipulate one of the two views to verify they are syncronized
#Now, display the same smoothed variable in each
##Click on the view
##Click on the {{{Neighbor Smooth}}} filter for this view in the {{{Pipeline Browser}}}
##Change to display your selected variable (e.g. {{{smoothed density}}}) via the toolbar or by going to the {{{Display}}} tab in the object inspector and selecting via the {{{Color By}}} drop down menu.
#Compare-how did increasing or decreasing the neighbor number effect the result?
/*{{{*/
/*Bleach Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/
/***
!General
***/
body {
 background: #fff;
}

#contentWrapper{
margin: 2.5em auto;
width:759px;
line-height: 1.6em;
border:1px solid #999;
font-size: 11px;
font-family: Lucida Grande, Tahoma, Arial, Helvetica, sans-serif;
color: #555;height:1%;
}

.clearAll {clear:both;}
.tagClear {clear:none;}
/*}}}*/

/*{{{*/
/***
!Header
***/
#header {background:#fff; border-bottom:1px solid #999;padding: 2.5em 2em 1.6em 2em; height:1%;
 }

.siteTitle {
font-family: 'Trebuchet MS' sans-serif;
font-weight: bold;
font-size: 32px;
color: #EF680E;
background-color: #FFF; 
}

.siteSubtitle {
	font-size: 1.0em;
        display:block; 
color: #999999; margin-top:0.5em !important; margin-top:1em; margin-left:3em;
}

#topMenu { positon:relative; float:right; display:inline; margin-right:2em;}
#topMenu br {display:none; }
#topMenu { background: #fff; color:#000;padding: 1em 1em;}
#topMenu a, #topMenu .tiddlyLink, #topMenu .button {margin:0 0.5em; color:#666;}

/*}}}*/

/*{{{*/
/***
!displayArea
***/

#displayArea {margin-left:1.35em; margin-right:16.3em; margin-top:0; padding-top:1em; padding-bottom:10px;}

/*}}}*/

/*{{{*/
/***
!Sidebar
***/
#sidebar {position:relative;float:right; line-height: 1.4em; border-left:0px solid#000; display:inline; background:#fff; right:0; 
width: 16em;}

/***
!SidebarOptions
***/
#sidebarOptions {padding-left:0.5em; border-left:1px solid #999;padding-top:1em;}

#sidebarOptions a {
			color:#999;
			text-decoration: none;}
#sidebarOptions	a:hover, #sidebarOptions .button:active {
			color:#333;
			background-color: #fff;border:1px solid #fff;
		}
#sidebarOptions input {border:1px solid #999; width:10em;}



/***
!SidebarTabs
***/
#sidebarTabs {border-left:1px solid #999;}
#sidebarTabs .tabContents {background:#fff;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#333;background:#fff;border:none;}

#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#333;background:#fff}

.tabSelected{color:#fff; background:#999;}

.tabUnselected {
 background: #ccc;
}

 .tabSelected, .tabSelected:hover {
 color: #fff;
 background: #999;
 border: solid 1px #999;
padding-bottom:1px;
}

#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#4F4B45}

 .tabUnselected {
 color: #999;
 background: #eee;
 border: solid 1px #ccc;
padding-bottom:1px;
}

#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}


#sidebarOptions .sliderPanel {
	background: #fff; border:none;
	font-size: .9em;
}
#sidebarOptions .sliderPanel a {font-weight:normal; }
#sidebarOptions .sliderPanel input {border:1px solid #999;width:auto;}
#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #999;width:9em;}

#sidebarTabs .tabContents {border-right:0; border-left:0; border-bottom:1px solid#999; padding-left:4px;}
 .listLink,#sidebarTabs .tabContents {line-height:1.5em;}
 .listTitle {color:#666;}

#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#4F4B45}
#sidebarTabs .txtMoreTab .tabContents {border-left:1px solid #999;}
#sidebarTabs .txtMainTab .tabContents li a{font-weight:bold;}
/*}}}*/

/*{{{*/
.title {color:#EF680E;}
.subtitle, .subtitle a { color: #999999; font-size: 1em;margin:0.2em; font-variant: small-caps;}
.shadow .title{color:#999;}

.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}

* html .viewer pre {
	margin-left: 0em;
}

* html .editor textarea, * html .editor input {
	width: 98%;
}

		a,#sidebarOptions .sliderPanel a{
			color:#EF680E;
			text-decoration: none;
		}

		a:hover,#sidebarOptions .sliderPanel a:hover {
			color:#EF680E;
			background-color: #fff; 
border-bottom:1px dotted #EF680E;
		}

.viewer .button, .editorFooter .button{
	color: #555;
	border: 1px solid #EF680E;
}

.viewer .button:hover, 
.editorFooter .button:hover{
	color: #fff;
	background: #EF680E;
	border-color: #EF680E;
}

.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#DF691B;border-color:#DF691B;}


		#topMenu a, #topMenu .button {
			padding: 20px 10px; border:none; font-weight:bold;
		}

		#topMenu a:link{
			text-decoration: none;
		}
		
		#topMenu a:hover, #topMenu .button:hover {
			background-color: #fff;
			color:#EF680E;
border:none;
		}





.tagging, .tagged {
	border: 1px solid #eee;
	background-color: #F7F7F7;
}

.selected .tagging, .selected .tagged {
	background-color: #eee;
	border: 1px solid #BFBAB3;
}

 .tagging .listTitle, .tagged .listTitle {
	color: #bbb;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
	color: #666; 
}

.tagging .button, .tagged .button {
		color:#aaa;
}
.selected .tagging .button, .selected .tagged .button {
		color:#BFBAB3;
}

.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}

.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
		border: none; background:transparent; text-decoration:underline; color:#333;
}





.popup {
	background: #999;
	border: 1px solid #999;
}

.popup li.disabled {
	color: #000;
}

.popup li a, .popup li a:visited {
	color: #eee;
	border: none;
}

.popup li a:hover {
	background: #6F6A68;
	color: #fff;
	border: none;
}


		.tiddler {
			padding-bottom: 40px;
			/*border-bottom: 1px solid #999; */
		}





#messageArea {
	border: 4px solid #999;
	background: #f5f5f5;
	color: #999;
        font-size:90%;
}

#messageArea a:hover { background:#f5f5f5; border:none;}

#messageArea .button{
	color: #666;
	border: 1px solid #CC6714;
}

#messageArea .button:hover {
	color: #fff;
	background: #999;
	border-color: #999;
}












.viewer blockquote {
	border-left: 5px solid #888;
}

.viewer table {
	border: 2px solid #888;
}

.viewer th, thead td {
	background: #888;
	border: 1px solid #888;
	color: #fff;
}
.viewer pre {
	border: 1px solid #999;
	background: #f5f5f5;
}

.viewer code {
	color: #111; background:#f5f5f5;
}

.viewer hr {
	border-top: dashed 1px #999;
}

.editor input {
	border: 1px solid #888;
}

.editor textarea {
	border: 1px solid #888;
}

.tabContents {background:#f7f7f7;}

h1,h2,h3,h4,h5 { color: #555; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}

#contentFooter {background:#999; color:#dfdfdf; clear: both; padding: 0.5em 1em; }

		#contentFooter a {
			color: #dfdfdf;
			border-bottom: 1px dotted #fff; font-weight:normal;
		}
		
		#contentFooter a:hover {
			color: #FFFFFF;
			background-color:transparent;
		}	
/*}}}*/
The Tipsy binary reader reads Tipsy files in {{{std}}} format. The reader is fully parallel, so everything you learn hear will work just as well on N processes.
!Basic operation
#Go to {{{File->Open}}}
#Navigate to {{{b1.00300.d0-1000.std}}} in the test data download
#Click {{{Apply}}}
##you will not see anything yet (we have to execute a {{{Glyph}}} filter to see the output), but click on the {{{Information}}} tab of the {{{Object Inspector}}} panel. You should be able to see that the data you have loaded was loaded as an {{{Unstructured Grid}}} and contains 1001 points
#Click on the {{{Pipeline Browser}}}
#Go to {{{Filters->Alphabetical->Glyph}}} or click on the Glyph icon (sphere with green points) in the toolbar
##Change the {{{Glyph Type}}} to {{{2D Glyph}}}
###You should get a new submenu of {{{Glyph Type}}}, change this to select {{{Vertex}}}
##Scroll down the {{{Object Inspector}}} and uncheck both {{{Mask Points}}} and {{{Random Mode}}}. This isn't important for this small data sets, but notice that the defaults for the {{{Glyph}}} filter are only to display 5000 random points. Unchecking both boxes will insure that your entire dataset is displayed, if that's what you want. 
##Click {{{Apply}}}
#You should now see something in the 3D view but perhaps not very clearly. Reset the camera view with the icon in the toolbar that looks like a green X made of arrows, or manually zoom in with your scroll wheel.
#Click on the {{{Toggle Color Legend}}} icon in the toolbar. 
#Click on the {{{Glyph}}} filter again in the {{{Pipeline Browser}}}. Then, in the {{{Object Inspector}}} select {{{Display}}}.
##First change what you attribute you are coloring by by selection {{{potential}}} in the {{{Color By}}} menu. This operation can also be done in the toolbar
##Next, make the point size smaller by dialing down the {{{Point Size}}} to {{{1}}}. Click on the {{{Properties}}} tab to execute your changes.
!Read point data only
This may be useful if you are working with a large file and don't want to take up memory by reading in attributes of particles.
#Click on the file name, {{{b1.00300.d0-1000.std}}} in the {{{Pipeline Browser}}}
#In the {{{Object Inspector}}} check {{{Read Positions Only}}}
#Click {{{Apply}}}
!Marked particle files
@@color(blue):WARNING: The marked particle file reader is unsupported in parallel mode.@@
#Click on the file name {{{b1.00300.d0-1000.std}}} in the {{{Pipeline Browser}}}
#In the {{{Object Inspector}}} click on the {{{...}}} at the end of the {{{Mark File Name}}} option to open a file picker dialog. Alternately, manually type the full path in the box.
#Select {{{b1.00300.d0-1000.testmark.mark}}}, the mark file, available in the test data.
#Click {{{Apply}}} you should now see only two particles.
!Distribute data checkbox
This is only relevant if running in Client/Server mode, and it redistributes the data spatially across processes. This process can also be done manually with the {{{D3}}} filter. Distributing the data spatially is best for most filter's operations, but can take time to run on a large dataset.
!Open test file
Open up the test file {{{b1.00300.d0-1000.std}}}, available as part of the test data in [[Downloads]]. If you have trouble doing this, see the ''Basic operation'' section of the [[Tipsy binary reader tutorial]]. You may have to execute a {{{Glyph}}} filter as well for the data to become visible, this is covered in the tutorial.
!Load new color maps
#In the toolbar, click on the {{{Edit Color Map}}} button which is a picture of a horizontal spectrum, with a green circle above it.
#Click on {{{Choose Preset}}}
#Click on {{{Import}}}
#Navigate to the {{{Color Maps}}} directory of the test data available in the [[Downloads]] section
#Choose one of the color maps, e.g. {{{wrbb_tipsy_colormap.xml}}} in the file picker dialog
#Click {{{OK}}}
#Click {{{OK}}} again
#Click {{{Close}}}
#The data should now be displayed in your new color map, click the {{{Toggle Color Legend Visibility}}} button, a vertical spectrum, in the toolbar
!Advanced Usage
!!Make your new color map the default
You may have a different color map for every attribute but there is a default color attribute. You can make a new color map a default-this makes all settings pertaining to this color map, and the color map itself the default.
#In the toolbar, click on the {{{Edit Color Map}}} button 
#Click the {{{Make Default}}} button
!!Change to a logarithmic scale
Note if the attribute you are trying to color by contains negative values it will simply map all these to something slightly above 0, meaning it is less meaningful
#In the toolbar, click on the {{{Edit Color Map}}} button 
#Check the {{{Use Logarithmic Scale}}} checkbox
!!Change to a discrete color space
This operation would be most useful if you are displaying data that has a small number of values, e.g. the moment number produced by the [[Principle Moments of Inertia command|Calculate principle moments of inertia tutorial]]. However, here you can practice using it for any type of data to see the results.
#In the toolbar, click on the {{{Edit Color Map}}} button 
#The {{{Use Discrete Colors}}} button should be checked by default, with a {{{Resolution}}} value of {{{256}}}. Change this to something much lower, for example {{{4}}}.
#Click {{{Close}}}
#There should now be only 4 colors displayed
!!Create your own color map
#Open the {{{create_own_colormap.xml}}} in the test data {{{Color Maps}}} directory in your favorite text editor
#Play around with changing some of the values and save the changes
#Load the color map into ParaView
#Repeat, see [[here|http://www.geophysik.uni-muenchen.de/intranet/it-service/applications/paraview/custom-lookup-tables-for-vtk-files]] for more information about changing the values systematically. You can
##Add more points with defined colors
##Change the opacity
##Generate the color map with a script instead of manually
##Use different color spaces
#[[Follow the initial ParaView setup tutorial|Initial ParaView setup tutorial]]
#[[Follow the ParaView tutorial with sample data|http://www.cmake.org/Wiki/SC08_ParaView_Tutorial]] (external)
#[[Follow the AstroViz tutorial with sample data]] 
**[[Tipsy binary reader tutorial]]
**[[Calculate center-of-mass tutorial]]
**[[Profile tutorial]]
**[[Calculate principle moments of inertia tutorial]]
**[[Smooth particle quantities tutorial]]
**[[Find virial radius tutorial]]
**[[Friends-Of-Friends halo finder tutorial]]
**[[Append additional ascii attributes tutorial]]
**[[Tipsy color maps tutorial]]
#[[Follow the client/server AstroViz tutorial]]
#[[Follow the parallel analysis tutorial]]
!Plugin build on both Client and Server
You need to have a build of the desired plugin on both client and server. For AstroViz, see [[Build/install AstroViz]]
!Plugin usage
Once you have a build of your plugin on both client and server the rest is easy. From you client connect to the server (see [[Connecting to server]]), then go to {{{Tools->Manage plugins}}}. Load the build of the plugin on both client and server.
!Requirements
To build a ParaView plugin, you need to have access to:
*cmake
*the plugin's source code
*access to to a directory of the build of ParaView with which you wish to run containing a {{{ParaViewConfig.cmake}}} or a {{{paraview-config.cmake}}} file. 
!Steps
#Create a build directory
#Point to plugin source directory by running {{{ccmake /path/to/plugin/src/}}} from the build directory
#Push {{{c}}} for "configure"
#Modify ParaView_DIR to point to build of ParaView
#Push {{{c}}} for "configure"
#If there were no problems push {{{g}}} for generate
#Make file will be generated. Execute {{{make}}} in plugin build directory to build.
contact: [[Christine Corbett Moran|http://www.itp.uzh.ch/~corbett/]]
Note that in the development version of ~ParaView the ability to record any action done in the ~ParaView GUI as a Python script is available. This includes all actions which involve the ~AstroViz plugin. The individual examples below feature a recording for each ~AstroViz feature and many common ~ParaView actions. The all in one example is an edited condensed version consisting of a series of common actions.
!Individual Examples
The individual examples mainly assume that they are run from the Python shell within the ~ParaView GUI after the ~AstroViz plugin has been loaded via the GUI. By examining the procedure to import the relevant libraries, connect to a server, and load the ~AstroViz plugin externally they may be run from the python interpreter on your machine with which ~ParaView was built so long as the proper environment variables were set. See [[setting environment variables for use of ParaView and Python]] for more information about this.
*[[Example Python for add additional attribute filter]]
*[[Example Python for modifying the color bar]]
*[[Example Python for connecting to server]]
*[[Example Python for deleting an object In Pipeline]]
*[[Example Python for the FoF filter]]
*[[Example Python for glyph filter]]
*[[Example Python for getting help]]
*[[Example Python for loading the AstroViz Plugin filter]]
*[[Example Python for the neighbor smooth filter]]
*[[Example Python for opening a Tipsy binary]]
*[[Example Python for plotting data]]
*[[Example Python for principle moments of inertia filter]]
*[[Example Python for profile filter]]
*[[Example Python for virial radius filter]]
!~All-in-One example
{{{
#!/usr/bin/python
# Import libraries
from paraview.simple import *
from paraview import servermanager
# Connect to server 
if not servermanager.ActiveConnection:
	connection = servermanager.Connect('x01y01.zbox.physik.uzh.ch', 11111)
# Load AstroViz plugin
servermanager.LoadPlugin('libAstroVizPlugin.dylib')
# Use the TipsyReader
tipsyfile = servermanager.sources.TipsyReader(FileName='b1.00300.d0-1000.std')
# Finding the center of mass
com=servermanager.filters.CenterOfMass(Input=tipsyfile)
com.SelectInputArray=['POINTS','mass']
com.UpdatePipeline()
# Render the result
view=servermanager.CreateRenderView()
rep=servermanager.CreateRepresentation(com,view)
view.StillRender()


#########
# Make sure: PYTHONPATH includes the VTK/Wrapping/Python and the bin/ directories from your ParaView build:
#export PYTHONPATH=/Users/corbett/Documents/Projects/Work/Viz/ParaView/ParaView-3.6.1-Stable/ParaView-3.6.1-Stable_build/Utilities/VTKPythonWrapping/:/Users/corbett/Documents/Projects/Work/Viz/ParaView/ParaView-3.6.1-Stable/ParaView-3.6.1-Stable_build/bin/
###############
# Connect to Server
#
# Here we connect to the built in server.
# Can also connect to an external server e.g. with
# connection = servermanager.Connect('x01y01.zbox.physik.uzh.ch', 11111)
###############
if not servermanager.ActiveConnection:
	connection = servermanager.Connect('x01y01.zbox.physik.uzh.ch', 11111)

###############
#
# AstroViz data readers will be available under servermanager.sources
# AstroViz data filters will be available under servermanager.filters
###############

###############
# Get Help 
#
# Lists available modules:
# dir(servermanager.sources.TipsyReader)
#
# Lists documentation:
# help(servermanager.sources.TipsyReader)
###############



###############
# Create a Glyph
###############
glyph1=Glyph(Input=b1_00300_d01000_std)
glyph1.GlyphType="2D Glyph"
glyph1.GlyphType.GlyphType="Vertex"
glyph1.MaskPoints=0

###############
# Render what we have so far
###############
view1=servermanager.CreateRenderView()
rep1=servermanager.CreateRepresentation(glyph1,view1)
rep1.PointSize=1
view1.ResetCamera()
view1.StillRender()
}}}
Make sure {{{PYTHONPATH}}} includes the {{{VTK/Wrapping/Python}}} and the {{{bin/}}} directories from the ~ParaView build. E.g.:
{{{
export PYTHONPATH=/Users/corbett/Documents/Projects/Work/Viz/ParaView/ParaView-3.6.1-Stable/ParaView-3.6.1-Stable_build/Utilities/VTKPythonWrapping/:/Users/corbett/Documents/Projects/Work/Viz/ParaView/ParaView-3.6.1-Stable/ParaView-3.6.1-Stable_build/bin/
}}}