Back to home
play now
wondering
MEET TEAM RICK
We are a group of 3 Studying Datascience at Heriot Watt University
Rachana Patel
PHD Cancer Reasearch
Robert Stone
Biologist
Kuda Mugara
Actuarial Science


If a clinician suspects a patient has a stroke or other cerebrovascular condition they order imaging tests.
Neuroradiologists visually search the resulting scans for abnormalities.
Their visual search tasks correspond to the abstract network analysis tasks of browsing and path following.
To assist neuroradiologists in identifying cerebral artery abnormalities we designed CerebroVis, a novel abstract---yet spatially contextualized---cerebral artery network visualization.
In this design study, we contribute a novel framing and definition of the cerebral artery system in terms of network theory and characterize neuroradiologist domain goals as abstract visualization and network analysis tasks.
Through an iterative, user-centered design process we developed an abstract network layout technique which incorporates cerebral artery spatial context.
The abstract visualization enables increased domain task performance over 3D geometry representations, while including spatial context helps preserve the user's mental map of the underlying geometry.
We provide open source implementations of our network layout technique and prototype cerebral artery visualization tool.
We demonstrate the robustness of our technique by successfully laying out 61 open source brain scans.
We evaluate the effectiveness of our layout through a mixed methods study with three neuroradiologists.
In a controlled experiment our study participants used CerebroVis and a conventional 3D visualization to examine real cerebral artery imaging data and to identify a simulated intracranial artery stenosis.
Participants were more accurate at identifying stenoses using CerebroVis (odds ratio 2.5, absolute risk difference 13\%).
More broadly, we discuss the applications of our design approach to a general design paradigm we call \textit{Abstraction with Context}.
A free copy of this paper, the evaluation stimuli and data, and source code are available at OSF.
Website designed and developed by Aditeya Pandey


A collection of dynamically generated size-related utility classes.
Class names follow the Emmet abbreviation
syntax, with colons (':') replaced by two dashes (--
) to follow BEM naming
conventions.
Available classes
Where <amount>
can be either a unitless number representing a number of
typographic rhythm units as defined in
$jigsass-sizes,
a percentage, or a length specified in pixels, ems or rems, auto or none.
Installation
Using npm:
npm i -S jigsass-utils-size
Usage
Import JigSass Utils Size into your main scss file near its very end, together with all
other utilities (utilities should always be the last to be imported).
@import 'path/to/jigsass-utils-size/scss/index';
Like all other JigSass Utils, JigSass Size does not automatically generate any CSS
when imported. You would need to explicitly indicate that each individual size
class should actually be generated in each component or object it is used in
(clarification: This will include style declarations inside .foo
and .bar
):
// _c.foo.scss
.foo {
@include jigsass-util(u-w, $modifier: 360px); // <-- width: 360px
...
}
// _c.bar.scss
.bar {
@include jigsass-util(u-miw, $modifier: 600px); // <-- min-width: 600px
@include jigsass-util(
u-miw, $modifier: 1200px,
$from: large
); // <-- max-width: 1200px from large bp and on.
...
}
Doing so helps us a great deal with portability, as no matter where we import component or object
partials, the correct utility classes will be generated. Think of it as a poor man's dependency
management.
Developer communication is also assisted by including "dependencies" wherever they are required,
as anyone going through a partial, can easily understand how it should be marked up with just a
glance.
As far as bloat goes, just don't worry about it - the actual styles will only be generated once,
at the location in the cascade where the Jigsass Size partial was imported into the main file.
JigSass Size classes are responsive-enabled, using JigSass MQ
and the breakpoints defined in the $jigsass-breakpoints variable.
Based on the breakpoint arguments passed to jigsass-util
when including a Size class,
responsive modifiers are generated according to the following logic:
.u-w--<modifier>[-[-from-<breakpoint-name>][-until-<breakpoint-name>][-misc-<breakpoint-name>]]
So, assuming the medium
, large
and landscape
breakpoints are defined in $jigsass-breakpoints
as 600px
, 1024px
and (orientation: landscape)
respectively,
@include jigsass-util(u-h, $modifier: 50);
will generate the .u-h--50
class, which is not limited to any media-query.
@include jigsass-util(u-h, $modifier: 10, $until: medium);
will generate the .u-h--10--until-medium
class, which will be in effect at
(max-width: 37.49em)
and will override styles in the default class until that point.
@include jigsass-util(u-mih, $modifier: 300px, $from: large, $misc: landscape);
will generate the .u-mih--200px--from-large-when-landscape
class, which will go into
effect at (min-width: 64em) and (orientation: landscape)
and will override styles in the default
class under these conditions.
License: MIT


Spartahack VI
Home
Account
Logout
Your Application
University
Major
Graduation Year
20XX
2020
2021
2022
2023
2024
Graduation Season
Graduation Season
Spring
Fall
Summer
Traveling From
Birthday
Gender
Your Gender
Male
Female
Non-Binary
Other
Links
LinkedIn.com/user/
Github.com/
Devpost.com/
Number of Hackathons
Why do you want to participate?


| install_dir {xfun} | R Documentation |
Run R CMD build
to build a tarball from a source directory, and run
R CMD INSTALL
to install it.
install_dir(src, build = TRUE, build_opts = NULL, install_opts = NULL)
src |
The package source directory. |
build |
Whether to build a tarball from the source directory. If
|
build_opts |
The options for |
install_opts |
The options for |
Invisible status from R CMD INSTALL
.


| DOSE: |
3 hits |
smoked |
Cannabis |
(plant material) |
Hello, my name is Daniel, and I would like to tell you about my first experience with the recreational drug Marijuana. I’m now writing this after having smoked Marijuana about six times, spaced over three or four weeks. I wanted to talk about the first experience in particular because of it’s effects on me, and how it changed my views on reality and this experience we go through known as life. As well as perhaps a reference for the Marijuana experience.
 I’m fifteen years of age (nearly sixteen), and live in the United States, where I attend school (my first Marijuana experience was during the summer, no school).  My sister teaches English, and my brother works various jobs, and aspires to be a Biochemical Engineer. He’s ten years older than I, and the one who exposed me to Marijuana. My Grandmother’s house, where my experience took place, is only a short walking distance away. My brother has a room upstairs where we partake of the drug.
