<!--{{{-->
<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]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#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>>
Andrew J. Radosevich is a Senior Research Scientist in Drug Discovery at AbbVie Inc [[AbbVie|http://www.abbvie.com]]. He is a former graduate and postdoctoral researcher in Prof. [[Vadim Backman|http://www.bme.northwestern.edu/faculty_staff/core/backman.html]]'s [[Biophotonics Laboratory|http://biophotonics.bme.northwestern.edu]] at [[Northwestern University|http://northwestern.edu]].
{{{LinkedIn:}}} [[www.linkedin.com/in/andrewradosevich/|http://www.linkedin.com/in/andrewradosevich/]]
[[Resume|Andrew J Radosevich Resume.pdf]]
[[Curriculum Vitae|Andrew J Radosevich CV.pdf]]
!!!Education
2009 - B.S., Biomedical Engineering, Columbia University in the City of New York
2012 - M.S., Biomedical Engineering, Northwestern University
2014 - Ph.D., Biomedical Engineering, Northwestern University
!!!Awards
2014 - Northwestern University Biomedical Engineering Ph.D. Dissertation Award
2012 - The Graduate School at Northwestern University Conference Travel Grant.
2011 - National Science Foundation Graduate Research Fellowship (Tenure: June 2011 - May 2014)
2011 - USNC/URSI Student Fellowship Grant Award
!!!Patents
[[PROBE APPARATUS FOR MEASURING DEPTH LIMITED PROPERTIES WITH LOW COHERENCE ENHANCED BACKSCATTERING|http://www.google.com/patents/US20140036271]]
United States 20140036271 Filed February 6, 2014.
!!!Links
Jeremy D. Rogers - UW Madison http://loci.wisc.edu/rogers/
!!!Acknowledgements
Work presented between June 2011 and May 2014 was supported by a National Science Foundation Graduate Research Fellowship under Grant No. {{{DGE-0824162.}}}

<<tiddler HideTiddlerTags>><<tiddler HideTiddlerSubtitle>><<tiddler HideTiddlerToolbar>>
Graduate Student, Northwestern University
TestTest
''Code, programs, tools, etc. written by A.J. Radosevich''
Please contact e-mail on About page for answers to questions or if you found any bugs.
!Monte Carlo Codes
!!!Jones Vector (Electric Field) Monte Carlo for simulation of Enhanced Backscattering. Fast and Easy Matlab GUI interface!! As described in //J. Biomed. Opt.// 17(11), 115001 (2012).
Code optimized for Linux, but works on the windows platform. Other than Matlab, one prerequisite for the GUI is openMPI which can be downloaded [[here|http://www.open-mpi.org/software/ompi/v1.6/]]. During installation make sure to 'Add {{{OpenMPI}}} to the system PATH for all users'. See Readme file include in the {{{MC_GUI}}} folder for more details.
* [[MC_GUI|MC_GUI.zip]]
!!!Jones Vector (Electric Field) Monte Carlo for simulation of Enhanced Backscattering on GPU with CUDA. Code transferred to Windows platform in a Visual Studio project courtesy of Alexander Doronin at the University of Otago. Please see the fantastic online Monte Carlo tool of the University of Otago at [[http://biophotonics.otago.ac.nz/MCOnline|http://biophotonics.otago.ac.nz/MCOnline]].
* [[GPUMC|GPUMC_Windows.zip]]
!!!Stokes Vector (Intensity) Monte Carlo code for simulation of Enhanced Backscattering. Written totally in C. As described in //IEEE J Sel Top Quantum Electron// 18(4):1313-1325 (2012). 
* [[Linear Polarization Mie Code |Mie Linear.zip]] and its [[Readme.pdf|Mie Linear/Readme.pdf]]
* [[Circular Polarization Mie Code |Mie Circular.zip]] and its [[Readme.pdf|Mie Circular/Readme.pdf]]
* [[Linear Polarization Whittle Matern  Code |WM Linear.zip]] and its [[Readme.pdf|WM Linear/Readme.pdf]]
* [[Circular Polarization Whittle Matern  Code |WM Circular.zip]] and its [[Readme.pdf|WM Circular/Readme.pdf]]
!!!Basic Monte Carlo Simulation (slow code written entirely in Matlab)
* [[MC.m|MC.m]]
!Generate random media according to the Whittle Matern model in Matlab. Original version by Ilker R Capoglu.
* [[2D random media|Random Media/generate_corr_2D.m]]
* [[2D random media with microscope resolution|Random Media/generate_corr_2D_microscope.m]]
* [[3D random media|Random Media/generate_corr_3D.m]]
!Experimental data processing in Matlab
!!!Experimental instrument graphical user interface (GUI)
*[[automation2d|automation2d.zip]]
!!!Processing functions for experimental instrument. Place all files in the Matlab work directory. Detailed information and examples for the master function can be found by typing "help process_all" at the Matlab command line.
* [[process_all.m|Process EBS/process_all.m]] - Master processing function.
* [[ebs_options.m|Process EBS/ebs_options.m]] - Select input options for process_all.m.
* [[rotave.m|Process EBS/rotave.m]] - Rotationally averaging/summing data from 2D/3D data down to 1D.
* [[fitplane.m|Process EBS/fitplane.m]] - Fit a plane to a 2D peak data.
* [[get_pr.m|Process EBS/get_pr.m]] - Extract the p(r) distribution from an EBS measurement.
* [[distance.m|Process EBS/distance.m]] - Create 2D array with values indicating the distance from the center pixel.
* [[function_s.m|Process EBS/function_s.m]] - Finite spot size modulation function.
* [[function_c.m|Process EBS/function_c.m]] - Finite spatial coherence modulation function.
* [[center.m|Process EBS/center.m]] - Center the maximum value in a 2D image.
* [[thresh.m|Process EBS/thresh.m]] - Threshold image hot pixels.
* [[pixisload.m|Process EBS/pixisload.m]] - Load and time-normalize data collect from a PIXIS CCD array.
* [[bias_normalized_new.mat|Process EBS/bias_normalized_new.mat]] - Bias image collected from current PIXIS CCD array.
!!!Processing to simulate the in-vivo probe design from Monte Carlo simulation.
* [[simprobe_gen.m|Probe simulation/simprobe_gen.m]] - Simulate in-vivo LEBS probe collection using 2D peak data.
* [[pr_to_probe.m|Probe simulation/pr_to_probe.m]] - Script to convert Monte Carlo data to in-vivo probe collection intensities. Requires Monte Carlo data such as: [[data|Probe simulation/Filename_1.mat]] 
!!!Rapid generation of P(r) spectrum using library of Monte Carlo simulations (see Chapter 9 of my thesis)
* [[generate_pr.m|PrGen/generate_pr.m]] - Commented function to generate P(r) using physical properties as inputs. 
* [[copolys_prs.mat|PrGen/copolys_prs.mat]] - Library of polynomials for linear co-polarization
* [[crosspolys_prs.mat|PrGen/crosspolys_prs.mat]] - Library of polynomials for linear cross-polarization
* [[hppolys_prs.mat|PrGen/hppolys_prs.mat]] - Library of polynomials for circular helicity preserving polarization
* [[ohpolys_prs.mat|PrGen/ohpolys_prs.mat]].  - Library of polynomials for circular orthogonal helicity polarization
Also requires function phys_to_opt.m and extinction_Hb.mat found below.
!!!Fit measurement optical properties using rapid generation of P(r) spectrum (see Chapter 9 of my thesis)
* [[get_OPs.m|FitOps/get_OPs.m]] - Main function for extracting optical properties.
* [[find_kLn.m|FitOps/find_kLn.m]] - Sub-function to k*Ln given optical properties.
* [[find_An.m|FitOps/find_An.m]] - Sub-function to An given optical properties.
Also requires functions: phys_to_opt.m, generate_pr, and function_s.
Also requires files: extinction_Hb.mat, copolys_prs.mat, crosspolys_prs.mat, hppolys_prs.mat, ohpolys_prs.mat.
!Optical properties calculation
!!!Vectorized Mie theory code in Matlab
Calculating optical properties for a suspension of spheres using Mie Theory. The Main function is "mie_to_opt". This code is based on modifications to the one written by Maetzler (http://www.hiwater.org/Mie_calcs.html) and based on the text by Bohren and Huffman.
* [[Mie code|Mie.zip]]
!!!Convert ultra-structural and micro-vascular parameters to optical properties
Calculation of scattering parameters from the Whittle Matern ultra-structure model and absorption parameters assuming packaging of hemoglobin within blood vessels. Function requires [[extinction coefficients|extinction_Hb.mat]] from http://omlc.ogi.edu/spectra/hemoglobin/index.html.
* [[phys_to_opt.m|phys_to_opt.m]]
!!!Miscellaneous Functions
* [[rotextend.m|rotextend.m]] - Extend a 1D function into either 2D or 3D. This is the inverse of rotave.m function above.
* [[acf.m|acf.m]] - Calculate autocorrelation function of N-dimensional data in Matlab.
* [[se.m|se.m]] - Calculate standard error of data in Matlab.
* [[remove_outliers.m|remove_outliers.m]] - Remove outliers according to Matlab boxplot criterion.
* [[MakePPT.m|MakePPT.m]] - Make a powerpoint presentation in Matlab.
* [[FitCorr1D.m|FitCorr1D.m]] - Fit experimental 1D correlation function to Whittle Matern Model. Need to download 'fminsearchbnd'.
* [[FitBlood.m|FitBlood.m]] -  Function to extract microvascular and mass density distribution from an experimentally measured intensity spectrum. Need to download 'fminsearchbnd'.


<<tiddler HideTiddlerTags>>
<<tiddler HideTiddlerSubtitle>>
<<tiddler HideTiddlerToolbar>>
Background: #fff
Foreground: #ooo
PrimaryPale: #8cf
PrimaryLight: #1d2088
PrimaryMid: #1d2088
PrimaryDark: #1d2088
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
[[About]]
!!!First, you will need to save this file to your local harddrive to edit. [[Right click and save as|tw_website_template_jdr.html]] to download this page for customization. Then open the saved version in a browser. After modifying, you can upload this file to a webserver to host your own site.

!!!To make this more suitable as a website, the following changes were made to the default [[empty|empty.html]] ~TiddlyWiki:
# Imported HideTiddlerTags, HideTiddlerSubtitle, HideTiddlerToolbar, ReplaceDoubleClick, SinglePageModePlugin, ToggleRightSidebar, InlineJavascriptPlugin from http://www.tiddlytools.com
# Created an [[Example]] tiddler showing how to hide toolbars, tags, and subtitle.
# Created a zzConfigTweaks tiddler to make the default options stick and tagged it with systemConfig tag so it loads
# Added the rightsidebar toggle dot to the subtitle
# Added {{{<span macro="tiddler ReplaceDoubleClick with: shift doubleclick"></span>}}} to the ViewTemplate
# Added these notes to the GettingStarted tiddler

!!!With the above changes, by default the rightsidebar is hidden. You can toggle it by clicking the period at the end of the subtitle. To edit a tiddler, you hold shift and double click the tiddler title. If you edit the [[Example]] tiddler, you can see the last three lines that hide the parts of a tiddler to make it look cleaner for a website.

To start customizing this blank TiddlyWiki, 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>>
Andrew Radosevich
/%
|Name|HideTiddlerSubtitle|
|Source|http://www.TiddlyTools.com/#HideTiddlerSubtitle|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's subtitle (dates/created by) display|

Usage: <<tiddler HideTiddlerSubtitle>>

%/<script>
	var t=story.findContainingTiddler(place);
	if (!t || t.id=="tiddlerHideTiddlerSubtitle") return;
	var nodes=t.getElementsByTagName("*");
	for (var i=0; i<nodes.length; i++)
		if (hasClass(nodes[i],"subtitle"))
			nodes[i].style.display="none";
</script>
/%
|Name|HideTiddlerTags|
|Source|http://www.TiddlyTools.com/#HideTiddlerTags|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's tagged/tagging display elements|

Usage: <<tiddler HideTiddlerTags>>

%/<script>
	var t=story.findContainingTiddler(place);
	if (!t || t.id=="tiddlerHideTiddlerTags") return;
	var nodes=t.getElementsByTagName("div");
	for (var i=0; i<nodes.length; i++)
		if (hasClass(nodes[i],"tagged"))
			nodes[i].style.display="none";
</script>
/%
|Name|HideTiddlerToolbar|
|Source|http://www.TiddlyTools.com/#HideTiddlerToolbar|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's toolbar display|

Usage: <<tiddler HideTiddlerToolbar>>

%/<script>
	var t=story.findContainingTiddler(place);
	if (!t || t.id=="tiddlerHideTiddlerToolbar") return;
	var nodes=t.getElementsByTagName("*");
	for (var i=0; i<nodes.length; i++)
		if (hasClass(nodes[i],"toolbar"))
			nodes[i].style.display="none";
</script>
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.4|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 3, date: new Date(2008,6,11)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",

	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var src=lookaheadMatch[1];
			var label=lookaheadMatch[2];
			var tip=lookaheadMatch[3];
			var key=lookaheadMatch[4];
			var show=lookaheadMatch[5];
			var code=lookaheadMatch[6];
			if (src) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // there is script code
				if (show) // show inline script code in tiddler output
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
					var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
					link.code="function _out(place){"+fixup+"\n};_out(this);"
					link.tiddler=w.tiddler;
					link.onclick=function(){
						this.bufferedHTML="";
						try{ var r=eval(this.code);
							if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
								var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
							if(this.bufferedHTML.length)
								s.innerHTML=this.bufferedHTML;
							if((typeof(r)==="string")&&r.length) {
								wikify(r,s,null,this.tiddler);
								return false;
							} else return r!==undefined?r:false;
						} catch(e){alert(e.description||e.toString());return false;}
					};
					link.setAttribute("title",tip||"");
					var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
					URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
					URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
					link.setAttribute("href",URIcode);
					link.style.cursor="pointer";
					if (key) link.accessKey=key.substr(0,1); // single character only
				}
				else { // run inline script code
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var c="function _out(place){"+fixup+"\n};_out(w.output);";
					try	 { var out=eval(c); }
					catch(e) { out=e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}

// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
	if(limit > 0) text = text.substr(0,limit);
	var wikifier = new Wikifier(text,formatter,null,tiddler);
	return wikifier.wikifyPlain();
}
//}}}

// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
[[About]]
[[Publications]]
[[Presentations]]
[[Monte Carlo Codes]]
[[Other Codes]]
[[Movies]]
[[Music]]

!!!Contact:
ajradosevich(at)gmail.com
''Code, programs, tools, etc. written by A.J. Radosevich''
Please contact e-mail on About page for answers to questions or if you found any bugs.
!Monte Carlo Codes
!!!Jones Vector (Electric Field) Monte Carlo for simulation of Enhanced Backscattering on GPU with CUDA. Code transferred to Windows platform in a Visual Studio project courtesy of Alexander Doronin at the University of Otago. Please see the fantastic online Monte Carlo tool of the University of Otago at [[http://biophotonics.otago.ac.nz/MCOnline|http://biophotonics.otago.ac.nz/MCOnline]]. Note: This code is still in the testing phase and may be buggy and not commented well.
* [[MC_GUI2|MC_GUI2.zip]] - Enter Matlab and type {{{MC_GUI}}} at the command line to open simulation GUI.
* [[Filename_001.mat|Filename_001.mat]] - Output from {{{MC_GUI}}} when running default simulation parameters. To plot basic data from this file please use the following script: [[Filename_001.m|Filename_001.m]].
* [[process_mc.m|process_mc.m]] - Code used to process results from MC_GUI for comparison with experiment. (needs functions below)
* [[generate_mods.m|FitOps/generate_mods.m]] - Code to generate the modulation functions that converts a simulations to something you would measure experimentally.
* [[function_mtf.m|FitOps/function_mtf.m]] - Used for generate_mods.
* [[function_mtf_shift.m|FitOps/function_mtf_shift.m]] - Used for generate_mods.
* [[extract_shift.m|FitOps/extract_shift.m]] - Used for generate_mods.
!!!Jones Vector (Electric Field) Monte Carlo for simulation of Enhanced Backscattering. Fast and Easy Matlab GUI interface!! As described in //J. Biomed. Opt.// 17(11), 115001 (2012).
Code optimized for Linux, but works on the windows platform. Other than Matlab, one prerequisite for the GUI is openMPI which can be downloaded [[here|http://www.open-mpi.org/software/ompi/v1.6/]]. During installation make sure to 'Add {{{OpenMPI}}} to the system PATH for all users'. See Readme file include in the {{{MC_GUI}}} folder for more details.
* [[MC_GUI|MC_GUI.zip]]
!!!Stokes Vector (Intensity) Monte Carlo code for simulation of Enhanced Backscattering. Written totally in C. As described in //IEEE J Sel Top Quantum Electron// 18(4):1313-1325 (2012). 
* [[Linear Polarization Mie Code |Mie Linear.zip]] and its [[Readme.pdf|Mie Linear/Readme.pdf]]
* [[Circular Polarization Mie Code |Mie Circular.zip]] and its [[Readme.pdf|Mie Circular/Readme.pdf]]
* [[Linear Polarization Whittle Matern  Code |WM Linear.zip]] and its [[Readme.pdf|WM Linear/Readme.pdf]]
* [[Circular Polarization Whittle Matern  Code |WM Circular.zip]] and its [[Readme.pdf|WM Circular/Readme.pdf]]
!!!Basic Monte Carlo Simulation (slow code written entirely in Matlab)
* [[MC.m|MC.m]]




<<tiddler HideTiddlerTags>>
<<tiddler HideTiddlerSubtitle>>
<<tiddler HideTiddlerToolbar>>
EBS movie from SPIE photonics west 2014 presentation "Sub-diffusion regime reflectance measured by enhanced backscattering to quantify tissue phase function and ultra-structure"
[[.mp4 Movie|EBS.mp4]]




<<tiddler HideTiddlerTags>>
<<tiddler HideTiddlerSubtitle>>
<<tiddler HideTiddlerToolbar>>
!Singles (2009-2012)
* What's With All This Nostalgic Bullshit [[.wav| More Songs\What's With All This Nostalgic Bullshit.wav]]
* Lost in Synaptic Translation [[.wav| More Songs\Lost in Synaptic Translation.wav]]
* Leave Me Alone (New Order Cover) [[.mp3| More Songs\Leave Me Alone (Cover).mp3]]
* Renegade (Thin Lizzy Cover) [[.mp3| More Songs\Renegade (Cover).mp3]]

!Real Men Wear Saucony (2009)
* 1 - We Ride [[.mp3| Real Men Wear Saucony\1 - We Ride.mp3]] 
* 2 - Vaya Con Dios [[.mp3| Real Men Wear Saucony\2 - Vaya Con Dios.mp3]] 
* 3 - No Hippies [[.mp3| Real Men Wear Saucony\3 - No Hippies.mp3]] 
* 4 - Rad Girl [[.mp3| Real Men Wear Saucony\4 - Rad Girl.mp3]] 
* 5 - It's All So Friggin' Hysterical [[.mp3| Real Men Wear Saucony\5 - It's All So Friggin' Hysterical.mp3]] 
* 6 - His Sword, Sole Companion [[.mp3| Real Men Wear Saucony\6 - His Sword, Sole Companion.mp3]] 
* 7 - Dragonchild`s Revenge  [[.mp3| Real Men Wear Saucony\7 - The DragonChild's Revenge.mp3]] 
* 8 - Talk to Me Summer  [[.mp3| Real Men Wear Saucony\8 - Talk to Me Summer.mp3]] 
* 9 - Back to the Psych Ward [[.mp3| Real Men Wear Saucony\9 - Back to the Psych Ward.mp3]] 
* 10 - Ode to a Turkish Urn  [[.mp3| Real Men Wear Saucony\10 - Ode to a Turkish Urn.mp3]] 
[[Front Cover | Real Men Wear Saucony/FrontCover.png]]
[[Back Cover | Real Men Wear Saucony/BackCover.png]]
[img[ Real Men Wear Saucony/FrontCover.png]]


<<tiddler HideTiddlerTags>>
<<tiddler HideTiddlerSubtitle>>
<<tiddler HideTiddlerToolbar>>
!Generate random media according to the Whittle Matern model in Matlab. Original version by Ilker R Capoglu.
* [[2D random media|Random Media/generate_corr_2D.m]]
* [[2D random media with microscope resolution|Random Media/generate_corr_2D_microscope.m]]
* [[3D random media|Random Media/generate_corr_3D.m]]
!Experimental data processing in Matlab
!!!Experimental instrument graphical user interface (GUI)
*[[automation2d|automation2d.zip]]
!!!Processing functions for experimental instrument. Place all files in the Matlab work directory. Detailed information and examples for the master function can be found by typing "help process_all" at the Matlab command line. The full package is [[here|Process EBS.zip]] with individual items below. Please see the EBS user manual [[here|EBSManual.pdf]] for a quick tutorial describing what is needed to take good EBS measurements that match with Monte Carlo simulation.
* [[process_all.m|Process EBS/process_all.m]] - Master processing function.
* [[ebs_options.m|Process EBS/ebs_options.m]] - Select input options for process_all.m.
* [[rotave.m|Process EBS/rotave.m]] - Rotationally averaging/summing data from 2D/3D data down to 1D.
* [[fitplane.m|Process EBS/fitplane.m]] - Fit a plane to a 2D peak data.
* [[get_pr.m|Process EBS/get_pr.m]] - Extract the p(r) distribution from an EBS measurement.
* [[distance.m|Process EBS/distance.m]] - Create 2D array with values indicating the distance from the center pixel.
* [[function_s.m|Process EBS/function_s.m]] - Finite spot size modulation function.
* [[function_c.m|Process EBS/function_c.m]] - Finite spatial coherence modulation function.
* [[center.m|Process EBS/center.m]] - Center the maximum value in a 2D image.
* [[thresh.m|Process EBS/thresh.m]] - Threshold image hot pixels.
* [[pixisload.m|Process EBS/pixisload.m]] - Load and time-normalize data collect from a PIXIS CCD array.
* [[bias_normalized_new.mat|Process EBS/bias_normalized_new.mat]] - Bias image collected from current PIXIS CCD array.
* [[bias_gain3.mat|Process EBS/bias_gain3.mat]] - Bias image collected from current PIXIS CCD array with gain setting = 3.
!!!Processing to simulate the in-vivo probe design from Monte Carlo simulation.
* [[simprobe_gen.m|Probe simulation/simprobe_gen.m]] - Simulate in-vivo LEBS probe collection using 2D peak data.
* [[simprobe_MC.m|Probe simulation/simprobe_MC.m]] - Function to convert Monte Carlo data to in-vivo probe collection intensities. Requires Monte Carlo data such as: [[data|Probe simulation/Filename_1.mat]] 
  Also requires function besselzero which can be found at http://www.mathworks.com/matlabcentral/fileexchange/6794-bessel-function-zeros.
!!!Rapid generation of P(r) spectrum using library of Monte Carlo simulations (see Chapter 9 of my thesis)
* [[generate_pr.m|PrGen/generate_pr.m]] - Commented function to generate P(r) using physical properties as inputs. 
* [[copolys_prs.mat|PrGen/copolys_prs.mat]] - Library of polynomials for linear co-polarization
* [[crosspolys_prs.mat|PrGen/crosspolys_prs.mat]] - Library of polynomials for linear cross-polarization
* [[hppolys_prs.mat|PrGen/hppolys_prs.mat]] - Library of polynomials for circular helicity preserving polarization
* [[ohpolys_prs.mat|PrGen/ohpolys_prs.mat]].  - Library of polynomials for circular orthogonal helicity polarization
Also requires function phys_to_opt.m and extinction_Hb.mat found below.
!!!Rapid generation of P(r) spectrum using PFC approximation by Vitkin et al
* [[generate_pr_PFC.m|PrGen/generate_pr_PFC.m]] - Commented function to generate P(r) using physical properties as inputs. 
Also requires function phys_to_opt.m and extinction_Hb.mat found below.
!!!Fit measurement optical properties using rapid generation of P(r) spectrum (see Chapter 9 of my thesis)
* [[get_OPs.m|FitOps/get_OPs.m]] - Main function for extracting optical properties.
* [[find_kLn.m|PrGen/find_kLn.m]] - Sub-function to k*Ln given optical properties.
* [[find_An.m|PrGen/find_An.m]] - Sub-function to An given optical properties.
* [[cut_extend.m|cut_extend.m]] - Sub-function.
Also requires functions: phys_to_opt.m, generate_pr, and function_s.
Also requires files: extinction_Hb.mat, copolys_prs.mat, crosspolys_prs.mat, hppolys_prs.mat, ohpolys_prs.mat.
!Optical properties calculation
!!!Vectorized Mie theory code in Matlab
Calculating optical properties for a suspension of spheres using Mie Theory. The Main function is "mie_to_opt". This code is based on modifications to the one written by Maetzler (http://www.hiwater.org/Mie_calcs.html) and based on the text by Bohren and Huffman.
* [[Mie code|Mie.zip]]
!!!Convert ultra-structural and micro-vascular parameters to optical properties
Calculation of scattering parameters from the Whittle Matern ultra-structure model and absorption parameters assuming packaging of hemoglobin within blood vessels. Function requires [[extinction coefficients|PrGen/extinction_Hb.mat]] from http://omlc.ogi.edu/spectra/hemoglobin/index.html.
* [[phys_to_opt.m|PrGen/phys_to_opt.m]] - Physical properties to Optical properties.
* [[phys_options.m|PrGen/phys_options.m]] - Populates structure of input physical properties for phys_to_opt.m.
!!!Numerical Integration
* [[hankeltransform.m|hankeltransform.m]] - Hankel transform => Converts 2D Fourier transform to 1D for a symmetric function.
* [[ihankeltransform.m|ihankeltransform.m]] - Inverse Hankel transform => Converts inverse 2D Fourier transform to 1D for a symmetric function.
!!!Miscellaneous Functions
* [[rotextend.m|rotextend.m]] - Extend a 1D function into either 2D or 3D. This is the inverse of rotave.m function above.
* [[acf.m|acf.m]] - Calculate autocorrelation function of N-dimensional data in Matlab.
* [[se.m|se.m]] - Calculate standard error of data in Matlab.
* [[remove_outliers.m|remove_outliers.m]] - Remove outliers according to Matlab boxplot criterion.
* [[MakePPT.m|MakePPT.m]] - Make a powerpoint presentation in Matlab.
* [[FitCorr1D.m|FitCorr1D.m]] - Fit experimental 1D correlation function to Whittle Matern Model. Need to download 'fminsearchbnd' from MathWorks website (http://www.mathworks.com/matlabcentral/fileexchange/8277-fminsearchbnd--fminsearchcon).
* [[FitBlood.m|FitBlood.m]] -  Function to extract microvascular and mass density distribution from an experimentally measured intensity spectrum. Need to download 'fminsearchbnd' from MathWorks website (http://www.mathworks.com/matlabcentral/fileexchange/8277-fminsearchbnd--fminsearchcon).


<<tiddler HideTiddlerTags>>
<<tiddler HideTiddlerSubtitle>>
<<tiddler HideTiddlerToolbar>>
!BME Research Day
* [[Targeting the ultra-structural origins of field carcinogenesis using light reflectance spectroscopy - 5/29/2014|Presentations/ResearchDayFinal.pptx]]
!SPIE Photonics West
*[[Sub-diffusion regime reflectance measured by enhanced backscattering to quantify tissue phase function and ultra-structure - 2014|Presentations/SPIE2014.pptx]]
*[[Three models of light transport at subdiffusion length-scales measured with coherent backscattering spectroscopy - 2013|Presentations/SPIE2013.pptx]]
*[[Experimental measurement of the optical properties of biological tissue using polarized enhanced backscattering spectroscopy - 1/21/2012|Presentations/SPIE2012.pptx]]
*[[Depth-resolved measurement of blood supply using low-coherence enhanced backscattering spectroscopy (LEBS) - 2011|Presentations/SPIE2011.ppt]]
!OSA BIOMED
*[[Targeting the ultra-structural origins of field carcinogenesis using low coherence enhanced backscattering - 2014|Presentations/OSA2014.pptx]]
*[[Measurement of the spatial backscattering impulse-response in colon field carcinogenesis using enhanced backscattering spectroscopy - 5/2/2012|Presentations/OSA2012.pptx]]
!USNC URSI 
*[[Jones Matrix Monte Carlo Simulation of Coherent Backscattering in Biological Media - 2012|Presentations/URSI2012.pptx]]

<<tiddler HideTiddlerTags>>
<<tiddler HideTiddlerSubtitle>>
<<tiddler HideTiddlerToolbar>>
[[My NCBI Bibliography| http://goo.gl/OzC9nB]]
[[Google Scholar|http://scholar.google.com/citations?view_op=list_works&hl=en&user=O08HZgoAAAAJ]] 

!! {{{Journal Papers}}}
|XX.|[[|XX]]|[[|XX]]|[[|XX]]|Wu W, ''Radosevich AJ'', Eshein A, Nguyen TQ, Yi J, Cherkezyan L, Roy HK, Szleifer I and Backman V, "Using electron microscopy to calculate optical properties of biological samples." Submitted.|
|30.|[[link|http://dx.doi.org/10.1158/1940-6207.CAPR-16-0054]]|[[pdf|Papers/Wali_2016_Higher.pdf]]|[[|XX]]|Wali RK, Momi N, Dela Cruz M, Calderwood AH, Stypula Y, Almassalha LM, Chhaparia A, Weber CR, ''Radosevich AJ'', Tiwari AK, Latif B, Backman V, and Roy HK. "Higher-Order Chromatin Modulator Cohesin SA1 is an Early Biomarker for Colon Carcinogenesis: Race Specific Implications." //CAPR// Published Aug 22 2016.|
|29.|[[link|http://dx.doi.org/10.1186/s12898-016-0061-4]]|[[pdf|Papers/Swain_2016_Skeletal.pdf]]|[[|XX]]|Swain TD, Dubois E, Gomes A, Stoyneva VP, ''Radosevich AJ'', Henss J, Wagner ME, Derbas J, Grooms HW, Velazquez EM, Traub J, Kennedy BJ, Grigorescu AA, Westneat MW, Sanborn K, Levine S, Schick M, Parsons G, Biggs BC, Rogers JD, Backman V, Marcelino LA. "Skeletal light-scattering accelerates bleaching response in reef-building corals." //BMC Ecol.// 2016; 16: 10.|
|28.|[[link|http://dx.doi.org/10.1136/gutjnl-2015-309996]]|[[pdf|Papers/Roy_2015_Spectral.pdf]]|[[|XX]]|Roy HK, Turzhitsky V, Wali R, ''Radosevich AJ'', Jovanovic B, Della’Zann G, Umar A, Rubin DT, Goldberg MJ, Bianchi L, De La Cruz MA, Helenowski IB, Rodriguez L, Chatterton R, Skripkauskas S, Poast E, Shklovskaya Y, Page K, Weber CR, Huang X, Sadim MS, Richmond E, Bergan RC, and Backman V, "Spectral markers measure aspirin-induced carcinogenesis reversion in colonic mucosa." //GUT// 2015.|
|27.|[[link|http://dx.doi.org/10.1117/1.JBO.20.9.097002]]|[[pdf|Papers/Radosevich_2015_Subdiffusion.pdf]]|[[|XX]]|''Radosevich AJ'', Eshein A, Nguyen TQ, and Backman V, "Subdiffusion reflectance spectroscopy to measure tissue ultrastructure and microvasculature: model and inverse algorithm."  //J. Biomed. Opt.// 20(9) 097002 (2015).|
|26.|[[link|http://dx.doi.org/10.1158/1078-0432.CCR-15-0136]]|[[pdf|Papers/Radosevich_2015_Rectal.pdf]]|[[|XX]]|''Radosevich AJ'', Mutyal NN, Eshein A, Gould B, Nguyen TQ, Rogers JD, Goldberg MJ, Bianchi LK, Konda V, Rex DK,  Yen EF, Backman V, and Roy HK, "Rectal Optical Markers for In-vivo Risk Stratification of Premalignant Colorectal Lesions." Accepted at Clinical Cancer Research May 14th 2015.|
|25.|[[link|http://dx.doi.org/10.1097/MPA.0000000000000340]]|[[pdf|Papers/Mutyal_2015_InVivo.pdf]]|[[|XX]]|Mutyal NN*, ''Radosevich AJ''*, Bajaj S, Konda V, Siddiqui UD, Waxman I, Goldberg MJ, Rogers JD, Gould B, Eshein A, Upadhye S, Koons A, Gonzalez M, Roy HK, and Backman V, "In-vivo risk analysis of pancreatic cancer through optical characterization of duodenal mucosa." //Pancreas// 44(5) 735-741 (2015). *Equal contribution authors.|
|24.|[[link|http://dx.doi.org/10.1364/JOSAA.31.002394]]|[[pdf|Papers/Doronin_2014_Two.pdf]]|[[copyright|CR/25_CR.txt]]|Doronin A, ''Radosevich AJ'', Backman V, and Meglinski I, "Two electric field Monte Carlo models of coherent back scattering of polarized light." //J. Opt. Soc. Am A// 31(11):2394-2400 (2014).|
|23.|[[link|http://dx.doi.org/10.1371/journal.pone.0110157]]|[[pdf|Papers/Radosevich_2014_Buccal.pdf]]|[[copyright|CR/24_CR.txt]]|''Radosevich AJ'', Mutyal NN, Rogers JD, Gould B, Hensing TA, Ray D, Backman V, and Roy HK, "Buccal spectral markers for lung cancer risk stratification."  //PLOS ONE// 9(10): e110157.|
|22.|[[link|http://dx.doi.org/10.1158/1055-9965.EPI-14-0026]]|[[pdf|Papers/Wali_2014_Colonic.pdf]]|[[|XX]]|De La Cruz M, Wali R, Bianchi LK, ''Radosevich AJ'', Crawford SE, Jepeal L, Goldberg MJ, Weinstein J, Momi N, Roy P, Calderwood AH, Backman V, and Roy HK, "Colonic Mucosal Fatty Acid Synthase as an Early Biomarker for Colorectal Neoplasia Risk: Modulation by Obesity and Gender." //Cancer Epidemiology, Biomarkers & Prevention// 23(11) 2413-21 (2014).|
|21.|[[link|http://dx.doi.org/10.3892/ijo.2014.2495]]|||Wali RK, Hensing TA, Ray DW, Dela Cruz M, Tiwari A, ''Radosevich A'', Jepeal L, Fernando HC, Litle VR, Charlot M, Momi N, Backman V, and Roy HK, "Buccal microRNA dysregulation in lung field  carcinogenesis: Gender-specific implications." //International Journal of Oncology//45(3) 1209-1215 (2014).|
|20.|[[link|http://dx.doi.org/10.1016/j.febslet.2014.01.046]]|||Stypula Cyrus Y, Mutyal NN, Dela Cruz MA, Kunte DP, ''Radosevich AJ'', Wali R, Roy HK, and Backman V, "End-binding Protein 1 ({{{EB1}}}) Upregulation is an early event in colon carcinogenesis" //FEBS Letters// 588(5) (2014) 829–835.|
|19.|[[link|http://dx.doi.org/10.1117/1.JBO.19.3.036013]]|[[pdf|Papers/Yi_2014_Spatially.pdf]]|[[copyright|CR/18_CR.txt]]|Yi J, ''Radosevich AJ'', Stypula Cyrus Y, Mutyal NN, Azarin SM, Horcher E, Goldberg MJ, Bianchi LK, Bajaj Shailesh, Roy HK, and Backman V, "Spatially-resolved optical and ultrastructural properties of colorectal and pancreatic field carcinogenesis observed by inverse spectroscopic optical coherence tomography." //J. Biomed. Opt.// 19(3) 036013 (2014).|
|18.|[[link|http://dx.doi.org/10.1109/JSTQE.2013.2280999]]|[[pdf|Papers/Rogers_2014_Modeling.pdf]]|[[copyright|CR/18_CR.txt]]|Rogers JD, ''Radosevich AJ'', Yi J, and Backman V, "Modeling light scattering in tissue as continuous random media using a versatile refractive index correlation function." // IEEE J Sel Top Quantum Electron// 20(2):1-14 (March/April 2014) (invited paper). Published online Sep 6, 2013.|
|17.|[[link|http://dx.doi.org/10.1117/1.JBO.18.9.097002]]|[[pdf|Papers/Radosevich_2013_Ultrastructural.pdf]]|[[copyright|CR/17_CR.txt]]|''Radosevich AJ'', Mutyal NN, Yi J, Stypula Cyrus Y, Rogers JD, Goldberg MJ, Bianchi LK, Bajaj Shailesh, Roy HK, and Backman V, "Ultra-structural alterations in field carcinogenesis measured by enhanced backscattering spectroscopy." J. Biomed. Opt. 18(9), 097002 (Sep 05, 2013).|
|16.|[[link|http://dx.doi.org/10.1371/journal.pone.0061492]]|[[pdf|Papers/Marcelino_2013_Modulation.pdf]]|[[copyright|CR/16_CR.txt]]|Marcelino LA, Westneat MW, Stoyneva V, Henss J, Rogers JD, ''Radosevich A'', Turzhitsky V, Siple M, Fang A, Swain TD, Fung J, and Backman V, "Modulation of Light Enhancement to Symbiotic Algae by Light Scattering in corals and Evolutionary Trends in Bleaching," //PLOS One//;8(4):e61492 (2013).|
|15.|[[link|http://dx.doi.org/10.1364/OE.21.009043]]|[[pdf|Papers/Yi_2013_Can OCT.pdf]]|[[copyright|CR/15_CR.txt]]|Yi J, ''Radosevich AJ'', Rogers JD, Norris SCP, Capoglu IR, Taflove A, and Backman V, "Can OCT be sensitive to nanoscale structural alterations in biological tissue?" //Optics Express// 21(7):9043-9059 (2013).|
|14.|[[link|http://dx.doi.org/10.1371/journal.pone.0057206]]|[[pdf|Papers/Mutyal_2013_Biological.pdf]]|[[copyright|CR/14_CR.txt]]|Mutyal NN, ''Radosevich A'', Tiwari AK, Stypula Y, Wali R, Kunte D, Roy HK, Backman V, "Biological Mechanisms Underlying Structural Changes Induced by Colorectal Field Carcinogenesis Measured with Low Coherence Enhanced Backscattering (LEBS) Spectroscopy," //PLOS One//;8(2):e57206 (2013).|
|13.|[[link|http://dx.doi.org/10.1364/OL.37.005220]]|[[pdf|Papers/Radosevich_2012_Structural.pdf]]|[[copyright|CR/13_CR.txt]]|''Radosevich AJ'', Yi J, Rogers JD, Backman V, "Structural length-scale sensitivities of diffuse reflectance in continuous random media under the Born approximation," //Optics Letters// 37(24):5220-5222 (2012).|
|12.|[[link|http://dx.doi.org/10.1117/1.JBO.17.11.115001]]|[[pdf|Papers/Radosevich_2012_Open.pdf]]|[[copyright|CR/12_CR.txt]]|''Radosevich AJ'', Rogers JD, Capoglu IR, Mutyal NN, Pradhan P, Backman V, "Open source software for electric field Monte Carlo simulation of coherent backscattering in biological media containing birefringence."//J. Biomed. Opt.// 17(11), 115001. Nov 2, 2012.|
|11.|[[link|http://dx.doi.org/10.1364/OE.20.019643]]|[[pdf|Papers/Mutyal_2012_Fiber.pdf]]|[[copyright|CR/11_CR.txt]]|Mutyal NN, ''Radosevich AJ'', Gould B, Rogers JD, Gomes A, Turzhitsky V, Backman V, "A fiber optic probe design to measure depth-limited optical properties in-vivo with Low-coherence Enhanced Backscattering (LEBS) Spectroscopy." //Optics Express// 20(18):19643-19657 (2012).|
|10.|[[link|http://dx.doi.org/10.1109/JSTQE.2011.2173659]]|[[pdf|Papers/Radosevich_2012_Polarized.pdf]]|[[copyright|CR/10_CR.txt]]|''Radosevich AJ'', Rogers JD, Turzhitsky V, Mutyal NN, Yi J, Roy HK, Backman V, "Polarized Enhanced Backscattering Spectroscopy for Characterization of Biological Tissues at Subdiffusion Length-scales." //IEEE J Sel Top Quantum Electron// 18(4):1313-1325 (2012) (invited paper).|
|9.|[[link|http://dx.doi.org/10.1364/OL.36.004737]]|[[pdf|Papers/Radosevich_2011_Measurement.pdf]]|[[copyright|CR/9_CR.txt]]|''Radosevich AJ'', Mutyal NN, Turzhitsky V, Rogers JD, Yi Ji, Taflove A, Backman V, "Measurement of the spatial backscattering impulse-response at short length-scales with polarized enhanced backscattering (EBS)." //Optics Letters// 36(24):4737-4739 (2011).|
|8.|[[link|http://dx.doi.org/10.1117/1.3625402]]|[[pdf|Papers/Turzhitsky_2011_PD.pdf]]|[[copyright|CR/8_CR.txt]]|Turzhitsky V, Mutyal NN, ''Radosevich AJ'', Backman V, "Multiple scattering model for the penetration depth of low-coherence enhanced backscattering."//J. Biomed. Opt.// 16, 097006 (Sep 02, 2011).|
|7.|[[link|http://dx.doi.org/10.1117/1.3589349]]|[[pdf|Papers/Turzhitsky_2011_OPs.pdf]]|[[copyright|CR/7_CR.txt]]|Turzhitsky V, ''Radosevich AJ'', Rogers JD, Mutyal NN, Backman V, "Measurement of optical scattering properties with low-coherence enhanced backscattering spectroscopy." //J. Biomed. Opt.// 16, 067007 (Jun 24, 2011).|
|6.|[[link|http://dx.doi.org/10.1371/journal.pone.0019925]]|[[pdf|Papers/Grosberg_2011_Spectral.pdf]]|[[copyright|CR/6_CR.txt]]|Grosberg LE, ''Radosevich AJ'', S Asfaha, TC wang, Hillman EMC, "Spectral Characterization and Unmixing of Intrinsic Contrast in Intact Normal and Diseased Gastric Tissues Using Hyperspectral Two Photon Microscopy."  //PLOS One//;6(5):e19925 (2011).|
|5.|[[link|http://dx.doi.org/10.1016/j.canlet.2011.03.008]]|[[pdf|Papers/Tiwari_2011_Neo.pdf]]|[[copyright|CR/5_CR.txt]]|Tiwari AK, Crawford SE, ''Radosevich A'', Wali RK, Stypula Y, Kunte DP, Mutyal N, Ruderman S, Gomes A, Cornwell ML, Cruz MD, Brasky J, Gibson TP, Backman V, Roy HK., "Neo-angiogenesis and the premalignant micro-circulatory augmentation of early colon carcinogenesis." //Cancer Lett.// 2011 Apr 12.|
|4.|[[link|http://dx.doi.org/10.1364/BOE.1.001196]]|[[pdf|Papers/Radosevich_2010_Depth.pdf]]|[[copyright|CR/4_CR.txt]]|''Radosevich AJ'', Turzhitsky VM, Mutyal NN, Rogers JD, Stoyneva V, Tiwari AK, De La Cruz M, Kunte DP, Wali RK, Roy HK, and Backman V, "Depth-resolved measurement of mucosal microvascular blood content using 
low-coherence enhanced backscattering spectroscopy," //Biomed. Opt. Express// 1, 1196-1208 (2010).|
|3.|[[link|http://dx.doi.org/10.1364/BOE.1.001034]]|[[pdf|Papers/Turzhitsky_2010_Predictive.pdf]]|[[copyright|CR/3_CR.txt]]|Turzhitsky V, ''Radosevich A'', Rogers JD, Taflove A, and Backman V, "A predictive model of backscattering at subdiffusion length scales." //Biomed. Opt. Express// 1, 1034-1046 (2010).|
|2.|[[link|http://dx.doi.org/10.1038/jcbfm.2010.204]]|[[pdf|Papers/McCaslin_2010_Invivo.pdf]]|[[copyright|CR/2_CR.txt]]|Mccaslin AFH, Chen BR, ''Radosevich AJ'', Cauli B, Hillman EMC, "In vivo 3D morphology of astrocyte–vasculature interactions in the somatosensory cortex: implications for neurovascular coupling."//J Cereb Blood Flow Metab//. 31(3):795-806 (2010).|
|1.|[[link|http://dx.doi.org/10.1364/OL.33.002164]]|[[pdf|Papers/Radosevich_2008_Hyperspectral.pdf]]|[[copyright|CR/1_CR.txt]]|''Radosevich AJ'', Bouchard MB, Burgess SA, Chen BR, Hillman EMC, "Hyperspectral in vivo two-photon microscopy of intrinsic contrast," //Optics Letters// 33(18):2164-6 (2008).|


!! {{{PhD Thesis}}} 	
''Radosevich AJ'', "Targeting the Ultra-structural and Micro-vascular Origins of Field Carcinogenesis Using Enhanced Backscattering Spectroscopy." Successfully defended May 9th, 2014. 
* [[Andrew J Radosevich PhD Thesis.pdf|Andrew J Radosevich PhD Thesis.pdf]] 
* [[ThesisDefense.pptx|ThesisDefense.pptx]] 



<<tiddler HideTiddlerTags>>
<<tiddler HideTiddlerSubtitle>>
<<tiddler HideTiddlerToolbar>>
/%
|Name|ReplaceDoubleClick|
|Source|http://www.TiddlyTools.com/#ReplaceDoubleClick|
|Version|2.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides|tiddler background click and doubleclick handlers|
|Description|disable doubleclick-to-edit-tiddler or replace doubleclick with shift/ctrl/alt+singleclick|

Usage:
	in tiddler content:
		<<tiddler ReplaceDoubleClick>> or
		<<tiddler ReplaceDoubleClick with: key trigger>>
	in ViewTemplate:
		<span macro="tiddler ReplaceDoubleClick"></span> or
		<span macro="tiddler ReplaceDoubleClick with: key trigger"></span>
where: 
	'key' (optional) is one of: none (default), ctrl, shift, or alt
	'trigger' (optional) is one of: click, doubleclick (default)

* if no key parameter (or "none") is specified, then the double-click action is **disabled** for that tiddler.
* if a key (other than none) is specified, the doubleclick action for the tiddler will only be invoked
	when the key+trigger combination is used.
* note: double-clicking will also trigger the single-click handler.  As a result, when 'click' option is specified,
	either click OR double-click (plus the specified key) will trigger the action.

Revisions:
2.0.0 renamed from ShiftClickToEdit and merged with DoubleClickDisable and added support specifying alternative key+click combination

%/<script>
	var here=story.findContainingTiddler(place); if (!here) return;
	if (here.ondblclick) {
		here.setAttribute("editKey","none");
		if ("$1"=="shift" || "$1"=="ctrl" || "$1"=="alt")
			here.setAttribute("editKey","$1"+"Key");
		var trigger=("$2"=="click")?"onclick":"ondblclick";
		here.save_dblclick=here.ondblclick;
		here.ondblclick=null;
		if (here.getAttribute("editKey")!="none")
			here[trigger]=function(e) {
				var ev=e?e:window.event;
				if (ev[this.getAttribute("editKey")])
					this.save_dblclick.apply(this,arguments);
			}
	}
</script>
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.displayTiddler(), Story.prototype.displayTiddlers()|
|Options|##Configuration|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 [2.9.6] changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 6, date: new Date(2008,10,17)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
	config.options.chkSinglePageMode=eval(v);
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
	config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined)
	config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
	config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
	config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
	config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
	config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
	config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
		story.displayTiddler(null,tids[0]);
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
		story.closeAllTiddlers();
		story.displayTiddlers(null,tids);
	}
}


if (Story.prototype.SPM_coreDisplayTiddler==undefined)
	Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
				return;
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
			}
			story.closeTiddler(tid);
		});
	}
	else if (top)
		arguments[0]=null;
	else if (bottom)
		arguments[0]="bottom";
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
			tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
		else if (bottom)
			tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=document.getElementById(story.idPrefix+title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until after animation completes
		var delay=opt.chkAnimate?config.animDuration+10:0;
		setTimeout("window.scrollTo(0,"+yPos+")",delay); 
	}
}

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
	Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
	this.SPM_coreDisplayTiddlers.apply(this,arguments);
	opt.chkBottomOfPageMode=saveBPM;
	opt.chkTopOfPageMode=saveTPM;
	opt.chkSinglePageMode=saveSPM;
}
//}}}
Expertise in Biomedical Diagnostics and Therapeutics<<tiddler ToggleRightSidebar with: ".">>
Andrew J Radosevich
Andrew Radosevich
/%
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide right sidebar (MainMenu)|

Usage: <<tiddler ToggleRightSidebar with: "label">>

Config settings:
	config.options.chkShowRightSidebar (true)
	config.options.txtToggleRightSideBarLabelShow (◄)
	config.options.txtToggleRightSideBarLabelHide (►)

%/<script label="$1" title="show/hide right sidebar content">
	var co=config.options;
	if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
	co.chkShowRightSidebar=!co.chkShowRightSidebar;
	var sb=document.getElementById('sidebar'); if (!sb) return;
	sb.style.display=co.chkShowRightSidebar?'block':'none';
	document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
	saveOptionCookie('chkShowRightSidebar');
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	if (typeof(place)!='undefined' && '$1'=='$'+'1') {
		place.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
		place.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
	}
	var sm=document.getElementById('storyMenu'); if (sm) config.refreshers.content(sm);
</script><script>
	var co=config.options;
	if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
	var sb=document.getElementById('sidebar'); if (!sb) return;
	sb.style.display=co.chkShowRightSidebar?'block':'none';
	document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
	if ('$1'=='$'+'1') {
		var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
		var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
		place.lastChild.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
		place.lastChild.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
	}
</script>
<!--{{{-->
<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>
<span macro="tiddler ReplaceDoubleClick with: shift doubleclick"></span>
<!--}}}-->
//{{{
config.options.chkSinglePageMode = true;
config.options.chkSinglePagePermalin = true;
config.options.chkShowRightSidebar =false;
//}}}