My brother Gabe is a very nice, clean cut guy, a typical college kid, and probably one of the best people I’ve ever had the fortune to know. He’s been through quite a few dramatic situations, leaving him to be the person he is today. He uses logic for everything he does, from deciding a major for college, to what kind of television show he wants to watch when relaxing, to pissing the right way, and while nobody is perfect, he certainly tries his best. An open mind and logic probably describes him well, even if I disagree with some of his assumptions and opinions.
Now that I’ve given you a little information of my surroundings, let’s get to the actual experience.
It was late one day when I decided I’d go up to my Grandmother’s house to hang out with my brother upstairs in his room for awhile. I crept my way up the carpeted stairs on my bare feet, opened the door, and turned to my right into his door-less room which had the scent of incense. He was listening to music quite loudly on his computer as he browsed the Internet, two speakers with a subwoofer for thump and for quality pounded my ears.  Our conversations are a little more ‘dark’, though.
He told me he was going to ‘poke some smot’, and pulled out his bong from behind the computer. He smoked Marijuana quite often (well, once every couple days, if he had some), and every couple times I was up there he would have some Cannabis to enjoy, he’d smoke it, and I never participated. We joked about how he’d get me high, and for a first-timer, we’d use ice in the bong to cool it off. Gabe decided that he’d do that anyway, went to the bathroom, dumped the water out of his Styrofoam cup, and put the ice in the bong. I made a remark which I don’t recall, sparked his thinking that I wanted to try it, and asked me if I wanted to. For the first time since I saw him and other relatives I knew smoke years ago, I gave an answer to that question I never have before. I said yes.
The second I did, I knew I was going to be experiencing something amazing, and my Adrenal Glands did, too. My heart pumped, and my fingers shook. He put the bong on the computer table and loaded a full bowl into it. He put the lighter to it, flicked it on, and the embers from the Marijuana burned. He sucked into the bong as it filled with smoke, pulled out the bowl, and inhaled the smoke that gathered in the bowl. To a first-timer who’d never seen this in detail, this contraption looked scary. I got the basic principle behind it, though. He handed me the bong.
I put the lighter up to the bowl, tried to light it, and didn’t hit the bowl. My fingers were shaking to damn badly! He laughed and said “You want me to light it?” embarrassed, I nodded for him to.   I pulled it out, and sucked in with the rest of the lung power I had left. I had made it through the worst part.
The smoke filled my lungs, and it felt great, the familiar oxygen gas that normally filled my lungs was replaced by a thicker batter, swirling around inside my lungs.  My brother worked on his second hit at the time this was going on. A feeling of pride overcame me. I’ve seen people cough when smoking, I didn’t cough at all, it felt fine. All the others are pussies I thought.
He handed me the bong again, and said “hold it in after inhaling this time, better effect”. I took his advice. He told me it was already going, so I put it to my mouth, sucked in, the chamber filled with smoke, I pulled out the bowl, and sucked in again. The smoke filled my lungs.
I held it for the longest time (long for me), it was a big hit. I felt a burning sensation in my lungs, forcing me to exhale, along with a hardy cough lasting several times. “Damn it” I thought, “I’m not a badass after all, now I know why people cough.”
Gabe finished his hit, and handed it to me again. Still with some burning in my lungs from the second hit, I decided I’d do it again. Put my mouth to the bong, took the hit, held it, and blew out. Even more violent coughing this time.
Gabe took a hit, and signaled the bong to me for another hit, and I declined with “na, I’m good”.  I put my hand up to my mouth in the same gesture, and said “fuck that guy”. He laughed, as did I.
It’d been about two and a half minutes since we first hit the bong, perhaps a little longer. I asked him how long it would take for me to feel the effects, he replied “it should take about five minutes or so for you to start feeling it”, and with that continued browsing the Internet. I sat on his bed, occasionally getting up and walking around looking at his room to kill time. Another minute passed, then another. That’s when it hit me like a bullet.
My vision, it was my vision first. I’d move my eyes, look around at different places, the wall, the bed, Gabe looking at his computer, didn’t matter what I looked at. Every time I’d move my eyes, it lagged. Like watching frames of a movie slowly, like flipping through a slideshow. This was amazing, my vision had changed, and my brain was interpreting movement of my eyes differently. I’d look at the dresser, or the cushy chair, regardless, it looked amazing. I also felt as if I was out of my body looking at these things, still in my body, but with such emphasis on my vision, the other senses didn’t seem as strong, giving the feeling of being out of my body. Not literally, but you get the picture. Things warped and changed dimension. That’s when the most amazing, and, for lack of a better word, holy experience I’ve ever felt happened.
I started feeling like I was being tickled very lightly all over my body. From head to tow, a tingling. This evolved from the slight tingling to slight pressure. It felt as if thousands of fingers were pushing on every fabric of my body. Arms, head, stomach, and the lower extremities (legs…yes, I speak of legs). This felt amazing, so amazing I couldn’t help but giggle. Minor giggling, not just out of the blue, but meaningful giggling from the feeling of tiny fingers poking me over my body. But even that didn’t last long. It evolved once more.
Now electricity flowed through me. It was slow at first, still slight fingers poking, then more and more, it felt like electricity running through my body in rings. And I don’t mean zapping every part of me at the same time. It started at my stomach, and rings of current zipped outward through my arms, legs, and so on, in sync with each other. Slowly, zap, a ring of current ran down my arms legs, et cetera, zap, another one, and then faster, and faster, rings of current ran down my extremities as fast as you can blink, until it became one continuous current zapping my body. I could even hear it!
I had to sit down, so I went to the bed for a nice sit. This was too much to bear, I broke out laughing hysterically, and nearly choking at times I’d laugh so hard. I really have to give my regards to this part of the experience, it was such an amazing feeling that I have tried, and probably failed, to accurately describe in words, if I believed in God, this would be like him making your body his house.
My brother was smiling, I couldn’t tell if it was from the weed, or from him seeing his little brother stoned. I’m assuming a bit of both. He smiled a big wide smile and said, “If you think this is funny, wait until you hear this!” He turned on some Bill Hicks, which I could barely hear from the electricity sounds I heard as the current charged me while I laughed. Bill ranted and raved as the crowd laughed and cheered, and I didn’t care. I could barely hear it anyway. Maybe Gabe thought I was laughing even harder when he turned Bill on, or maybe he knew I didn’t hear it at all from being so stoned. Whatever he thought, I didn’t hear it, and I was too busy with the electricity tickling me.
After awhile, I’m guessing five minutes, maybe ten, it subsided a little bit. I felt around with my hands, the motion was delayed! It was more ‘choppy’ than delayed. Like watching a strobe light, you see someone walking, instead of a stream of movement, you see them in one place, then two feet further, then two feet further. Like that, it was delayed slightly, and felt ‘choppy’ as I described, as well as blocky. It was a very amazing thing to feel, and being so, I couldn’t stop moving around to feel the motion. I’d slide out of my new cushy fold-up chair on the floor, and feel the odd motion, and do it again while rubbing my hands on my pants, or doing the hand washing motions.
Gabe decided we should so something, and we agreed on a movie. The conversation we had was interesting, instead of remembering it fully it echoed in my head, and distorted itself, sometimes forgetting what I said, but never what he said. It was time we went down stairs. So we went down the carpeted stairs, delayed chunky motion making it feel amazing, and I plopped on the couch. He put in Underworld Two, a movie we rented earlier, and we started watching it on his home entertainment center.
The sound was amazing, it felt like it had depth, that it was there in the room with me, surrounding me, and was real. Granted, surround sound never sounds crappy, but this experience made it that much better. I was so busy with the delayed motion, electricity, echoing sounds in my head from us talking, or sitting a glass down or whatever, and stop motion vision made me very unable to focus on the movie, I couldn’t have cared less about it, I was having ‘fun’ in this experience, far too much to care about a movie. But for the sake of experimentation, I decided to see if I could focus on it, and I could, with added intensity, too. I felt like I was there in the movie, getting thrown around by the Werewolves without the harmful pain associated with it.
I also found out I could ‘come down’ from the high, and return to the ‘normal’ world at any time. But I decided not to, to experience the amazing things I was at the time. I closed my eyes, laid back on my couch, and snoozed for a moment, thinking. Shapes and images were very clear and easy to see in my mind at this point.
The shapes and images I experienced weren't unlike what you'd see at night when you look into the darkness and see a neon lights, same idea here, but very vivid and crisp. These shapes were actually 'there', it wasn't just me reflecting upon them and imagining what they'd look like, it was as if they were floating under my eyelids.
I have studied Sacred Geometry, and being so, many of the memories of such shapes appeared, as well as geometrical patterns I've never encountered before. Imagining things took much less effort, as detail seemed to fill in naturally, and any images I might remember, something I stared at and kept in my mind through my life, so on, were very vivid. In typical memories (at least for me), images are fuzzy, and missing detail, shirts will only have color, no words or details unless I remember the specific details of the occasion. But in this experience, it was more like seeing the actual thing, whether I actually remembered the detail, or it was just my mind 'filling' it in, the detail was there.
I swished my head back and fourth on a pillow on the couch, and with the motion delay, it felt like wet sand rubbing against my head, with crashing wave sounds. After focusing, I could feel I was just slowly moving my head back and fourth, and the crunching sound of my hair against the pillow case was causing the sound effects. I easily went into the sand and wave swishing again, and stayed there for awhile. The motion made me feel as if I were ‘waking up’, from this reality, and entering a new one, like I was sleeping in this dream, and was waking up from it into the world, and Marijuana was the key to doing it. Have you ever been in a dream and could feel yourself moving in the real world in your bed? It was like that, but waking from the reality we’re in here and now to a new one. I contemplated a great many things during this time and easily so, being that time seemed to slow down. No matter what I did, everything moved slowly.
I decided since I was so weary at the time that I’d go home. I said my goodbyes to Gabe, put my broken sandals on, and started the journey home. To tell you the truth, the idea of walking home in the dark in a somewhat woody area was much scarier than actually doing it. I was wondering if being stoned would make me hallucinate, it didn’t. The shadows seemed to flow more wildly, and it felt very mystical, but nothing more. The entire three-hundred foot journey wasn’t anything special.
I went inside, shut the door, and walked to my room without a seconds notice. It was late, I was tired, and even though I wanted to stay up, I decided not to, sleep was more important. And I’d probably be able to experience this amazing occurrence again. So I fell asleep with this knowledge. I fell asleep surprisingly easy, perhaps from being so relaxed. Getting poked by millions of fingers simultaneously can do that to you. My dreams were very vivid and wild compared to the normal. And were for days after that.
I woke up the next morning, and felt a little unfocused throughout the day, kind of the aftereffects of smoking Marijuana I assume. It wasn’t something I could pinpoint, it was something very faint, but I was still a little fuzzy from the previous night. I did my stuff, the day passed like any other, I went to bed again. When I woke up the next day I felt refreshed and completely back down to the normal.
New things happen every time I smoke Marijuana, and the stronger the dose, the more interesting it is. On the highest dose I took, everything turned into 2D objects. People turned into puppets, everything else props with strings attached. I might perhaps write about them sometime. But for now, this is the report of my first experience on Marijuana. I hope I’ve given you an idea of my amazing experience, and even though words are more inert than actually experiencing it for yourself, I hope I’ve conveyed the bulk of what happened for you.
All in all, this was an amazing experience for me, and something I think everyone should try at least once. It’s changed the way I look at things forever, and shows that your perception isn’t the only way to see through the looking glass. I hope I’ve given you some information, or perhaps just a good time with this story of my first experience. But anyway, thanks for reading, and may your experiences in life be as incredible as mine have been.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Automatic redirection failed, please go to
./doc/html/index.html
Distributed under the Boost Software License, Version 1.0. (See
www.boost.org/LICENSE_1_0.txt
).


Click on a button under the "Column Visibility" heading to toggle the visibility of a column in the table.


bathymetry_section
Syntax
[bath_section,lon_section,lat_section,time_section] = bathymetry_section(bathy,xcoords,ycoords,xref)
[bath_section,lon_section,lat_section,time_section] = bathymetry_section(bathy,xcoords,ycoords,xref,filled)
Description
[bath_section,lon_section,lat_section] = bathymetry_section(bathy,xcoords,ycoords,xref)
makes a section plot from bathy
, where bathy
is a struct of Smith & Sandwell Global Topography created using bathymetry_extract
. xcoords
(longitude) and ycoords
(latitude) are densified to a 1/60-deg grid before bathymetry is interpolated. The bathymetry section is plotted against xref
; where xref = 'lon'
, 'lat'
,'km'
, or a time vector of length(xcoords). The extracted data is output bath_section
, lon_section
, lat_section
, and time_section
; output vectors are sorted by the selected reference axis (longitude, latitude, or time).
[bath_section,lon_section,lat_section,time_section] = bathymetry_section(bathy,xcoords,ycoords,xref,filled)
allows the bathymetry to be filled in black down to the x-axis (instead of a simple line). Set filled=1
to turn on, filled=0
to turn off.
xcoords
and ycoords
are vectors of coordinates. Rows or columns are fine, and both -180/180 or 0/360 notation are fine.
When xref
is a time vector, it must be of length(xcoords)
and elements of the vector must be datenums. Otherwise set xref = 'lon'
or xref = 'lat'
. Alteratively pass xref = 'km'
to plot in along-track distance, assuming spherical earth.
Example 1
% Add bathymetry to a temperature section plot from the list of coordinates stored in struct cruise:
xref = 'lon';
general_section(cruise,'temperature',xref,'pressure') % plot temperature section
xcoords = cruise.lon;
ycoords = cruise.lat;
filled = 1;
[bathy] = bathymetry_extract(bathymetry_dir,bounding_region(cruise));
bathymetry_section(bathy,xcoords,ycoords,xref,filled)
Example 2
% Plot bathymetry nearest to a list of coordinates. Use latitude as the x-axis:
xref = 'lat';
xcoords = [60 60.1 60.4 60.2 59.9];
ycoords = [10 20.1 15.0 16.1 13.7];
[bathy] = bathymetry_extract(bathymetry_dir,bounding_region([],xcoords,ycoords));
figure
bathymetry_section(bathy,xcoords,ycoords,xref)
Example 3
% Plot bathymetry nearest to a list of coordinates. Use a time as the x-axis:
xref = [737009<PHONE_NUMBER>11<PHONE_NUMBER>13];
xcoords = [60 60.1 60.4 60.2 59.9];
ycoords = [10 20.1 15.0 16.1 13.7];
[bathy] = bathymetry_extract(bathymetry_dir,bounding_region([],xcoords,ycoords));
figure
bathymetry_section(bathy,xcoords,ycoords,xref)


Well, here we go again lol.
I got my EmonTH's today and started playing with one. One of them I want to have monitor the T&H using the onboard DHT22, as well as two DS18b20's. In the Github repository for the EmonTH, I found the 'emonTH_DHT22_dual_DS18B20' sketcha nd thought 'Awesome! All I need to do is change the DS18B20 addresses and of fI go!'. Well, not so much.
That Dual DS18b20 script is apparently based on the 'emonTH_DHT22_DS18B20', which on looking closer seems to not be the one that came on the EmonTH. It seems the original FW is actually 'emonTH_DHT22_DS18B20_RFM69CW'. But when I loaded the Dual DS18b20 sketch up, it didn't work, and the serial output is flaky.
I get this in the output (garbled text and all):
emo‹…: OpenEnergyMonÑ½É¹org
Node: 19 Freq: 433Mhz Network: 210
üTWÖÑ•‘DHT22 temp & humidity sensor
½Õ¹‘DS18B20 External 1
Found DS18B20 External2
emonTH payload:
Battery voltage: 0.60V
External sensor 1: 25.60C
External sensor 2: 25þ
After some more looking and comparing, it seems the hardware or at least coding of the dual ds18b20 sketch is not much like the newer sketch. at the very least, pin assignments seemt o be quite different. I've been trying to 'graft' things over from the 'emonTH_DHT22_dual_DS18B20' sketch to the and so far I haven't been able to get it to compil e'emonTH_DHT22_DS18B20_RFM69CW'
This is the error log from the most recent attempt to compile:
emonTH_DHT22_DS18B20_RFM69CW:65: error: redefinition of 'const int time_between_readings'
emonTH_DHT22_DS18B20_RFM69CW:62: error: 'const int time_between_readings' previously defined here
emonTH_DHT22_DS18B20_RFM69CW.ino: In function 'void setup()':
emonTH_DHT22_DS18B20_RFM69CW:146: error: assignment of read-only variable 'nodeID'
emonTH_DHT22_DS18B20_RFM69CW:147: error: assignment of read-only variable 'nodeID'
emonTH_DHT22_DS18B20_RFM69CW:148: error: assignment of read-only variable 'nodeID'
emonTH_DHT22_DS18B20_RFM69CW:149: error: assignment of read-only variable 'nodeID'
emonTH_DHT22_DS18B20_RFM69CW:156: error: 'struct Payload' has no member named 'temp'
emonTH_DHT22_DS18B20_RFM69CW:161: error: 'struct Payload' has no member named 'temp'
emonTH_DHT22_DS18B20_RFM69CW:238: error: 'numSensors' was not declared in this scope
emonTH_DHT22_DS18B20_RFM69CW:242: error: 'allAddress' was not declared in this scope
emonTH_DHT22_DS18B20_RFM69CW.ino: In function 'void loop()':
emonTH_DHT22_DS18B20_RFM69CW:289: error: 'numSensors' was not declared in this scope
emonTH_DHT22_DS18B20_RFM69CW:289: error: 'allAddress' was not declared in this scope
emonTH_DHT22_DS18B20_RFM69CW:292: error: 'allAddress' was not declared in this scope
emonTH_DHT22_DS18B20_RFM69CW:296: error: 'struct Payload' has no member named 'temp'
emonTH_DHT22_DS18B20_RFM69CW:297: error: 'struct Payload' has no member named 'temp_external'
emonTH_DHT22_DS18B20_RFM69CW:309: error: 'struct Payload' has no member named 'temp'
emonTH_DHT22_DS18B20_RFM69CW:324: error: 'struct Payload' has no member named 'temp_external'
emonTH_DHT22_DS18B20_RFM69CW:325: error: 'struct Payload' has no member named 'temp'
emonTH_DHT22_DS18B20_RFM69CW:332: error: 'struct Payload' has no member named 'temp'
Any tips to get this working right? I'm goign to keep plugging away at it and see if I can get it, but as usual, any help would be apprecaited.
Re: EmonTH & DS18b20's
You need to get rid of those errors starting at the top. Note the error is usually on the line it gives, but sometimes it can be one or more lines before.
Over time, the way things are done has changed in detail, but the objective has remained pretty much the same.
"redefinition of 'const int time_between_readings'" means you've got that twice. That's not legal.
"assignment of read-only variable 'nodeID'" means it's defined as a const (unchangeable) but now you're trying to give it a new value (or maybe the same value again).
"'struct Payload' has no member named 'temp'" means you're referring to something that's not there in the Payload. Either the name has changed or you haven't added it in the definition of Payload.
"....was not declared in this scope" means (probably) it's a new/different name for a quantity, or you've forgotten to declare it. The concept of 'scope' is too long to spell out here, a C / C++ programming tutorial will help you (e.g.http://www.relisoft.com/book/index.htm).
I've had to be fairly general because I don't know what changes you've made to provoke those errors.
Re: EmonTH & DS18b20's
I think I'm going to throw in the towel here. I copied everything that I could see that seemed relevant from the newer sketch to the dual DS18B20 sketch; Changed it to the JeeLib.h rather than RFu_JeeLib.h, added in the dip switch code, changed the nodeID from 'const int' to 'int', and probably a few other things I can't think of, and after fighting through a bunch of compile errors, I was able to get it to compile and write to the TH, but still no go. I actually thought it somehow fried the radio in it as after loading it up, it still wasn't getting to the EmonHUB. Turns out it was the fact that I had change dht payload structure; apparently the payload didn't match to the EmonHUB was ignoring it.
With the attached sketch, I'm still getting a messed up boot over the serial:
emo‹…: OpenEnergyMonÑ½É¹org
Node: 19 Freq: 433Mhz Network: 210
üTWÖÑ•‘DHT22 temp & humidity sensor
Unable to find address for DS18B20 External 1... check hard coded address
Unable to VË‹address for DS18B20 External 2... check hard coded address
emonTH payload:
Battery voltage: 3.20V
External sensor 1: not present
External sensor 2: not preÿ
It just locks up there and never moves again.
Any clues? I feel like an infant trying to build a race motor in trying to piece the two sketches together...
Re: EmonTH & DS18b20's
I too see the corrupted serial output - it's usually caused by printing too much to the serial terminal!
For a start, you don't need the DIP switch code. The switches are there so that people without programmers can change the Node ID. If you've got a programmer, you can define it in the code and not bother with the switches.
Those last 2 error messages say it can't find your 2 sensors, so the sketch is designed to stop there and do nothing more. Having failed to find your sensors, it's doing exactly as it should!
You need to get the two external sensors to respond. Obviously I can't check the addresses of your sensors - did you get the addresses using the "Temperature Search" sketch from here?
(I can't test this as I haven't got a spare sensor.)
Which version of the emonTH do you have - in other words, is
const int DS18B20_PWR = 5;
const int DHT_PWR = 6;
correct for your hardware version? (What you have should be correct for V1.4 & 1.5.)
What happens when it tries to read a sensor is:
1. It turns the power on: digitalWrite(DS18B20_PWR, HIGH);
2. Tells the sensors to initialise: sensors.begin();
3. Sees if a sensor is at the address you give: sensors.getAddress(EXT_SENSOR1, 0);
4. Tell you what it found,
5. Turns the power off: digitalWrite(DS18B20_PWR, LOW);
If you have a multimeter, you could extend the delay after the power is turned on (to give you time to see something!) and check the power supply to the sensor.
Re: EmonTH & DS18b20's
Could the serial corruption be due to the Serial connection being accessed (tested for) before the baud is set ?
debug = Serial ? 1 : 0;
if (!debug)
return;
Serial.begin(9600);
I know what this is trying to do, but does it work 100% ?
Paul
Re: EmonTH & DS18b20's
I have 1.5.2 TH's. It doesn't see the DS sensors because at that time, they were not connected (only the DHT22 was), When connected, it finds them both, but it still doesn't work.. If I 'm not mistaken, the code is written so that if it doesn't find ANY sensors it stops and sleeps forever. t did have the DHT22 attached, so it had a sensor and could coninue.
Re: EmonTH & DS18b20's
Knowing what you don't have connected makes a difference, believe it or not! It does help people to help you if you don't hide material facts like that.
I've converted back to RFu_JeeLib (because my emonTH is that sort) and you're right about it should work with only the DHT22, your sketch seems to work for me like that (notwithstanding the corrupted serial output). When I wrote the last post, I hadn't noticed that "üTWÖÑDHT22 temp & humidity sensor" was the correct number of characters for "Detected DHT22 temp & humidity sensor".
Note that the last output line isn't printed until the next set of readings 5 minutes or so later. You can put Serial.flush() at the end of print_payload() if you wish.
So barring a soldering fault on the radio module (and haven't you had it transmitting, in which case that's improbable), I can't see why the sketch doesn't work for you.
Re: EmonTH & DS18b20's
I wouldn't call it hiding. Forgetting to mention or simply leaving that detail out, sure. Hiding indicates ill intent. :)
Yes, it's been transmitting fine - I loaded up the original sketch last night and it's been happily reporting to the base all night and all day today.
So I missed that the older sketch was polling every 5 minutes - I changed that to 1 and uploaded it; It seems it doesn't hang, but instead does keep polling data (lots of errors in the serial output still though), but it's not transmitting (Or at least it doesn't seem to be). It never checks in with the base. And it may be a coincidence, but it seemed like it may have been somehow interfering with the other TH's. While the modified firmware was running, the other two stayed out of contact a lot longer than they usually do. They normally don't get more than 65 seconds out or so. With his one up, they were approaching 90-180 seconds out.
Re: EmonTH & DS18b20's
You do have a 433 MHz network?
And you have got the payload set up correctly - 5 signed integers - in emonHub?
Bearing in mind I'm using a different library, I can't see anything that might mean that this one is blocking the others, and mine certainly is only transmitting when it's expected. (With 'minutes' set to 5, it actually waited 4' 45" between transmissions.)
[Paul:
makes no difference. The docs say all but the Leonardo always return true, so I guess "Serial" for the Uno does nothing except return anyway.]
Re: EmonTH & DS18b20's
I too see the corrupted serial output - it's usually caused by printing too much to the serial terminal!
That sounds bogus to me. How much is "too much"?
Note that the last output line isn't printed until the next set of readings 5 minutes or so later. You can put Serial.flush() at the end of print_payload() if you wish.
If you do, does that cure the data corruption problem?
It sounds like you might be putting the CPU to sleep while it's busy transmitting on the UART. If that's not snyc'd up with the current byte completing I'd expect you'd see the corruption you're seeing.
Re: EmonTH & DS18b20's
Download the sketch and try it yourself - it's attached to the 3rd post in this thread.
Re: EmonTH & DS18b20's
I don't have any suitable hardware to run it on, and I assume it would need quite a bit of modification to run on anything I do have. But I repeat my question for anyone who does:
Does calling Serial.flush() before going to sleep cure the data corruption problem?
Re: EmonTH & DS18b20's
"Does calling Serial.flush() before going to sleep cure the data corruption problem?"
No, looking at the printout, the major corruption is the first that is sent in setup( ). Everything in loop( ) is OK for me (but not for Dave, he's using the expanded JeeLib whereas I'm using RFu_JeeLib).
I'm not familiar with the way the compiler arranges the code and data, but in my experience string corruption is the first symptom of running out of memory. I do note that the print call in question is inside a function, so that's a bit more stack used than normal.
[EDIT] "Does calling Serial.flush() before going to sleep cure the data corruption problem?"
That triggered a thought. No it doesn't, but calling it after each block of printing does cure the corruption problem. Whether that's after printing or before it does anything with the OneWire bus, I'm not sure.
[Edit 2]
Attached the file with Serial.flush(); inserted.
Re: EmonTH & DS18b20's
Is it possible that it actually is transmitting data, but there's corruption there too, causing the Base to ignore the packets?
Re: EmonTH & DS18b20's
I didn't see any - but I didn't look past the 1st 6 bytes.
Re: EmonTH & DS18b20's
Hmm. Well, I don't know where to go from here. I'm an IT administrator by day, am proficient in networking, Windows server OSes and functions, virtualization, security, firewalls, etc, but I cant grasp the arduino coding. I started trying to play with PIC micro controllers a few years ago, and no matter what I read, I couldn't grasp that. Without a walk through tutorial, I couldn't even make a LED blink. About a year ago, addressable LED Pixels & arduinos caught my attention, but as with the PICs, I just can't grasp it no matter what I read. I haven't even been able to figure out how to make a pixel blink or change colors. The only way I can do anything with the Aduinos is if I find something out on the web that'll do what I want.
The last arduino/Atmega 328p based project I attempted I essentially tossed in the bin because as soon as I deviated from the original creators coding in the slightest degree, it fell apart like a hose of cards. I still have the PCBs I designed and had made, as the tep nodes work well as standalone units, but the intent was to transmit back to a RPi (by way of an arduino) and that part just kept failing miserably.
If it's REAL simple, like on the TX, changing the calibration values for the CTs or its address, that I can get, but when it comes to how all the code works, I'm totally lost. The copy & pasting I've been doing is just taking WAGs and see what happens. I've been able to clear up errors that prevents it from compiling with the help of google, but it doesn't help me understand how it all works, and as evidenced by my attempts with the TX & this, it doesn't mean it WILL work. So this makes for two emon related things that I've tried to customize and make and totally failed at (the first being hardcoding DS18b20 addresses into the TX).
It's so frustrating. The Arduinos (and arduino based things such as the emon products) are so cool and flexible, but despite my tech background, I can't grasp what is arguably (by some) simpler than the things I do on a daily basis. I guess everyone has their niche, and this just isn't mine.
Re: EmonTH & DS18b20's
No, looking at the printout, the major corruption is the first that is sent in setup( )
But print_welcome_message() enqueues a bunch of strings to the serial port and immediately calls dodelay() right? In fact there are calls to dodelay() all over the place without any regard for what's in the output queue.
Did you try a single call to Serial.flush() inside dodelay(), before it does anything else? That would ensure that you never put the CPU to sleep right while it's trying to clock out the 10-bits of a UART byte.
I'm not familiar with the way the compiler arranges the code and data,
The code lives in flash, and is executed from flash, so you can't corrupt that unless you try really hard (like the bootloader does).
.data lives below .bss, so if the stack is trampling over your strings it's probably already taken out your static variables on the way down.
Re: EmonTH & DS18b20's
I'm only trying by remote control to debug a sketch that isn't written the way I might have done it in the first place, using (slightly) different hardware! The reason I put the flush() in 'everywhere' is the Arduino documentation is wonderfully unclear about what happens when the serial port isn't open (debug became false), so I put it in only where debug is true. dodelay( ) appears to be everywhere, but in fact it misses one!
Dave: I've managed networks in the past, so I understand where you're coming from. You think big. In this area, you need to think small! I'll do my best to steer you through, assuming that's what you'd want? It WILL work - together we'll battle it into submission.
I'm using an emonGLCD running a 'Debugger' sketch - it just receives radio packets and displays them as bytes. That's showing exactly the same as the serial display, so I'm reasonably confident that it's not sending rubbish (at least not now):
In the photo, bytes 0&1 are 0 0 (battery voltage)
bytes 2&3 are 8d 02 = 653 (= 65.3 * 10 = humidity)
bytes 4&5 are c3 00 = 195 (=19.5 * 10 = internal temp)
the rest (external sensors) are zero.
If you've loaded that file and you're still having trouble at this point, what does your emonhub.conf file say about Node 20?
You need it to be looking for either 5 signed integers, or the default ("datacode = " instead of "datacodes = ...", meaning any number of signed integers)
Re: EmonTH & DS18b20's
Robert, what I had in the emonhub config with the changed code for that TH was:
nodename = emonTH_2
firmware = emonTH_DHT22_DS18B20.ino
hardware = emonTH_(Node_ID_Switch_DIP1:ON_DIP2:OFF)
[[[rx]]]
names = battery, humidity, internalTemp, externalTemp1, externalTemp2
datacode = h
scales = 0.1,0.1,0.1,0.1,0.1
units = V,%,C,C,C
Essentially identical to what you posted other than the 'externalTemp1' and the firmware name, which is how the sensors are listed in the firmware, although I'm assuming those don't really matter if they match as that info isn't actually transmitted.
My question now is which would really be the better approach? Trying to modify the 'emonTH_DHT22_dual_DS18B20' to work on the emonTH 1.5.2 that should be running the 'emonTH_DHT22_DS18B20_RFM69CW' code, or modifying the 'emonTH_DHT22_DS18B20_RFM69CW' code to make the multiple DS18b20's work on that? I'm kind of thinking the latter would be the better approach. This way we're starting out with code that is meant for that exact hardware and works as it should, rather than trying to take the older code that does things in different ways and modifying it to work on the newer hardware - Obviously, I was able to get it to doing something, but for example, the dip switches didn't seem to be functioning - Yes, I know they're not required, but why not have them working?
Re: EmonTH & DS18b20's
"datacode = h" will accept any number of signed integers, whereas I'd specified the exact number. As you say, both versions are essentially equivalent so it doesn't matter which one you use.
Which sketch we start with also shouldn't matter, we ought to end up with something that works either way. Have you had chance to try the "mod2" version that I'd changed? Without the external sensors, that is now behaving properly (for me at least but bear in mind I have a V1.4 emonTH, so it's using a different JeeLib).
I'd like you to try that one, but long-term we'll go with later version if that's which you prefer.
The DIP switches aren't mission-critical, we can worry about those once the important bit is working.
Re: EmonTH & DS18b20's
I just loaded that one up and the serial output is now clear, however, nothing is getting to the base.
Interestingly, it seems like it doesn't care about hte DS18b20 addresses - When I initially loaded the sketch, it had one correct address and one incorrect one (one of the sensors I was using earlier was still on my desk, the other got placed somewhere, so I got the address of another one and hooked it up). Witht he wrong address, it still was giving me a temp reading off both, not complaining of a missing address or anything. I'm not sure if that's supposed to work that way...
emonTH : OpenEnergyMonitor.org
Node: 20 Freq: 433MHz Network: 210
Detected DHT22 temp & humidity sensor
Found DS18B20 External 1
Found DS18B20 External 2
emonTH payload:
Battery voltage: 0.40V
External sensor 1: 24.80C
External sensor 2: 24.60C
Internal DHT22 temperature: 25.00C, Humidity: 36.90%
[[20]]
nodename = emonTH_2
firmware = emonTH_DHT22_DS18B20.ino
hardware = emonTH_(Node_ID_Switch_DIP1:ON_DIP2:OFF)
[[[rx]]]
names = battery, humidity, internalTemp, externalTemp1, externalTemp2
datacode = h
scales = 0.1,0.1,0.1,0.1,0.1
units = V,%,C,C,C
Re: EmonTH & DS18b20's
My emonPi isn't receiving either, but I haven't yet had time to find out why. The emonTH is certainly transmitting the right things, but I've not has the Pi long and I haven't had time to do much with it.
Re: EmonTH & DS18b20's
Well, with the attached Mod4 sketch, I've gotten *somewhere*. I get sane text in the serial output, and I get *some* data on the base.
01
emonTH - Firmware V1.6.1
OpenEnergyMonitor.org
RFM69CW Init>
Node: 20 Freq: 433Mhz Network: 210
Detected DHT22 temp & humidity sesnor
Detected 2 DS18B20
DS18B20 and DHT22 found, assuming DS18B20 is external sensor
emonTH payload:
Battery voltage: 3.20V
External sensor 1: not present
External sensor 2: not present
Internal DHT22 temperature: 25.70C, Humidity: 34.50%
I don't know what the '01' in the first line is about, and for some reason I haven't figured out, it's saying that the external sensors are both not present in the serial output, although it's sending data back to the base for the DHT22 and one of the DS18b20's.
With the 'Mod5' sketch, after probably an hour of messing around and resolving errors, I got it to compile, and uploaded it. The serial output is broken though:
01
emonTH - Firmware V1.6.1
OpenEnergyMonitor.org
RFM69CW Init>
Node: 20 Freq: 433Mhz Network: 210
Detected DHT22 temp & humidity sesnor
Detected 2 DS18B20
DS18B20 and DHT22 found, assuming DS18B20 is external sensor
emonTH payload:
Battery voltage: 3.20V
External sensor 1: not present
External sensor 2: not preÿ¹Ñ5
Internal DHT22 temperature: 26.60C, Humidity: 34.40%
emonTH payload:
Battery voltage: 3.20V
External sensor 1: not present
External sensor 2: not preÿ¹Ñ5
Internal DHT22 temperature: 26.60C, Humidity: 34.90%
But it IS transmitting some data over to the base - it's sending battery and DHT22 readings over, but no DS18b20 readings...
Edit: I looked at the one that you added 'Serial.flush();' to and added that in all the same places in the 'Mod5' sketch, and now have sane serial output:
01
emonTH - Firmware V1.6.1
OpenEnergyMonitor.org
RFM69CW Init>
Node: 20 Freq: 433Mhz Network: 210
Detected DHT22 temp & humidity sesnor
Detected 2 DS18B20
DS18B20 and DHT22 found, assuming DS18B20 is external sensor
emonTH payload:
Battery voltage: 3.20V
External sensor 1: not present
External sensor 2: not present
Internal DHT22 temperature: 26.30C, Humidity: 35.90%
Re: EmonTH & DS18b20's
Holy Mackerel! I may have actually gotten it!
With the attached 'Mod8' sketch, I am getting mostly sane serial output, and it's sending all the data over to the base:
01
emonTH - Firmware V1.6.1
OpenEnergyMonitor.org
RFM69CW Init>
Node: 20 Freq: 433Mhz Network: 210
üTWÖÑ•‘DHT22 temp & humidity sensor
Found DS18B20 External 1
Found DS18B20 External 2
emonTH payload:
Battery voltage: 3.20V
External sensor 1: 25.50C
External sensor 2: 25.10C
Internal DHT22 temperature: 25.60C, Humidity: 36.90%
emonTH payload:
Battery voltage: 3.20V
External sensor 1: 31.70C
External sensor 2: 25.00C
Internal DHT22 temperature: 25.60C, Humidity: 36.80%
With the 'Mod7' sketch, I got similar results, except it wasn't respecting the hardcoded addresses for the DS18b20s (they were swapped), so took a guess and commented out
EXT_SENSOR1_PRESENT = sensors.getAddress(EXT_SENSOR1, 0);
EXT_SENSOR2_PRESENT = sensors.getAddress(EXT_SENSOR2, 1);
which gave me 'Mod8' and reporting the sensors in their proper places. I don't know why 'Detected DHT22 temp & humidity sensor; is partially garbled - I tried adding 'Serial.flush();' in a few places that 'seemed' right, but no change.
Re: EmonTH & DS18b20's
Ok, did some more testing - it seems that the hardcoded addresses in the sketch aren't doing anything. I added a third sensor, and all the displays were right, but I knocked out one of the other two sensors when connecting the third, and it was still showing 1 & 2, with 3 not connected, but it was either 1 or 2 and three that were connected. I also note that if I change one to a bogus address, it still brings up data for all three sensors. It doesn't complain about not being able to find that address. They also arent' in the order that they are specified, so it would seem that while I'm getting data, I'm still missing something that actually make suse of the hardcoded addresses.
Re: EmonTH & DS18b20's
I'm looking only at your ...mod8 sketch. I can't see why it should be ignoring the hardcoded addresses - IF the library is doing what the comments claim.
In initialise_DS18B20(), it calls sensors.getAddress(EXT_SENSOR1, 1) which says it checks that the sensor in question is at that address. But the name of the method worries me. Why is it called "getAddress" and not "checkAddress" or "proveAddress" if it's doing what it claims? More to the point, it uses the OneWire::search method, and that searches for the next available device, and THAT overwrites the address you gave it.
Then in take_ds18b20_reading () it does temp1=(sensors.getTempC(EXT_SENSOR1)). But if that sensor address "EXT_SENSOR1" was changed by getAddress, the address you set at the top has been overwritten, which would explain what you're seeing. So I think the comment that explains what the method does is misleading.
That's how I read the code. The way to prove this would be to set a completely bogus address, then print it immediately before and after the call to getAddress(). But I think that's beyond your knowledge at present.
I'll try to get hold of a couple of DS18B20s so that I can experiment.
But I think you shouldn't be using the RFM69 sketch as your starting point, because it's going to need a lot more effort to change that to use hard-coded addresses than it will be to change the older sketch to use the RFM69CW and the DIP switches.
Re: EmonTH & DS18b20's
How your stating it is pretty muck how I read it too. However, I also posted this over on the arduino forums, and in short, I'm told that 'getAddress changes value of EXT_SENSORx' is the problem - 'sensors.getAddress(EXT_SENSOR1, 0) does not check if the sensor whose address is in EXT_SENSOR1 is present. It finds the first sensor on the bus (i.e. at index 0) and stores its address in EXT_SENSOR1 thereby overwriting what you had initialized it to.' That acutaully makes sense... They linked to code here that they say does work that way - it looks largely identical to the Emon code, except for the lack of the 'sensors.getAddress(EXT_SENSOR1, 0)'.
Later on, I'll load the sketch in tha tlink up into one of my Arduinos and see what I get from it.
Re: EmonTH & DS18b20's
So I tried out the sketch in the linked article, and it worked 100%. With the proper addresses, it pulled readings from the proper sensors, and if I put in a bogus address, it gave me a failure for that snesor.
So it would seem the answer is to remove the following lines and work from ther eto get it to work:
EXT_SENSOR1_PRESENT = sensors.getAddress(EXT_SENSOR1, 0);
EXT_SENSOR2_PRESENT = sensors.getAddress(EXT_SENSOR2, 1);
EXT_SENSOR1_PRESENT = EXT_SENSOR1_PRESENT ? EXT_SENSOR1_PRESENT : sensors.getAddress(EXT_SENSOR1, 1);
EXT_SENSOR2_PRESENT = EXT_SENSOR2_PRESENT ? EXT_SENSOR2_PRESENT : sensors.getAddress(EXT_SENSOR2, 0);
The question there is how do we get it to detect the presence of the sensors? Or maybe we don't - for these purposes, personally, I'm fine if we don't do a 'detect the sensors and adjust' the way it's doing... If I say there are sensors 1, 2 & 3 and it only finds 1 & 3, I'm fine with it continuing on and guiving no data...
Re: EmonTH & DS18b20's
What "they" were trying to do (I think) was to put the sensors in the same places in the array each time. I haven't studied the Dallas library in great detail, but from what I've managed to work out so far, the manufacturer's algorithm for searching addresses involves querying the bus with partial addresses and seeing what responds, and because of the way that addresses are transmitted, the addresses get recognised in "reverse order", i.e. as I think I said some way up this thread, they are recognised and sorted Least Significant Bit first. So when written MSB first, the addresses appear to be in random order when in fact they're not, and given the correct sorting algorithm, the order can be predicted. I don't see anything in that sketch (the one that uses getAddress) that will prevent the order changing when a sensor fails to respond. So your hard-coded addresses and getAddress( ) commented out does what you want.
What might work for you is (quote from DallasTemperature.cpp):
// attempt to determine if the device at the given address is connected to the bus
bool DallasTemperature::isConnected(uint8_t* deviceAddress)
I assume it returns true if the sensor is connected. You could try
if (sensors.isConnected(EXT_SENSOR1))
{
Serial.println("Sensor 1 present");
// and/or whatever you want in here to read the temperature and send it
}
else
{
Serial.println("Sensor 1 not found");
// and/or send an identifiable invalid value
}
or something like that, either to tell you or to send a recognisable invalid value that you can deal with as you want.
Re: EmonTH & DS18b20's
I think I got it.... With the attached sketch, I get the following:
01
emonTH - Firmware V1.6.1
OpenEnergyMonitor.org
RFM69CW Init>
Node: 20 Freq: 433Mhz Network: 210
üTWÖÑ•‘DHT22 temp & humidity sensor
Unable to find address for DS18B20 External 1... check hard coded address
Unable to find address for DS18B20 External 2... check hard coded address
Unable to find address for DS18B20 External 3... check hard coded address
emonTH payload:
Battery voltage: 0.00V
External sensor 1: 23.80C
External sensor 2: 24.20C
External sensor 3: 23.70C
Internal DHT22 temperature: 24.00C, Humidity: 41.90%
emonTH payload:
Battery voltage: 0.00V
External sensor 1: 23.80C
External sensor 2: 30.00C
External sensor 3: 23.70C
Internal DHT22 temperature: 24.00C, Humidity: 41.60%
And it's sending the valid data over to EmonCMS. I'll have to do a little more experimentation, but it seems to be working right.
Oddly, with the check for address in the beginning, with the valid addresses, it says it can't find it, but with an INVALID address, it says it found the sensor. But the expected sensors are respinding. When I put in an invalid address, that sensor in the list reads '0'. I had moved the 'setResolution' up into 'void setup' as it is in that other tutorial, but I was getting '85' from all three DS18b20's, which I believe has somethign to do with powerup. I moved the 'setResolution' back down into the 'void take_ds18b20_reading' section and it then returned valid values.
The sketch is a filthy train wreck, in need of much cleaning, but it seems to be working. It might be nice to get the search in the beginning working, but honestly, it it can't be done with the way the hardcoding is set up, I can certainly live with that.
Edit: After a little testing, the addressing is definitely working. I took three different temperatures of water (Hot, warm, cold) and dropped one of each of the three probes in each one (1 in hot, 2 in warm, 3 in cold) and then moved which external sensor was each address and the readings moved around as expected.


A script brings together tools to do one or more of those things.
To use a basic Python environment in a Jupyter notebook for free go here: https://jupyter.org/try and select "Try Classic Notebook".


Already registered? Sign In
See all Products
$620.87
$899.75
$599.00
$679.87
$849.99
$599.99
$799.99
$899.99


RetroArch Playlist Editor
v1.0
by
Marc Robledo
See on GitHub
Donate
New playlist
Add content
Save playlist
Tweak
Set core path
0
elements selected
Set content path
Set core
Remove
Name
Filename
Core
CRC32
Drag and drop content/playlist here
Clean GoodTools names
Remove dupes
Sort items
Accept
Cancel
Playlist name
Warning: core path is invalid or is missing. All content will be set to DETECT core.
Save
Fix core path
Cancel
Core path:
Set to default:
Windows
Mac
Accept
Cancel
Content path:
Accept
Cancel
Content name:
Rename
Cancel
Set core:
Accept
Set core path
Cancel


{% extends "layout_unbranded.html" %} {% block pageTitle %} Check in failed {% endblock %} {% block content %}
We can't find an appointment using these details.
If your details are correct and you're sure you have a meeting today, talk to a member of staff.


LitecoinZ Core is the reference node and wallet for LitecoinZ. It includes all features of the network and is based on Bitcoin Core, the original Bitcoin software. Being a full node, it must download the entire LitecoinZ blockchain before being able to make new transactions.
| Supported Platforms | Full Node | Immediately Usable | Shielded Addresses | Open Source |
|---|---|---|---|---|
| Windows, Linux, Mac, Arm (RaspberryPi) |
| Supported Platforms | Windows, Linux, Mac, Arm (RaspberryPi) |
|---|---|
| Full Node | |
| Immediately Usable | |
| Shielded Addresses | |
| Open Source |
The LitecoinZ web wallet is a quick way to create or access a wallet. The web wallet lacks many features of the full node, but does offer availability for any device with a browser and does not need to download the blockchain before use.
| Supported Platforms | Full Node | Immediately Usable | Shielded Addresses | Open Source |
|---|---|---|---|---|
| Browser |
| Supported Platforms | Browser |
|---|---|
| Full Node | |
| Immediately Usable | |
| Shielded Addresses | |
| Open Source |
The LitecoinZ android wallet is a simple and fast way to access LitecoinZ from your android phone. The android wallet lacks many features of the full node, but does not need to download the blockchain before use.
| Supported Platforms | Full Node | Immediately Usable | Shielded Addresses | Open Source |
|---|---|---|---|---|
| Android |
| Supported Platforms | Android |
|---|---|
| Full Node | |
| Immediately Usable | |
| Shielded Addresses | |
| Open Source |
Hebe Wallet is a mobile and browser-based wallet that supports LitecoinZ and many other cryptocurrencies and tokens.
| Supported Platforms | Full Node | Immediately Usable | Shielded Addresses | Open Source |
|---|---|---|---|---|
| iOS, Android, Browser |
| Supported Platforms | Windows, Linux, Mac, Arm (RaspberryPi) |
|---|---|
| Full Node | |
| Immediately Usable | |
| Shielded Addresses | |
| Open Source |
Vidulum.App is a mobile and browser-based wallet that supports LitecoinZ and many other cryptocurrencies.
| Supported Platforms | Full Node | Immediately Usable | Shielded Addresses | Open Source |
|---|---|---|---|---|
| iOS, Android, Browser |
| Supported Platforms | Windows, Linux, Mac, Arm (RaspberryPi) |
|---|---|
| Full Node | |
| Immediately Usable | |
| Shielded Addresses | |
| Open Source |


Roles & Permissions are not complete.
There must be at least one (1) role assigned to each permission.
3. Preview Information
This is how your content will appear to the general public.
Can Post Comments
- No Roles assigned.
- {{ role }}
Can Vet Comments
- No Roles assigned.
- {{ role }}
Can Download Comments
- No Roles assigned.
- {{ role }}


Kaldi with TensorFlow Neural Net
Please find the documentation page here
Installation
- Download and install TensorFlow.
- Download and install Kaldi
- Modify the config/config_*.cfg for your setup, specifically the directories
Code overview
main.py: Goes through the neural net training procedure, look at the config files in the config directory to modify the settings
- Compute the features of training and testing set for GMM and DNN
- Train the monophone GMM with kaldi and get alignments
- Train the triphone GMM with kaldi and get alignments
- train the LDA+MLLT GMM with kaldi and get alignments
- Train the neural net with TensorFlow with the alignments as targets
- Get the state pseudo-likelihoods of the testing set using the neural net
- Decode the testing set with Kaldi using the state pseudo-likelihoods and report the results
features/feat.py: Does feature computation currently supports:
features/prepare_data.py: data prep functionality
- compute the features for all the utterances
- compute mean and variance statistics for normalisation
- shuffle the examples for mini-batch training
io/ark.py: read and write ark format
- defines a reader class for ark format
- defines a writer class for ark format
io/batdispenser.py: reading and formatting features
- defines a class that can read features and do some processing like splicing and cmvn
- defines a class that can create batches of data
neural networks/nnet.py: neural network class for a kaldi-style neural network
- train: train the neural net
- decode: compute pseudo-likelihood
neural networks/nnetgraph.py: creating tensorflow graph structures
- defines a abstract class for a neural network graph
- defines a class for a deep neural network, inherits from the neural network graph class
- defines a class for the training environment for a neural network
- defines a class for the decoding environment of a neural network
neural networks/nnetlayer.py: layers for a neural network
- defines a feed forward fully connected layer
If you have a question or remark about the code or if you would like to contribute please mail me at vince.nosp@m.nt.r.nosp@m.enken.nosp@m.s@es.nosp@m.at.ku.nosp@m.leuv.nosp@m.en.be


Write/Speak/Code is on a mission to increase the visibility and leadership of women and non-binary coders through thought leadership, conference speaking, open source contributions, career development, personal growth and self-care.
Data scientists, software engineers, eBook publishers, designers, VPs of Engineering —and more!— have taken their career to the next level at our conferences, events, and local chapters across the US.
Women and non-binary coders, let's take your career to the next level! Join us in NYC from August 1-4th, for 4 days designed to polish your skills and fully own your expertise through writing, speaking, and open source. Learn more
Learn to understand your expertise, own your expertise, and present yourself and your accomplishments with confidence with other fellow women and non-binary coders. We will convert our expertise into thought leadership, conference speaking, and open source contributing.
We provide breakfast and lunch for all dietary needs and ensure the location is wheelchair accessible. We also provide nursing rooms, childcare services, CART/ASL services, and any other accessibility needs, as requested. Our upcoming events are:
Write/Speak/Code holds meetups and full-day workshops in cities across the country, including Chicago, Los Angeles, New York City, and the San Francisco Bay Area.
Explore chapter events
For great employers, sponsorship is the most effective way to recruit talented, driven women and non-binary coders to fill key technical positions and demonstrate your commitment to the professional development of people of underrepresented genders at your organization. Write/Speak/Code is a 501c3 nonprofit. Contact<EMAIL_ADDRESS>to learn more.
read our 2018 Prospectus
GitHub is how people build software. Millions of individuals and organizations around the world use GitHub to discover, share, and collaborate on software—from games and experiments to popular frameworks and leading applications. Together, we're defining how software is built today.
Whether you use GitHub.com or GitHub Enterprise on your own servers, you can access one of the world's largest developer communities to build software in the way that works best for you. Choose your deployment option and integrate your favorite third party tools into a powerful, collaborative workflow.
The New York Times Company is a global media organization dedicated to enhancing society by creating, collecting and distributing high-quality news and information. The Company includes The New York Times, NYTimes.com and related properties. It is known globally for excellence in its journalism, and innovation in its print and digital storytelling and its business model. Follow news about the company at @NYTimesPR.
Our events and online spaces are dedicated to providing a harassment-free experience for everyone, regardless of gender and gender identity, age, sexual orientation, disability, physical appearance, body size, race, or religion (or lack thereof). We do not tolerate harassment of participants in any form. Sexual language and imagery is not appropriate at any point. Participants violating these rules may be sanctioned or expelled at the discretion of the organizers.
Read the full Code of Conduct
Feeling so empowered after #wsc2017conf in PDX that I just submitted my first CFP! Thanks a million @WriteSpeakCode 😁💖
— Rachael Berecka (@das_Rachaelchen) August 26, 2017
True Story. This conference changed my life and is the reason why I now write and speak about code. And Im only one of many! @WriteSpeakCode https://t.co/WZUxrkwcud
— Angie Jones (@techgirl1908) November 26, 2016
thank u #wsc2017conf for consistently being the best event for women in software 🙏 I have met so many inspiring bad ass women this week 😍
— Alex Qin (@alexqin) August 26, 2017
Is too much inspiration a thing? #wsc2017conf inspired me to write again so much so that I have written 3 new blog posts in the last 4 days
— Michelle Levine (@MichelleJLevine) August 26, 2017
@WriteSpeakCode is legit one of the best conferences I've ever attended 😂🙌🏾💁🏽 #wsc2016conf #WeLoveColor 🎨 pic.twitter.com/c2Ga7DMVEY
— Debbie-jean Lemonte (@TheLocdBella) June 18, 2016
THE RUMORS ARE TRUE: @WriteSpeakCode is an amazing conference. Super hands-on, inclusive, empowering. #wsc2016conf
— Siena (@sienatime) June 15, 2016
from the moment I wrote my first line of code over a decade ago, I've yearned for a sense of belonging & community I found at #wsc2017conf
— . (@emmatcu) August 26, 2017
glad to see @WriteSpeakCode organizers are easily identifiable by their shiny purple sashes. CRUCIAL to enforce a code of conduct!
— Cat (@cfarm) June 17, 2016
Subscribe to our mailing list to receive updates


Entrapment (1999)
A Film Review by Mark O'Hara
Visit Online Film Critics Society at http://www.ofcs.org
As I watched "Entrapment" I found myself wondering if Sean Connery could estimate the quality of a script he was shooting.
If he can, he surely realized this one was mediocre.
It's the story of Robert MacDougal (Sean Connery), called "Mac." He's a world-class art thief, and the insurance company that covers the stolen works is very upset. Waverly Insurance employs an expert, Gin (Catherine Zeta-Jones) to analyze his methods. Overzealous, Gin is granted permission actually to track down Mac, in London. The old and wily thief is soon on to her, but she convinces Mac she is a sort of double agent, a thief herself only posing as an expert in solving crimes by dismantling them. Soon she and Mac land at his remote castle on the coast of Britain, where they rehearse the methodology of this particular crime - the stealing of a golden Chinese mask. With daring skill they break into an enormous manor, and Gin begins her practiced body movements to elude the lasers that would trip the alarm. Watch these scenes for Zeta-Jones doing her martial arts of elusiveness, bending and twisting along what seems to be an open floor.
After this caper is successful, the control of the criminal duo shifts. Now Gin seems to be the one manipulating "Mac," and as they travel to Malaysia to engineer the scheme she has created, a romance clearly begins to develop. The climax of the film is a high-tech bank heist on the crack of the new millenium, and indeed the high points of the story include the actual robberies I've described.
But there are too many low points for the film to take its place as anything more than a minor espionage flick. Connery is a masterful actor, and Zeta-Jones holds her own opposite him, except during occasional bouts of adolescent anger. What these players are working with is not enough help. The cuts are often too fast, and director Jon Amiel does not allow adequate time for the development either of character or of meaningful relationships. Will Patton is miscast as the honcho from Waverly insurance: he's given a darkened mustache and Hispanic name, Hector Cruz. Ving Rhames sketches his character - Thibadeaux, apparently a right-hand man for Mac - with authority and menace, a performance that is effective but perhaps too easy for the physically imposing actor. (Someone, please cast this wonderful presence against type!) The film does benefit from changes in scenery, its international locales lending variety and at times stunning beauty. But are these elements enough to salvage a film that tries to draw its strength from the oldest tricks in the spy/thief genre? And yes, we know early what's in store for us - as many turnabouts of identity as can be packed into a plot, some of them downright red herrings.
"Entrapment," a solid one-word title, is passable entertainment, but I would suggest seeing it as we did, in a second-run theater. You'll like the gadgets and the figurative meanings that reflect about the screen like deflected lasers. But you'll also sense the places responsible for mediocrity
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Important Notices
Disclaimer of Warranty
CAPE-OPEN documents and publications include software in the form of sample code. Any such software described or provided by CAPE-OPEN --- in whatever form --- is provided "as-is" without warranty of any kind. CAPE-OPEN and its partners and suppliers disclaim any warranties including without limitation an implied warrant or fitness for a particular purpose. The entire risk arising out of the use or performance of any sample code --- or any other software described by the CAPE-OPEN project --- remains with you.
Copyright © 1999 CAPE-OPEN and project partners and/or suppliers.
All rights are reserved unless specifically stated otherwise. CAPE-OPEN is a collaborative research project established under BE 3512 «Industrial and Materials Technologies» (Brite-EuRam III), reference BRPR-CT96-0293.
Trademark Usage
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in CAPE-OPEN publications, and the authors are aware of a trademark claim, the designations have been printed in caps or initial caps.
Microsoft, Microsoft Word, Visual Basic, Visual C++, Fortran Powerstation, Visual Basic for Applications, Internet Explorer, Front Page, Windows and Windows NT are registered trademarks and ActiveX is a trademark of Microsoft Corporation.
Netscape Navigator is a registered trademark of Netscape Corporation.
Adobe Acrobat is a registered trademark of Adobe Corporation.
Rose is a registered trademark of Rational Corporation.
VisiBroker is a registered trademark of Inprise Corporation.
Paint Shop Pro is a registered trademark of Jasc Corporation.
DocExpress is a registered trademark of ATA Corporation.
Java, the Java Coffee Cup logo, JavaSoft, JavaBeans, HotJava, HotJava Views, Java WorkShop, Visual Java, JDK and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc.
UNIX is a registered trademark exclusively licensed through X/Open Company, Ltd.


So, I was trying to improve Commentary with respect to its HTML processing. I was parsing the incoming page with tidy, reading it with ElementTree and then writing it back out. But tidy was leaving some entities in there that Expat didn't understand, and ElementTree was outputing XML that doesn't look like HTML. I think I have it fixed (maybe), but it was all much harder than it should have been.
I first started with minidom, (or PyXML?) because I wanted to implement the same algorithms in Javascript, so I preferred a DOM interface. This worked for a little while, but from what I can tell minidom is just really really broken. getElementById didn't work, and after looking at the code it seemed like it couldn't work given the way I was creating the DOM; which was the only way I saw to create the DOM -- there's basically no useful documentation for that module, which is a problem when it doesn't work as claimed. Then later I was getting a problem with inserting nodes, because you can't insert a document-type node (only elements and text nodes and whatnot)... except from what I could tell of the source it was just utterly and completely wrong, and was testing the node type against ELEMENT_TYPE. These are such glaringly obvious errors that I didn't know what to make of them; did I completely not understand what I was doing? Is this code just completely abandoned and unloved?
Anyway, I felt okay about the algorithm by that time anyway, worked around the problems, and then reimplemented using ElementTree. This introduced some problems, because ElementTree doesn't use a model much like the DOM. In the DOM every node knows about its siblings, parent, etc. Elements in ElementTree don't know about any of that (which is conventional in Python and most languages, that you not know about your container). But that was inconvenient, so I had to make a wrapper to give me access to that information.
Then there's the issue that there's no code I know of that knows how to parse HTML (HTMLParser does, of course, but not in a useful way -- it doesn't create a tree). So everyone uses Tidy to normalize their code to XHTML, which works but feels really sloppy. HTML is parseable; in this case, I really only wanted to parse well-formed HTML anyway. Then, finally, there's builtin way to serialize ElementTree to HTML from what I can find. There's some hints, but they still leave you with empty elements like , which browsers do not like. I had to clone a write method in ElementTree and make edits to it.
I have to say, Javascript and the DOM in the browsers are much easier to use for HTML processing, even taking into account the fact that it's Javascript.
When you run tidy on the way in, you need to use "-n" (numeric entities) and "-asxml". ElementTree's XML serializer isn't well suited for a tag soup parser (HTML needs special treatment of many tags), so you need to grab a HTML serializer for ET. There's a nice one in Kid.
Alternatively, you can use tidy on the way out to; feeding the XML through "tidy -xml" should work.
I looked at Kid's, and was a little confused by the iterating over events/tokens that it used. I wasn't really clear what that internal data structure was. I ended up creating an ElementTree subclass HTMLTree in dumbpath. It might leave out things that Kid does, but it mostly makes sure that empty elements don't get /> and that all other elements use both opening and closing tags. And it strips namespaces.
An HTML serializer would be a nice addition to elementtidy, since reading and writing HTML are operations that often go together.
# Ian Bicking
maybe BeautifulSoup is what you need: http://www.crummy.com/software/BeautifulSoup/
AFAIK, BeautifulSoup structures aren't writable, which is what I'm doing -- parsing HTML, modifying the parsed form (adding comments), then writing it out again.
# Ian Bicking
You can change BeautifulSoup structures. For example, you can insert raw html fragments:
>>> from BeautifulSoup import BeautifulSoup >>> soup = BeautifulSoup('
 text 1
 text 2 ') >>> print soup
 text 1

 text 2
 >>> par2 = soup('p')[1] >>> par2.name = 'div' >>> par2.contents = ['
'] + par2.contents + ['
'] >>> print soup
 text 1

 text 2

# Alexander Kozlovsky
And yes, if the HTML isn't too obnoxious, the HTMLTreeBuilder module might help (and improvements to that module are welcome).
It looks like Meld3 includes an HTML parser now (and it uses ET internally); probably a good candidate for extraction at some point: http://www.plope.com/software/meld3/
# Ian Bicking
lxml's implementation of ElementTree provides an extension to the ElementTree API that allows you to get the parent. (at least in svn).
One wishlist item is to expose libxml2's HTML parser to lxml somehow. Volunteers are welcome. :) We already have a patch lying around implementing serialization support. I should find the time to review/integrate it all and prepare another release...
# Martijn Faassen
Take a look at this document for some coverage of HTML processing using different XML parsers (including PyXML):
# Paul Boddie
getElementById is tricky:
from xml.dom import minidom s = '<?xml version="1.0"?><foo><bar id="1" /></foo>' doc = minidom.parseString(s) assert None == doc.getElementById('1') s = '<?xml version="1.0"?><!DOCTYPE quote [ <!ATTLIST bar id ID #IMPLIED> ]> <foo><bar id="1" /></foo>' doc = minidom.parseString(s) assert None != doc.getElementById('1')You've basically got to load in the HTML DTD if you expect getElementById to work.
 Geez... the only reason the DOM seems useful to me is that it is implemented in browsers. I'm sure it's implemented and widely used elsewhere (I guess, I don't actually hear people talking about it), but the primary implementation in my mind has always been browsers. Or raise an exception when getElementById can't return a meaningful value. At least it should indicate in the documentation how you make it act like the browser's implementation. But eh... ET is much more predictable and seems to have relatively few intricacies. And it's going to be in the standard library (w00t!), so I'll probably just choose to forget that xml.minidom even exists.
# Ian Bicking
You probably already ran across it but Frederik Lundh also has TidyHTMLTreeBuilder which conveniently wraps up calling tidy on some HTML, and returns an ElementTree tree.
"""I have to say, Javascript and the DOM in the browsers are much easier to use for HTML processing, even taking into account the fact that it's Javascript."""
It'll be even much easier once all browsers support E4X :) http://en.wikipedia.org/wiki/E4X


Although module name expansion is performed when code is consulted, compiled or asserted,
it is perhaps best explained in terms of an interpreter,
especially the issue of how deeply clauses are expanded.
The semantics of call/1
, taking meta_predicate
declarations into account, is shown as if defined by the interpreter
shown below. The interpreter's case analysis is as follows:
meta_predicate
declaration for N/A.
If one exists, the relevant arguments are expanded.
Otherwise, the goal is left unexpanded.
Then, if N/A is a built-in predicate, it is called.
Otherwise, a clause with head functor N/A is looked up
using the imaginary predicate :-/2
,
unified against, and its body is interpreted.
Throughout the interpretation, we must keep track of the module context.
The interpreter is as follows, slightly simplified.
-->/2
is not a predicate:
call(M:Body) :- call(Body, M). call(Var, M) :- \+callable(Var), !, must_be(Term, callable, call(M:Var), 1). call(!, _) :- !, % cut relevant choicepoints. call((A, B), M) :- !, call(A, M), call(B, M). call((A -> B), M) :- !, ( call(A, M) -> call(B, M) ). call((A -> B ; C), M) :- !, ( call(A, M) -> call(B, M) ; call(C, M) ). call((A ; B), M) :- !, ( call(A, M) ; call(B, M) ). call(\+(A), M) :- !, ( call(A, M) -> fail ; true ). call(_^A, M) :- !, call(A, M). call(if(A,B,C), M) :- !, if(call(A, M), call(B, M), call(C, M)). call(once(A), M) :- !, ( call(A, M) -> true ). call(Goal, M) :- ( predicate_property(M:Goal, meta_predicate(Meta)) -> functor(Goal, Name, Arity), functor(AGoal, Name, Arity), annotate_goal(0, Arity, Meta, Goal, AGoal, M), call_goal(AGoal, M) ; call_goal(Goal, M) ). call_goal(asserta(X), _) :- !, asserta(X). call_goal(asserta(X,R), _) :- !, asserta(X, R). % and so on for all built-in predicates call_goal(Goal, M) :- (M:Goal :- Body), call(Body, M). annotate_goal(A, A, _, _, _, _) :- !. annotate_goal(I, A, Meta, Goal, AGoal, Module) :- J is I+1, arg(J, Meta, M), arg(J, Goal, Arg), arg(J, AGoal, Ann), ( M==(:) -> Ann = Module:Arg ; Ann = Arg ), annotate_goal(J, A, Meta, Goal, AGoal, Module).


{% extends "base.html" %} {% block content %} {% if form.errors %}
Please enter your username and password so we can verify your credentials.
Please enter your username
And also provide your password


Control your house from anywhere!
Control lights, appliances or a room in the comfort of your home or from anywhere in the world.
Book a Free ConsultationAbout OneUp Smart Home.
OneUp Smart Home is a home automation company with offices in South Florida and Jacksonville. We offer smart home automation services, training and support in Fort Lauderdale, Miami, West Palm Beach and Jacksonville.
We install and setup voice assistant systems like the new Amazon Echos (Echo Dot, Echo Plus, Echo Spot and Echo Show) and the Google Home and Home Mini. We also install smart lighting systems like the Philips Hue smart bulbs and motion sensor, smart WiFi-enabled smart plugs, video doorbells, home WiFi systems, Bluetooth speakers, indoor security cameras and more.
What is Smart Home or Home Automation Technology?
Smart Home Technology, also known as Home Automation, gives you access to control devices in your home from a mobile device anywhere in the world. Smart Home Technology also provides home owners comfort, security, energy efficiency and convenience at all times.
Examples of smart home technologies.
Smart Plugs can turn your lights, ceiling fans, and other fixtures off and on no matter where you are. They can even tell you how much power or energy you use on your electronics, giving you valuable insight into which electronics and appliances are costing you the most each month.
With smart security cameras, home owners can monitor their homes when they are away or on vacation. Smart motion sensors can identify the difference between residents, visitors, pets and burglars, and can notify authorities if suspicious behavior is detected.
Smart Lighting systems replace your old incandescent or halogen bulbs with LEDs. LED bulbs not only ensure a saving on electricity consumption but also use less energy, produce less heat and last much longer.
Free In-Home Consultation.
Get started with a free In-Home consultation. Our smart home experts have the expertise to handle a wide range of home control products.
Book a free consultation


You can (and should) use themes to customize the look of the overlays generated by this tool. Themes should be placed in a separate folder on the same disk as the Soothsayer application. You must tell the app where to find the themes before they will appear in the dropdown menu.
You must click the "Set Theme" button in order to change the theme.


Developed by Oscar Barreca and Paolo Marzolo @ University of Bologna.
Powered by Java 1.12 and JavaFX 12.


| Class | Description |
|---|---|
| AlmgrenEnhancedEulerUpdate |
AlmgrenEnhancedEulerUpdate is a R^1 To R^1 Function that is used in Almgren (2009, 2012) to illustrate the
Construction of the Enhanced Euler Update Scheme.
|
| AndersenPiterbargMeanReverter |
AndersenPiterbargMeanReverter implements the mean-reverting Univariate Function detailed in:
- Andersen and Piterbarg (2010): Interest Rate Modeling (3 Volumes), Atlantic Financial Press.
|
| Bennett |
Bennett is implementation of the Bennett's Function used in the Estimation of the Bennett's Concentration
Inequality.
|
| BernsteinPolynomial |
BernsteinPolynomial provides the evaluation of the BernsteinPolynomial and its derivatives for a specified
variate.
|
| ExponentialDecay |
ExponentialDecay implements the scaled exponential decay Univariate Function.
|
| ExponentialTension |
ExponentialTension provides the evaluation of the Exponential Tension Function and its derivatives for a
specified variate.
|
| FlatUnivariate |
FlatUnivariate implements the level constant Univariate Function.
|
| FunctionClassSupremum |
FunctionClassSupremum implements the Univariate Function that corresponds to the Supremum among the
specified Class of Functions.
|
| HyperbolicTension |
HyperbolicTension provides the evaluation of the Hyperbolic Tension Function and its derivatives for a
specified variate.
|
| ISDABucketCurvatureTenorScaler |
ISDABucketCurvatureTenorScaler generates the ISDA SIMM Tenor Scaling Factor for a given Bucket Curvature.
|
| LinearRationalShapeControl |
LinearRationalShapeControl implements the deterministic rational shape control functionality on top of the
estimator basis splines inside - [0,...,1) - Globally [x_0,...,x_1):
y = 1 / [1 + lambda * x]
where is the normalized ordinate mapped as
x === (x - x_i-1) / (x_i - x_i-1)
|
| LinearRationalTensionExponential |
LinearRationalTensionExponential provides the evaluation of the Convolution of the Linear Rational and the
Tension Exponential Functons and its derivatives for a specified variate.
|
| NaturalLogSeriesElement |
NaturalLogSeriesElement implements an element in the natural log series expansion.
|
| OffsetIdempotent |
OffsetIdempotent provides the Implementation of the Offset Idempotent Operator - f(x) = x - C.
|
| Polynomial |
Polynomial provides the evaluation of the n-th order Polynomial and its derivatives for a specified
variate.
|
| QuadraticRationalShapeControl |
QuadraticRationalShapeControl implements the deterministic rational shape control functionality on top of
the estimator basis splines inside - [0,...,1) - Globally [x_0,...,x_1):
y = 1 / [1 + lambda * x * (1-x)]
where is the normalized ordinate mapped as
x ==== (x - x_i-1) / (x_i - x_i-1)
|
| SABRLIBORCapVolatility |
SABRLIBORCapVolatility implements the Deterministic, Non-local Cap Volatility Scheme detailed in:
- Rebonato, R., K.
|
| UnivariateConvolution |
This class provides the evaluation of the Convolution au1 * au2 and its derivatives for a specified
variate.
|
| UnivariateReciprocal |
UnivariateReciprocal provides the evaluation 1/f(x) instead of f(x) for a given f.
|
| UnivariateReflection |
UnivariateReflection provides the evaluation f(1-x) instead of f(x) for a given f.
|