Written by: Zack Rosenblatt
Transcribed by: Eric Aasen
[Scene: The Buildings Roof, the entire gang plus Tag are there to look for a comet. Theyre looking for a comet on a roof of a New York apartment building. Yeah, thats realistic. You might as well look for the moon on a bright sunny day.]
Monica: (looking up) Ross, whens this comet thing start?
Ross: Well, technically it seven billion years ago (Well, technically youd be able to see it for days, well nights; that is if you could see it with all of the bright lights of New York.)
All: (groaning) Oh no! Oh no! (They all start to get up a leave.)
Ross: Okay! Okay! Fine, Ill stop! No teaching, okay? Well just watch the pretty light streaking across the sky. (Comets dont streak across the sky, meteors do.) Okay? Whos official name is Bapstein-King.
All: Okay! Okay! (They start to leave again.)
Phoebe: (looking up) There it is! Oh, look at that! Isnt Mother Nature amazing?
Chandler: (looking up with her) Thats a plane!
Phoebe: Well, all right. 1700 bags of peanuts flying that high, thats pretty amazing too.
Tag: Hey, I wonder if you can see my apartment from up here.
Rachel: No. No, you cant.
Tag: What?
Rachel: Oh I dont-I dont know.
Ross: Man, look at all those stars! (Yeah, you can see what? Five of them from the city?) Infinite space. It really, really makes you wonder, doesnt it?
Joey: (looking through his binoculars at a nearby building) Yknow what else makes you wonder?
Ross: Huh?
Joey: Check out the rack on this chick! (Turns around to point it out to Ross and finds that Ross is glaring at him. So he quickly puts his binoculars to his eyes and starts looking for the comet.)
Opening Credits
[Scene: The Roof, continued from earlier.]
 Can we go now? I mean, Chandlers getting chilly. (She walks over to where Chandler is bundled up in a big coat and shivering.)
Chandler: (with a quivering voice) No, Im not!
Joey: Then why are you wearing Monicas jacket?
Chandler: Because its flattering! (Shivers harder) Come on Monica! Come on Monica! (He goes inside.)
Rachel: Yeah actually, I think were gonna take off too. We rented a movie.
Phoebe: Oh! I wont say, no to a movie!
Rachel: Uh Pheebs, we just actually kinda wanted to be alone.
Phoebe: Shh! Get me out of here.
Rachel: Oh. (They leave, leaving just Joey and Ross.)
Joey: (whispering) Ross!
Ross: What?
Joey: Come here, check this out!
Ross: What? Is it the comet? (Runs over to where Joeys standing.)
Joey: No! No-no. Look, theres a bug stuck in tar right here. (Bends down to get a closer look.)

Joey: (standing up) Yknow, theres two women dude.
Ross: Show me where?
Joey: Right-right up here. (Starts looking at them through a piece of pipe.)
Ross: (noticing the pipe and looking at the door) Joey wheres the pipe that was holding the door open?
Joey: (annoyed) I dont know! (Goes back to looking through the pipe.) (Pause) Yeah, I do.
Ross: Joey!
Joey: What?! All rightHey! Dont look at me!
Ross: Its called the Bapstein-King comet, okay? (Joey starts to groan.) Hey! Hey! Bapstein was a very well respected astronomer!
Joey: (covering his ears and yelling) Oh no! No! No! (He starts banging on the door.)
[Scene: Monica and Chandlers bedroom, Monica is sleeping and Chandlers sitting in bed, wide awake.]
Chandler: (whispering) Monica!
Monica: Shes sleeping.
Chandler: I know, just quick-quick question, quick question. Which one was Deep Impact and which one was Armageddon?
Monica: Deep Impact was the one with Robert Duval, Armageddon is whats going to happen to you if you wake me up.
Chandler: Sorry, I just cant sleep. Ooh! (Turns on the light and Monica groans.) Where is that book that you are reading with the two women who were ice-skating and wearing, wearing those hats with the flowers on it? Because every time I look at that cover Im like (Fake snores.)
Monica: It is in the living room where there is also a light! And no one will kick you in the shin.
Chandler: What?! (Monica kicks him in the shin.) Ow! (He gets out of bed and heads into the living room.)
[Scene: Phoebe's apartment, there is a beeping noise coming from the living room and Phoebe sleepily goes to investigate.]
 Please dont be a space ship. (She turns on the light and looks around and finds that its the smoke detector thats beeping.) Oh thank God! (She moves a chair over and starts to investigate how to make the beeping turn off, in frustration she yanks the thing off of the wall. She sets it down and heads for bed, just as she gets there it beeps again. She opens the cover and removes the battery, but it still beeps.) How could you be beeping?! I just disconnected you! I took out your battery! How can
Smoke Detector: Beep!
Phoebe: Dont interrupt me!!
[Scene: The Roof, Ross and Joey are banging on the door.]
Ross: Rachel!! Monica!!
Joey: Come on!

Ross: I cant believe this!!
Joey: All right well, yknow I guess we know what we have to do to get down.
Ross: (standing at the edge of the roof) Yeah, I guess we dont have a choice. (Screaming to the street) Help us! Please help us! Were stuck up on the roof and we cant get down!!!
Joey: Ross.  (Points it out.)
Ross: (To Joey) I know, I wasnt finished. (Joey motions him to finish.) (Yelling at the street) But dont worry!
[Scene: Monica and Chandler's kitchen, Chandler has a jug of milk in his hands and decides to make some warm milk. He opens up the cabinet to get a pot and manages to knock several other pots onto the floor making a lot of noise.]
Chandler: Shhhhhhhhh!!! (Monica enters) Im sorry, I thought maybe Id make some warm milk and it would help me sleep.
Monica: With a wok? (Chandlers holding a wok.) I thought you were going to read my boring book to put you asleep.
Chandler: It got interesting!
Monica: Here, let me make the milk, Im up anyway.
Chandler: Hey, yknow what we can do? Yknow, now that we are up? We can just like talk to each other all night long, yknow like we did when we were first going out. Itd be fun!
Monica: Okay that does sound like fun.
Chandler: Okay, so how bummed were you when the second sister died huh?
Monica: The second sister dies?!
Chandler: (Pause) No. No, I-I was, I was talking about the book I was reading.
Monica: The second sister dies in Archie and Jughead Double Digest?
Chandler: Thats correct.
[Scene: Joey and Rachel's, Rachel and Tag are making out on the couch.]
Rachel: You wanna go in the bedroom? Its a little more comfortable.
Tag: Sure.
Rachel: Okay. (They start to head for the bedroom) Oh wait! Umm, did you send those contracts to Milan?
Tag: If this is your idea of sexy talk? (Shakes his head that its not working.)
Rachel: No seriously, yknow the contracts I gave you, did you overnight them?
Tag: What contracts?
Rachel: Okay please tell me that this is just one of your jokes that you do that I dont get.
Tag: Like what?
Rachel: Yknow, like the thing when you put the phone in your pants? (He starts laughing.) Tag! Im serious! This isnt funny! Those contracts absolutely had to go out today!
Tag: Rach, Im sorry, but you didnt give me any contracts!
Rachel: Yes I did! And I put a little Post-It on it that said, "Must go out today," and underlined today three times and, and then I put a little heart in the corner because I didnt want to seem to bossy.
Tag: Im telling you, you never gave them to me.
Rachel: Yknow what Tag, if we went down to the office you would see those contracts sitting on your desk.
Tag: No, I would see you looking embarrassed because they are not on my desk!
Rachel: Or maybe you would see me looking embarrassed because you are talking on the phone with your crotch!
Tag: You wanna go down to the office right now?
Rachel: No! Come on its late, were not gonna go down to the office.
Tag: Okay I understand. (Sits down.) I wouldnt want to be proved wrong either.
Rachel: Okay get your coat! (They get their coats and start to leave. Rachel suddenly stops and sticks the hand up the back of her shirt.) Oh! When did you unhook this? (Her bra.) Nice work!
[Scene: The Fire Escape, Joey and Ross have reached the last landing. Joey is tugging on the ladder that extends to the ground, but it wont budge.]
Joey: All right, it wont go down any further. Its stuck.
Ross: Ugh. Well, were just gonna have to jump. (Joey looks at him.) Yeah. Now, were gonna have to make sure to land to the right of that patch of ice, okay? Not hit the dumpster on the other side and uh, and try to avoid that-that weird brownish red stuff in the middle.  I have to do it?!
Ross: Yeah! Oh yeah, youll be fine! It-itll be uh, just like bungy jumping. Yknow? But instead of bouncing back up you-you wont.
Joey: What if I smack my head on the concrete?
Ross: Well, Im gonna lie to you Joey, its a possibility.
Joey: (looks at the ground and at Ross) I dont know Ross! I-I tell you what, lets flip to see who does it, okay? You-you call it in the air, all right?
Ross: Oh, all right. (Joey flips the coin.) Tails! (The coin bounces off of the landing above them and falls to the ground.) Can you-can you see what it is?
Joey: No.
Ross: Okay. Well, you be careful.
Joey: What? No! No Ross! No-no! Stop! Im not jumping! Okay, look I have an audition tomorrow and I cant go if I break my leg.
Ross: Well Im jumping! I have a son! Okay?
Joey: Well all right so, it looks like were even!
[Scene: Phoebe's apartment, Phoebe is still investigating the smoke detector trying to figure out how to stop the beeping.]
Phoebe: Okay. So, this wire is connected to this wire which plugs into here. (She points at each as she says it.) Okay so, to get the beeping to stop all I have to do (She picks up a shoe and proceeds to pummel the smoke detector. She then gets up and heads to bed, stops, quickly turns around, and is satisfied that the beeping has stopped.) Well done, Pheebs. (She resumes her trek to bed, but is stopped at the entrance to the hallway by the now steady and extremely loud tone emanating from the smoke detector.) (Yelling.) What do you want from me?!!!!!!!
[Scene: Monica and Chandler's bedroom, Monica is entering with a mug.]
Monica: Okay, heres your milk. What do you want to talk about? (She sees that Chandler has fallen asleep and slams the door loudly to wake him up.)
Chandler: (startled) What? What? What?
Monica: Ohh! Ohhhh! Were you sleeping sweetie? Im sorry. Here. (Hands the mug of milk to him.)
[Scene: Rachels Outer Office, Tag and her are arriving.]
Tag: Okay! Feel free to look, but Im telling you those contracts are not on this desk.
Rachel: Oh how can you possibly know? Look at this mess, Tag! I mean, this is what Im talking about! You have to be organized! Youve got newspapers! Youve got magazines! You gotOhh! (Finds a picture.) And who is this chippy? A little young for you Tag, but whatever.
Tag: Its my sister.
Rachel: Okay, very cute braces. Anyway yknow what, the point is Tag, start looking because you are going to find those contracts on your desk. (She goes into her office.)
Tag: So when do you imagine you gave them to me? In the morning or in the afternoon?
Rachel: In the afternoon. Mr. Zelner came into my office after lunch. He put them on my desk, and then I put a Post-It on it (Looks down onto her desk and finds the folder with the Post-It on it that contains the contracts she imagined she gave Tag) that said, "Must go out today." So you just keep looking in there! All right?
Commercial Break
[Scene: Rachels outer office, Tag has finished searching his desk and Rachel comes out to try to plant the folder on the desk.]
Tag: Its not here.
Rachel: Puzzler. A bit of a puzzle. Why dont you um, check the copy room, maybe you left the contracts in there?
Tag: How could I have left them in the copy room?
Rachel: I dont know Tag! How can your genitals make phone calls? Okay? Its not a perfect world! Just go please.
Tag: Fine.
Rachel: Thank you. (He leaves and she proceeds to plant the folder in his bottom drawer. She then picks up the phone and holds it to her breasts.) Hello? (Hangs up the phone.) I still dont get it.
[Scene: Monica and Chandler's bedroom, Chandler has his eyes closed, while Monica is fully awake.]
Monica: Are you still awake?
Chandler: Yeah! You?
Monica: You do know that was me who just said that right? (He doesnt respond and she turns on the light, waking him.) Hey. As long as were both up
Chandler: (intrigued) Yeah? (Monica nods yes.) I hope youre not thinking about cleaning the living room.
[Scene: The fire escape, Joey and Ross are still trying to figure out how to get down.]
Joey: Man, Im starving!  "Do you want soup or salad?" Both! Always order both!
Ross: (looking in the window behind them) Yknow, yknow Im lookin and I dont think anyones home here. I say we just break the window, crawl through, and-and yknow explain later.
Joey: Yeah? Really? No ones home?
Ross: I dont think so. Hello? (Knocks on the glass, which angers the big, large, angry dog behind the glass and causes them to jump to the other side of the landing.) When you get in there (Joey nods his disapproval.)
[Scene: Phoebes apartment building, in desperation she has wrapped up the smoke detector in a blanket and is going to throw it into the trash chute.]
Phoebe: Okay, this is where you and I part ways. (She drops the blanket into the chute.)
[Scene: Monica and Chandler's bedroom, Chandler is turning on the light to awaken a now sleeping Monica.]
Monica: What?! What are you doing?!
Chandler: Do you know what just happened?
Monica: Yeah.
Chandler: No.
Monica: Nooo! No, thats not true. No, best time ever! Yeah, you rocked me world! (She turns out the light to go back to sleep.)
Chandler: (turning the light back on) Monica?
Monica: What?!
Chandler: I was giving you some of my best moves, and you missed it. So please wake up so we can do it right!
Monica: Okay. Okay, Im ready. Come on big fella!
Chandler: Okay.
Monica: Give me the good stuff.
Chandler: Yeah! (Monica falls asleep) No! No! No! Dont fall asleep!  (Monica doesnt move as he gets out of bed and as hes heading for the door.) And I probably wont spill coffee grounds all over the kitchen floor.
Monica: Okay, Im up! Im up!
[Scene: Rachels outer office, shes returning with two coffee cups in hand to find Tag sitting there.]
Rachel: Hi! I got you some coffee. To, uh (She looks for a place to set it on his messy desk and he clears a spot for her to set it down.) fair enough. So! Do you got anything for me?
Tag: Still no luck.
Rachel: Oh my God! Did you check your entire desk! Did you check all the drawers!
Tag: Do you want me to check again?
Rachel: Well yeah, I wish that you would. (He opens the top drawer.) Well, no its not in there! (Closes it.) How about that drawer? (She points to the bottom one and he opens it. She doesnt see the folder she planted and bends over to check.)
Tag: Well, its not out here. Is there any chance it could be in your office?
Rachel: (thinks) Yknow, I dont-I dont know. Let me, let me check. (As she heads for her office, she stops glances over her should at Tag, looks into her office, and finds the folder on her desk.)
Tag: (smirking) Any luck?
Rachel: Can I see you in my office for a minute?
Tag: (entering) Yeah? (She holds up the folder) You found them!! (Rachel is not amused, because shes still going to try to blame him for her mistake like every good boss.) Yknow what? Im not even going to gloat. Im just really relived this whole thing is over.
Rachel: You put these on my desk!
Tag: I did not!
Rachel: Oh really? So youre saying they just slid out of your bottom drawer, crawled across the floor, then jumped on to my desk?! (I think Dogbert should have a line here.)
Tag: How did you know they were in my bottom drawer?
Rachel: (pause as she realizes her lame attempt to shift the blame has failed) I am so hot for you right now.
[Scene: Phoebe's apartment, there is someone pounding on the door and Phoebe sleepily walks over and answers it. As she nears the door, the pounding stops and she can hear the smoke detectors wail.]
Phoebe: Oh my God! How did you get back here?!
A Disembodied Voice: (yelling through the door) Phoebe Buffay?!
Phoebe: (scared) Fire alarm? (She opens the door to reveal a fireman holding the blanket with the smoke detector.) Oh! Hi, officerfireman, can-can I help you?
The Fireman: We found your fire alarm in the trash chute.
Phoebe: Thats not mine.
The Fireman: Yes it is.
Phoebe: How do you know?
The Fireman: The next time you want to dump a fire alarm in a trash chute, dont wrap it in a blanket that says, "Property of Phoebe Buffay not Monica."
Phoebe: Okay do youOkay, do you have a search warrant? Because the last time I checked this was still America!
The Fireman: Please reattach this, its against the law to disconnect them.
Phoebe: Fine! (She takes the blanket.) But please God; tell me how to stop them from going off!
The Fireman: Theres a reset button under the plastic cover.
Phoebe: Theres a reset button?! Ugh, thank you! Thank you! (He exits and she goes to shut it off.) Theres a reset button! My God! Why didnt I see that! (She takes off the plastic cover and looks for the button.) Reset button, reset button, where is there a reset button? (Finds it.)  (Picks it up off of the floor.) Oh! (She presses it hard, but of course it would help if the button was still attached to the detector. In frustration she presses it so hard it causes pain in her thumb.) Ohh, God!
[Scene: The fire escape, Joey is now hanging off of the bottom rung of the ladder that wont move and Ross is watching from above.]
Ross: Okay, do-do you have a good grip?
Joey: Yeah!
Ross: Okay, Im going to start climb down you now.
Joey: All right! Just hurry up!
Ross: Okay.
Joey: I think face to face.
Ross: I would say that.
Joey: Face to face, yeah!
Ross: Okay, here I go.
Joey: All right.
(Ross steps onto the bottom rung of the ladder and then steps on Joeys chest.)
Joey: (grunting) Oh my How much do you weigh Ross?!
Ross: I prefer not to answer that right now, Im still carrying a little holiday weight.
(Ross continues to climb down. He puts his other foot further down on Joeys torso, but that doesnt work very well and hes forced to wrap his legs around Joey. Which then forces Joey to get a nice and close view of Rosss crotch.)
Joey: Yknow, when we talked about face to face, I dont think we thought it all the way through.
Ross: So what do you want me to do?
Joey: Well, just shimmy down me and drop!
(Ross continues his trek south, and when they get face to face.)
Ross: Hi.
Joey: Hi.
Ross: (looking down) M-maybe I should hang and you can climb down me.
Joey: (angrily) Yeah? Maybe we should talk about that for a little while!
Ross: Its still looks pretty far!
Joey: Its not that far! Just drop!
Ross: Do not rush me!!
(Ross continues south and his now wrapped around Joeys legs.)

(Ross panics and falls off, dropping to the ground with a huge crash.)
Ross: Oww!! My ankle! I really hurt my ankle! I think I twisted it when IOoh, a quarter!
Ending Credits
[Scene: Monica and Chandler's bedroom, theyre cuddling.]
Monica: That really was some of your best work.
Chandler: Hm-hmm, I told you! (Looks at the clock) I cant believe that Ive only got two hours before I call in sick for work.
Monica: I have to be up in seven minutes.
Chandler: Well, youre not gonna believe this, but if you have seven minutes
Monica: Really?!
Chandler: Do you wanna?
Monica: Okay! You get the vacuum cleaner and Ill get the furniture polish!
(She runs off leaving a stunned Chandler behind.)
End


This example demonstrates how to disable the default methods of closing the modal:
If you do this, be sure to provide the user with an alternate method of closing the window.


Certificate of Completion
This is to certify that
$student.getFullName()
has completed the course
$course.getName()
dated
$dt
Organized by


MNE-Python design philosophy¶
Interactive versus scripted analysis¶
MNE-Python has some great interactive plotting abilities that can help you explore your data, and there are a few GUI-like interactive plotting commands (like browsing through the raw data and clicking to mark bad channels, or click-and-dragging to annotate bad temporal spans). But in general it is not possible to use MNE-Python to mouse-click your way to a finished, publishable analysis. MNE-Python works best when you assemble your analysis pipeline into one or more Python scripts. On the plus side, your scripts act as a record of everything you did in your analysis, making it easy to tweak your analysis later and/or share it with others (including your future self).
Integration with the scientific python stack¶
MNE-Python also integrates well with other standard scientific python
libraries. For example, MNE-Python objects underlyingly store their data in
NumPy arrays, making it easy to apply custom algorithms or pass your data into
one of scikit-learn’s machine learning pipelines.
MNE-Python’s 2-D plotting functions also return matplotlib
Figure
objects, and the 3D plotting functions
return mayavi scenes, so you can customize your MNE-Python plots using any
of matplotlib or mayavi’s plotting commands. The intent is that MNE-Python will
get most neuroscientists 90% of the way to their desired analysis goal, and
other packages can get them over the finish line.
Submodule-based organization¶
A useful-to-know organizing principle is that MNE-Python objects and functions
are separated into submodules. This can help you discover related functions if
you’re using an editor that supports tab-completion. For example, you can type
mne.preprocessing.<TAB>
to see all the functions in the preprocessing
submodule; similarly for visualization functions (mne.viz
), functions
for reading and writing data (mne.io
), statistics (mne.stats
),
etc. This also helps save keystrokes — instead of:
import mne
mne.preprocessing.eog.peak_finder(...)
mne.preprocessing.eog.find_eog_events(...)
mne.preprocessing.eog.create_eog_epochs(...)
you can import submodules directly, and use just the submodule name to access its functions:
from mne.preprocessing import eog
eog.peak_finder(...)
eog.find_eog_events(...)
eog.create_eog_epochs(...)
(Mostly) unified API¶
Whenever possible, we’ve tried to provide a unified API for the different data
classes. For example, the Raw
, Epochs
,
Evoked
, and SourceEstimate
classes all have a
plot()
method that can typically be called with no parameters specified and
still yield an informative plot of the data. Similarly, they all have the
methods copy()
, crop()
, resample()
and save()
with similar or
identical method signatures. The sensor-level classes also all have an info
attribute containing an Info
object, which keeps track of channel
names and types, applied filters, projectors, etc. See The Info data structure
for more info.
In-place operation¶
Because neuroimaging datasets can be quite large, MNE-Python tries very hard to
avoid making unnecessary copies of your data behind-the-scenes. To further
improve memory efficiency, many object methods operate in-place (and silently
return their object to allow method chaining). In-place operation may lead
you to frequent use of the copy()
method during interactive, exploratory
analysis — so you can try out different preprocessing approaches or parameter
settings without having to re-load the data each time — but it can also be a
big memory-saver when applying a finished script to dozens of subjects’ worth
of data.


A VTK pipeline primer (part 1)
18 Sep 2014In my last two blogs (1,
2), I introduced the vtkPythonAlgorithm
and started demonstrating how it can be used to develop sources and algorithms
in Python. In those articles, I touched on a few VTK pipeline concepts. For
those are not familiar with VTK's pipeline, this may have been somewhat hard
to follow. So in this article and the next, I will take a step back and explain
how VTK's pipeline works in more detail.
Preliminaries
vtkInformation
and vtkInformationVector
These two classes are used all over the VTK: in algorithms, in executives,
in data objects. They were developed by Brad King when we overhauled the VTK
pipeline in VTK 4. Conceptually, they are simply maps. The key is a pointer
to an instance of a vtkInformationKey
(or of a subclass) and the value is an
instance of vtkObjectBase
(or of a subclass). Let's start with an example.
1 import vtk
2 from vtk.util import keys
3
4 key = keys.MakeKey(keys.ObjectBaseKey, "a new key", "some class")
5 print "key:\n", key
6
7 info = vtk.vtkInformation()
8 print "info:\n", info
9
10 key.Set(info, vtk.vtkObject())
11 print "info after set:\n", info
This will print the following.
key:
vtkInformationObjectBaseKey (0x7f8390698680)
Reference Count: 1
info:
vtkInformation (0x7f8390466ff0)
Debug: Off
Modified Time: 51
Reference Count: 1
Registered Events: (none)
info after set:
vtkInformation (0x7f8390466ff0)
Debug: Off
Modified Time: 54
Reference Count: 1
Registered Events: (none)
a new key: vtkObject(0x7f839069b130)
On line 4, we created a new key type. Most often you will use existing keys but it
is useful to know how to create them. This key has a name a new key
and location
some class
. The latter is usually the name of the class this key is accessed from.
More on that later. One line 7, we create an empty information object. On line 10,
we add a new vtkObject
to the information object. Not that line 10 looks backwards
and it feels more natural to do the following instead.
info.Set(key, vtk.vtkObject())
Both of these work. We'll see below why. As I mentioned above, the values stored
in an information object are all vtkObjectBase
and subclass instances. However,
it is relatively easy to store simple types by wrapping them with simple
vtkObjectBase
subclasses. For example, we can store integers easily as below.
key = keys.MakeKey(keys.IntegerKey, "another key", "some class")
key.Set(info, 12)
print info
This prints
vtkInformation (0x7fc3f0db0c80)
Debug: Off
Modified Time: 55
Reference Count: 1
Registered Events: (none)
a new key: vtkObject(0x7f8078e87be0)
another key: 12
This example may have made it a bit more clear why the methods to set values
on information objects are in the key classes. Using the keys' API to set
values enables us to store multiple types without having to make
vtkInformation
aware of all types. As long as it can wrap a value or a set
of values in a subclass of vtkObjectBase
, a key can store data of any type.
On the other hand, vtkInformation
can only provide the API for the key types
it is aware of. You can verify this by checking out vtkInformation.h
. It has
individual set/get methods for each key type it recognizes. Since most of the
code that interact with information objects use already defined key types, you
will see the information.Set(key, value)
signature much more often. If you
define your own key type, you will have to use the key.Set(information,
value)
signature.
Most often, you will access existing keys rather than create new ones. Keys created in C++ usually exist with the scope of a class and are accessed by calling a static member function. Like so:
info = vtk.vtkInformation()
info.Set(vtk.vtkStreamingDemandDrivenPipeline.UPDATE_PIECE_NUMBER(), 1)
print vtk.vtkStreamingDemandDrivenPipeline.UPDATE_PIECE_NUMBER()
print info
This will print the following.
vtkInformationIntegerKey (0x7fe688c8fa50)
Reference Count: 1
vtkInformation (0x7fe688e4ff80)
Debug: Off
Modified Time: 66
Reference Count: 1
Registered Events: (none)
UPDATE_PIECE_NUMBER: 1
When writing code in C++, you can use various macros to create keys. For example,
vtkStreamingDemandDrivenPipeline.UPDATE_PIECE_NUMBER()
is created using the
following.
- vtkStreamingDemandDrivenPipeline.h:
static vtkInformationIntegerKey* UPDATE_PIECE_NUMBER();
- vtkStreamingDemandDrivenPipeline.cxx:
vtkInformationKeyMacro(vtkStreamingDemandDrivenPipeline, UPDATE_PIECE_NUMBER, Integer);
vtkInformationVector
is a simple vector of vtkInformation
objects. Here
is a demonstration.
key = keys.MakeKey(keys.IntegerKey, "another key", "some class")
iv = vtk.vtkInformationVector()
i1 = vtk.vtkInformation()
i1.Set(key, 10)
iv.Append(i1)
i2 = vtk.vtkInformation()
i2.Set(key, 20)
iv.Append(i2)
print iv
for i in range(2):
print iv.GetInformationObject(i)
This will print the following.
vtkInformationVector (0x7ff513e40f10)
Debug: Off
Modified Time: 56
Reference Count: 1
Registered Events: (none)
Number of Information Objects: 2
Information Objects:
vtkInformation(0x7ff513d33c10):
Debug: Off
Modified Time: 60
Reference Count: 2
Registered Events: (none)
another key: 10
vtkInformation(0x7ff513e42230):
Debug: Off
Modified Time: 63
Reference Count: 2
Registered Events: (none)
another key: 20
vtkInformation (0x7ff513d33c10)
Debug: Off
Modified Time: 60
Reference Count: 2
Registered Events: (none)
another key: 10
vtkInformation (0x7ff513e42230)
Debug: Off
Modified Time: 63
Reference Count: 2
Registered Events: (none)
another key: 20
Connecting algorithms to create pipelines
Next, let's check out how algorithms are connected together to form pipelines. Below is a simple pipeline consisting of 2 sources (s0 and s1) and 3 filters (f0, f1 and f2).
- During execution, data flows in the direction of the arrows,
- s0, s1 and s2 are simple sources with 1 output each,
- f0 is a filter with 2 inputs and 1 output. The first input (input 0) is repeatable,
- f1 and f2 are simple filters with 1 input and 1 output.
The code to create this pipeline would look something like this:
s0 = Source()
s1 = Source()
s2 = Source()
f0 = Filter0()
f0.AddInputConnection(0, s0.GetOutputPort())
f0.AddInputConnection(0, s1.GetOutputPort())
f0.SetInputConnection(1, s2.GetOutputPort())
f1 = Filter1()
f1.SetInputConnection(f0.GetOutputPort(0))
f2 = Filter1()
f2.SetInputConnection(f0.GetOutputPort(1))
This is enough detail about the pipeline for now. We'll cover the pipeline execution order and passes in the next blog. Let's see what each of these algorithm classes looks like.
Source:
from vtk.util.vtkAlgorithm import VTKPythonAlgorithmBase
class Source(VTKPythonAlgorithmBase):
def __init__(self):
VTKPythonAlgorithmBase.__init__(self,
nInputPorts=0,
nOutputPorts=1, outputType='vtkPolyData')
def RequestData(self, request, inInfo, outInfo):
info = outInfo.GetInformationObject(0)
output = vtk.vtkPolyData.GetData(info)
print info
return 1
When the pipeline is updated with f1.Update()
or f2.Update()
, the
Source
instances will print the following 3 times.
vtkInformation (0x7fb87263a8b0)
Debug: Off
Modified Time: 610
Reference Count: 3
Registered Events: (none)
PRODUCER: vtkCompositeDataPipeline(0x7fb872638730) port 0
UPDATE_EXTENT_INITIALIZED: 0
UPDATE_PIECE_NUMBER: 0
UPDATE_NUMBER_OF_PIECES: 1
UPDATE_NUMBER_OF_GHOST_LEVELS: 0
DATA_OBJECT: vtkPolyData(0x7fb8726428c0)
CONSUMERS: vtkCompositeDataPipeline(0x7fb8726397d0) port 0
This class is pretty self-explanatory. Note how in RequestData()
,
there is a direct relationship between the contents of inInfo
and
the input connections and outInfo
and output connections. In the
cae of a source, outInfo
, which is a vtkInformationVector
contains
only one vtkInformation
object corresponding to the only output.
InInfo
on the other hand will be empty since this is a source and
has no input ports.
Filter1:
class Filter1(VTKPythonAlgorithmBase):
def __init__(self):
VTKPythonAlgorithmBase.__init__(self,
nInputPorts=1, inputType='vtkPolyData',
nOutputPorts=1, outputType='vtkPolyData')
def RequestData(self, request, inInfo, outInfo):
info = inInfo[0].GetInformationObject(0)
input = vtk.vtkPolyData.GetData(info)
info = outInfo.GetInformationObject(0)
output = vtk.vtkPolyData.GetData(info)
return 1
This is also fairly straightforward. A filter with one input and one output.
InInfo
will contain one vtkInformationVector
(first input port) which will
contain one vtkInformation
(first and the only connection).
Finally, let's look at Filter0
, which is the most complicated algorithm
in the example:
class Filter0(VTKPythonAlgorithmBase):
def __init__(self):
VTKPythonAlgorithmBase.__init__(self,
nInputPorts=2, inputType='vtkPolyData',
nOutputPorts=2, outputType='vtkPolyData')
def FillInputPortInformation(self, port, info):
if port == 0:
info.Set(vtk.vtkAlgorithm.INPUT_IS_REPEATABLE(), 1)
return 1
def RequestData(self, request, inInfo, outInfo):
print inInfo
print inInfo[0], inInfo[1]
info = inInfo[0].GetInformationObject(0)
input = vtk.vtkPolyData.GetData(info)
info = outInfo.GetInformationObject(0)
output = vtk.vtkPolyData.GetData(info)
return 1
Overall, this algorithm still looks fairly simple. Its one unusual attribute
is how it sets the first port to be repeatable in FillInputPortInformation
.
This means that this port can accept an arbitrary number of connections, which
are established using AddInputConnection()
. The most common example of such
an algorithm is vtkAppendFilter
. This filter accepts multiple inputs, which
it appends together to produce 1 output.

The first port is repeatable and contains 2 connections. Therefore, the
first vtkInformationVector
contains 2 vtkInformation
objects. The
second port accepts only 1 connection and hence the second vtkInformationVector
contains only vtkInformation
object.
Hopefully, this gives you enough information to get started with writing basic algorithms. In my next blog, I will cover how the pipelines performs multiple passes during execution and how these passes are implement by algorithms.


I'm Cristophe Kerebel, the guy who created the photo and video gallery you like to visit and share my love for lights. I dedicated a full year to chase the marvelous lights of America, armed with nothing more than my beloved Canon camera.
Sorry, I stopped selling those pictures and devote myself today to my new job as a UX/UI designer. If you want to check out my portfolio, it's at christophekerebel.com
Still, catching the light is my pasion. You are welcome to bisit my new gallery at kreapx.com


The Groovy script works on the
Matcher
instance that is passed to the script in the variable matcher
. The script must have a single return
value of type Optional<edu.hm.hafner.analysis.Issue>
. Use the
edu.hm.hafner.analysis.IssueBuilder
instance that is passed to the script in the variable
builder
to create a new issue instance. Note that the method buildOptional()
creates an
Optional
with a wrapped Issue
instance, you rarely need to call the
build()
method that directly creates an Issue
. If a false positive has been detected
by the regular expression, you must return Optional.empty()
.
Additional available variables:
Here is an example that you can use as a starting point for your script. It composes a new warning using
the matcher of the regular expression ^\s*(.*):(\d+):(.*):\s*(.*)$
.
import edu.hm.hafner.analysis.Severity builder.setFileName(matcher.group(1)) .setLineStart(Integer.parseInt(matcher.group(2))) .setSeverity(Severity.WARNING_NORMAL) .setCategory(matcher.group(3)) .setMessage(matcher.group(4)) return builder.buildOptional();


Stranger points handgun at woman at bus stop, police say
by Maija InveissMADISON, Wis. - A woman contacted police Thursday at 3 p.m. after a stranger pointed a handgun at her while she was at a bus stop in the 900 block of South Park Street.
According to an incident report, the victim said the gunman reeked of booze and called her by her wrong name. The gunman also said he wanted her to come with him to hang out and offered money to her.
Police said she told him that was not her name and he walked away, and they said it could have been a case of mistaken identity.
The victim told police the man was black, about 6 feet tall, with bloodshot blue eyes. He was last seen wearing a black puffy jacket and a green and yellow scarf.


--- layout: post title: Building an accessible and standards compliant form tags: [] status: publish type: post published: true meta: {} ---
In recent weeks I have come across two articles, that have helped me massively along the way to create standards based and accessible websites. One of the things that was holding me back so to say was my inability to layout forms nicely without having to resort to tables. That was until I came across Mark Newhouse's practical CSS article, which had the answers I was after. Having spent some time recently developing accessibility guidelines for my current employer's sites I wanted to put together a brief outline of how to combine accessibility and standards, combined with Patrick Griffith's recent article on Accessible Forms I was fully equipped to merge the two into one and add a liberal sprinkling of my own knowledge.
So let's start off with the code:

<form action="index.cfm?fuseaction=loginUser" method="post" name="frm_test" id="frm_test"
enctype="application/x-www-form-urlencoded">
<fieldset>
<legend>Personal details</legend>

First name:
<input type="text" size="12" name="firstName" id="firstName"
title="text input: first name" value="" tabindex="1" />

Surname:
<input type="text" size="12" name="surname" id="surname"
title="text input: surname" value="" tabindex="2" />

</fieldset>
<fieldset>
<legend>Address</legend>

Your address:
<textarea name="address" id="address"
title="textarea input: address" rows="5" cols="16" tabindex="3"></textarea>

Country:
<select name="country" id="country" title="select: country"
tabindex="4">
<optgroup label="Europe">
<option value="uk">UK</option>
<option value="fr">France</option>
<option value="ger">Germany</option>
</optgroup>
<optgroup label="Oceania">
<option value="au">Australia</option>
<option value="nz">New Zealand</option>
</optgroup>
</select>

</fieldset>

<input type="submit" name="btn_submit" id="btn_submit" value="submit"/>

</form>

OK all clear? Nothing to explain then... Quite honestly most of it you'll glean from the article I mentioned previously, but I'll dwell on a few points.

with an id of form, which in this case is set to 230px. The columns that hold your form label and form field have also widths specified (in span.label and span.formw). Be careful that your combined totals for these two values do not exceed the overall width specified for form, if you don't you'll get an interesting wrap happening.<fieldset>
allows you to group form controls together in a logical or semantic way, e.g. personal details would be one such grouping<legend>
is another useful tag that allows you to specify a legend for a field set. Using the above example of a field set for personal details, you could assign this field set a legend of, you guessed it, personal details.
allows a form control to be explicitly associated with a label (no doubling up intended, i.e. username: <input id="username" />) and you should always aim to associate these.<input>
ones I like to include the attribute title. This attribute has the same effect as when used in
tag, i.e. when you hover the element a little call out box appears displaying the value captured in the attribute and is, as far as I know, usable by screen readers. I also use this chance to tell the user what type fo form controlled they are presented with, i.e. input, textarea, select, etc...<optgroup>
tag allows us to group together the elements of <select>
form control in a logical manner. This also results in a non-selectable pseudo header for the grouped items.And this concludes my contribution to building an accessible form, you can view a sample here. Hope you found it useful.


| 017:111 Khan | : |
And say: "All the praises and thanks be to Allah, Who has not begotten a son (nor an offspring), and Who has no partner in (His) Dominion, nor He is low to have a Wali (helper, protector or supporter). And magnify Him with all the magnificence, [Allahu-Akbar (Allah is the Most Great)]." |
| 017:111 Maulana | : |
And say: Praise be to Allah! Who has not taken to Himself a son and Who has not partner in the kingdom, and Who has not a helper because of weakness; and proclaim His greatness, magnifying (Him). |
| 017:111 Pickthal | : |
And say: Praise be to Allah, Who hath not taken unto Himself a son, and Who hath no partner in the Sovereignty, nor hath He any protecting friend through dependence. And magnify Him with all magnificence. |
| 017:111 Rashad | : |
And proclaim: "Praise be to GOD, who has never begotten a son, nor does He have a partner in His kingship, nor does He need any ally out of weakness," and magnify Him constantly. |
| 017:111 Sarwar | : |
Say, "It is only God who deserves all praise. He has not begotten a son and has no partner in His Kingdom. He does not need any guardian to help Him in His need. Proclaim His greatness. |
| 017:111 Shakir | : |
And say: (All) praise is due to Allah, Who has not taken a son and Who has not a partner in the kingdom, and Who has not a helper to save Him from disgrace; and proclaim His greatness magnifying (Him). |
| 017:111 Sherali | : |
And say, 'All praise belongs to ALLAH who has taken unto Himself no son, and who has no partner in HIS kingdom, nor has HE anyone to help HIM because of any weakness of HIS.' And proclaim HIS greatness, glorifying HIM. |
| 017:111 Yusufali | : |
Say: "Praise be to Allah, who begets no son, and has no partner in (His) dominion: Nor (needs) He any to protect Him from humiliation: yea, magnify Him for His greatness and glory!" |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > حمد الله تعالى وتسبيحه والثناء عليه Pillars of Islam> Islamic> Oneness of Allah> Praise be to Him أركان الإسلام > التوحيد > توحيد الله تعالي > وحدانيته Pillars of Islam> Islamic> Oneness of Allah> Singularity and Being Unique أركان الإسلام > التوحيد > الشرك والمشركون > تنزيه الله جلّ جلاله عن الشريك Pillars of Islam> Islamic> Polytheism and the Polytheists> Allah's Freedom from Partnership تنظيم العلاقات المالية > تملك الأموال Organizing Financial Relationships>Possessing Property
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


An Interpreter helps to map a value of a Sampler to another value. If you want to render the output of a Sampler you usually want to map the values to color ranges.


MICRO 2016
Staurday, October 15, 2016
BigBench, or TPCx-BigBench (TPCx-BB) , is a TPC Express benchmark for measuring the performance of Big Data Analytics Systems.
We will be holding a three-hour tutorial on running BigBench with SAE during MICRO 2016. The whole tutorial will (tentatively) contain three stages:
Part 1: explanation of Simics and SAE
Part 2: introduction to BigBench
Part 3: Simics/SAE hands-on tutorial
Attention attendees: For the hands-on tutorial, we will be distributing virtual machine images for you to install on your personal computers. These images will be pre-loaded with SAE to allow you to gain real experience using this powerful tool. Please bring a well-equipped laptop and charging cable to the tutorial. We look forward to seeing you all in Taiwan!
Part 1
Part 2


Page
The Page object, or "Page" object is the main powerhouse of Grav. It contains all the information related to the nested pages structure that represents the content. Each page has several attributes that can be retrieved via public functions. Also each page can potentially contain an array of sub-pages.
Recursively traversing the page structure allows Grav to create navigation systems.
Traits
Methods
Page Object Constructor
Initializes the page instance variables based on a file
Return an array with the routes of other translated languages
Return an array listing untranslated languages available
Gets and Sets the raw data
No description
Gets and Sets the header based on the YAML configuration at the top of the .md file
Get page language
Modify a header value directly
Get the summary.
Sets the summary of the page
Gets and Sets the content based on content portion of the .md file
Needed by the onPageContentProcessed event to get the raw page content
Needed by the onPageContentProcessed event to set the raw page content
Get value from a page variable (used mostly for creating edit forms).
No description
Get file object to the page.
Save page if there's a file assigned to it.
Get blueprints for the page.
Get the blueprint name for this page. Use the blueprint form field if set
Validate page header.
Filter page header from illegal contents.
Get unknown header variables.
Convert page to an array.
Convert page to YAML encoded string.
Convert page to JSON encoded string.
Gets and sets the name field. If no name field is set, it will return 'default.md'.
Returns child page type.
Gets and sets the template field. This is used to find the correct Twig template file to render.
Gets and sets the extension field.
No description
Gets and sets the expires field. If not set will return the default
Gets and sets the title for this Page. If no title is set, it will use the slug() to get a name
Gets and sets the menu name for this Page. This is the text that can be used specifically for navigation.
Gets and Sets whether or not this Page is visible for navigation
Gets and Sets whether or not this Page is considered published
Gets and Sets the Page publish date
Gets and Sets the Page unpublish date
Gets and Sets whether or not this Page is routable, ie you can reach it via a URL.
Gets and Sets the process setup for this Page. This is multi-dimensional array that consists of a simple array of arrays with the form array("markdown"=>true) for example
Function to merge page metadata tags and build an array of Metadata objects that can then be rendered in the page.
Gets and Sets the slug for the Page. The slug is used in the URL routing. If not set it uses the parent folder from the path
Get/set order number of this page.
Gets the URL with host information, aka Permalink.
Gets the URL for a page - alias of url().
Gets the url for the Page.
Gets the route for the page based on the route headers if available, else from the parents route and the current Page's slug.
Helper method to clear the route out so it regenerates next time you use it
No description
Gets the route aliases for the page based on page headers.
Gets the canonical route for this page if its set. If provided it will use
that value, else if it's true
it will use the default route.
Gets and sets the identifier for this Page object.
Gets and sets the modified timestamp.
Gets the redirect set in the header.
Gets and sets the option to show the etag header for the page.
Gets and sets the option to show the last_modified header for the page.
Gets and sets the path to the .md file for this Page object.
Gets the relative path to the .md file
Returns the clean path to the page file
Gets and sets the path to the folder where the .md for this Page object resides.
Get/set the folder.
Gets and sets the date for this Page object. This is typically passed in via the page headers
Gets and sets the order by which any sub-pages should be sorted.
Gets and sets the order by which the sub-pages should be sorted.
Gets the manual order set in the header.
Gets and sets the maxCount field which describes how many sub-pages should be displayed if the sub_pages header property is set for this page object.
Gets and sets the taxonomy array which defines which taxonomies this page identifies itself with.
Gets and sets the modular var that helps identify this parent page contains modular pages.
Gets and sets the modular_twig var that helps identify this page as a modular page that will need twig processing handled differently from a regular page.
Gets the configured state of the processing method.
Returns children of this page.
Check to see if this item is the first in an array of sub-pages.
Check to see if this item is the last in an array of sub-pages.
Gets the previous sibling based on current position.
Gets the next sibling based on current position.
Returns the adjacent sibling based on a direction.
Returns whether or not this page is the currently active page requested via the URL.
Returns whether or not this URI's URL contains the URL of the active page.
Returns whether or not this page is the currently configured home page.
Returns whether or not this page is the root node of the pages tree.
Get a collection of pages in the current context.
No description
Returns whether or not this Page object has a .md file associated with it or if its just a directory.
Returns whether or not this Page object is a directory or a page.
Returns whether the page exists in the filesystem.
Details
at line 101
__construct()
Page Object Constructor
at line 118
init(
SplFileInfo $file,
string $extension = null)
Initializes the page instance variables based on a file
at line 151
array
translatedLanguages()
Return an array with the routes of other translated languages
at line 178
array
untranslatedLanguages()
Return an array listing untranslated languages available
at line 201
Object
raw(
string $var = null)
Gets and Sets the raw data
at line 221
frontmatter($var = null)
at line 248
object
header(
object|array $var = null)
Gets and Sets the header based on the YAML configuration at the top of the .md file
at line 367
mixed
language($var = null)
Get page language
at line 382
modifyHeader($key, $value)
Modify a header value directly
at line 393
string
summary(
int $size = null)
Get the summary.
at line 445
setSummary($summary)
Sets the summary of the page
at line 456
string
content(
string $var = null)
Gets and Sets the content based on content portion of the .md file
at line 595
string
getRawContent()
Needed by the onPageContentProcessed event to get the raw page content
at line 605
setRawContent($content)
Needed by the onPageContentProcessed event to set the raw page content
at line 617
mixed
value(
string $name,
mixed $default = null)
Get value from a page variable (used mostly for creating edit forms).
at line 685
rawMarkdown($var = null)
at line 699
MarkdownFile|null
file()
Get file object to the page.
at line 711
save(
bool $reorder = true)
Save page if there's a file assigned to it.
at line 733
Page
move(
Page $parent)
Prepare move page to new location. Moves also everything that's under the current page.
You need to call $this->save() in order to perform the move.
at line 763
Page
copy(
Page $parent)
Prepare a copy from the page. Copies also everything that's under the current page.
Returns a new Page object for the copy. You need to call $this->save() in order to perform the move.
at line 776
Blueprint
blueprints()
Get blueprints for the page.
at line 803
string
blueprintName()
Get the blueprint name for this page. Use the blueprint form field if set
at line 815
validate()
Validate page header.
at line 824
filter()
Filter page header from illegal contents.
at line 838
array
extra()
Get unknown header variables.
at line 849
array
toArray()
Convert page to an array.
at line 862
string
toYaml()
Convert page to YAML encoded string.
at line 872
string
toJson()
Convert page to JSON encoded string.
at line 883
Media
media(
Media $var = null)
Gets and sets the associated media as found in the page folder.
at line 909
string
name(
string $var = null)
Gets and sets the name field. If no name field is set, it will return 'default.md'.
at line 922
string
childType()
Returns child page type.
at line 934
string
template(
string $var = null)
Gets and sets the template field. This is used to find the correct Twig template file to render.
If no field is set, it will return the name without the .md extension
at line 951
null|string
extension(
null $var = null)
Gets and sets the extension field.
at line 962
urlExtension()
at line 979
string
expires(
string $var = null)
Gets and sets the expires field. If not set will return the default
at line 993
string
title(
string $var = null)
Gets and sets the title for this Page. If no title is set, it will use the slug() to get a name
at line 1011
string
menu(
string $var = null)
Gets and sets the menu name for this Page. This is the text that can be used specifically for navigation.
If no menu field is set, it will use the title()
at line 1028
bool
visible(
bool $var = null)
Gets and Sets whether or not this Page is visible for navigation
at line 1053
bool
published(
bool $var = null)
Gets and Sets whether or not this Page is considered published
at line 1073
int
publishDate(
string $var = null)
Gets and Sets the Page publish date
at line 1092
int|null
unpublishDate(
string $var = null)
Gets and Sets the Page unpublish date
at line 1109
bool
routable(
bool $var = null)
Gets and Sets whether or not this Page is routable, ie you can reach it via a URL.
The page must be routable and published
at line 1125
array
process(
array $var = null)
Gets and Sets the process setup for this Page. This is multi-dimensional array that consists of a simple array of arrays with the form array("markdown"=>true) for example
at line 1140
array
metadata(
array $var = null)
Function to merge page metadata tags and build an array of Metadata objects that can then be rendered in the page.
at line 1192
string
slug(
string $var = null)
Gets and Sets the slug for the Page. The slug is used in the URL routing. If not set it uses the parent folder from the path
at line 1211
int|bool
order(
int $var = null)
Get/set order number of this page.
at line 1226
string
permalink()
Gets the URL with host information, aka Permalink.
at line 1237
string
link(
bool $include_host = false)
Gets the URL for a page - alias of url().
at line 1250
string
url($include_host = false, $canonical = false, $include_lang = true)
Gets the url for the Page.
at line 1296
string
route(
string $var = null)
Gets the route for the page based on the route headers if available, else from the parents route and the current Page's slug.
at line 1320
unsetRouteSlug()
Helper method to clear the route out so it regenerates next time you use it
at line 1326
rawRoute($var = null)
at line 1351
array
routeAliases(
array $var = null)
Gets the route aliases for the page based on page headers.
at line 1372
bool|string
routeCanonical(
null $var = null)
Gets the canonical route for this page if its set. If provided it will use
that value, else if it's true
it will use the default route.
at line 1391
string
id(
string $var = null)
Gets and sets the identifier for this Page object.
at line 1405
int
modified(
int $var = null)
Gets and sets the modified timestamp.
at line 1419
array
redirect(
string $var = null)
Gets the redirect set in the header.
at line 1433
boolean
eTag(
boolean $var = null)
Gets and sets the option to show the etag header for the page.
at line 1450
boolean
lastModified(
boolean $var = null)
Gets and sets the option to show the last_modified header for the page.
at line 1467
string|null
filePath(
string $var = null)
Gets and sets the path to the .md file for this Page object.
at line 1485
string
filePathClean()
Gets the relative path to the .md file
at line 1494
relativePagePath()
Returns the clean path to the page file
at line 1507
string|null
path(
string $var = null)
Gets and sets the path to the folder where the .md for this Page object resides.
This is equivalent to the filePath but without the filename.
at line 1524
string|null
folder(
string $var = null)
Get/set the folder.
at line 1538
int
date(
string $var = null)
Gets and sets the date for this Page object. This is typically passed in via the page headers
at line 1556
string
orderDir(
string $var = null)
Gets and sets the order by which any sub-pages should be sorted.
at line 1578
string
orderBy(
string $var = null)
Gets and sets the order by which the sub-pages should be sorted.
default - is the order based on the file system, ie 01.Home before 02.Advark title - is the order based on the title set in the pages date - is the order based on the date set in the pages folder - is the order based on the name of the folder with any numerics omitted
at line 1592
array
orderManual(
string $var = null)
Gets the manual order set in the header.
at line 1607
int
maxCount(
int $var = null)
Gets and sets the maxCount field which describes how many sub-pages should be displayed if the sub_pages header property is set for this page object.
at line 1626
array
taxonomy(
array $var = null)
Gets and sets the taxonomy array which defines which taxonomies this page identifies itself with.
at line 1640
bool
modular(
bool $var = null)
Gets and sets the modular var that helps identify this parent page contains modular pages.
at line 1652
bool
modularTwig(
bool $var = null)
Gets and sets the modular_twig var that helps identify this page as a modular page that will need twig processing handled differently from a regular page.
at line 1674
bool
shouldProcess(
string $process)
Gets the configured state of the processing method.
at line 1703
Collection
children()
Returns children of this page.
at line 1716
boolean
isFirst()
Check to see if this item is the first in an array of sub-pages.
at line 1730
boolean
isLast()
Check to see if this item is the last in an array of sub-pages.
at line 1744
Page
prevSibling()
Gets the previous sibling based on current position.
at line 1754
Page
nextSibling()
Gets the next sibling based on current position.
at line 1765
Page
adjacentSibling(
integer $direction = 1)
Returns the adjacent sibling based on a direction.
at line 1779
bool
active()
Returns whether or not this page is the currently active page requested via the URL.
at line 1799
bool
activeChild()
Returns whether or not this URI's URL contains the URL of the active page.
Or in other words, is this page's URL in the current URL
at line 1824
bool
home()
Returns whether or not this page is the currently configured home page.
at line 1834
bool
root()
Returns whether or not this page is the root node of the pages tree.
at line 1851
Page
find(
string $url,
bool $all = false)
Helper method to return a page.
at line 1866
Collection
collection(
string|array $params = 'content',
boolean $pagination = true)
Get a collection of pages in the current context.
at line 1954
mixed
evaluate(
string $value)
at line 2093
bool
isPage()
Returns whether or not this Page object has a .md file associated with it or if its just a directory.
at line 2106
bool
isDir()
Returns whether or not this Page object is a directory or a page.
at line 2116
bool
exists()
Returns whether the page exists in the filesystem.


|
MOTS Finder
Find non-star-shaped MOTSs
|
Convenience class to create simple evaluators. More...
Public Member Functions | |
| def | __init__ (self, expr, f, sub_evaluators=None) |
| Create an evaluator for a given function. More... | |
| def | is_zero_function (self, n=0) |
| def | __call__ (self, x) |
| Evaluate the expression at a point x. More... | |
| def | diff (self, x, n=1) |
| Evaluate the n'th derivative of the expression at a point x. More... | |
| def | function (self, n=0) |
| Return a callable for the n'th derivative. More... | |
| Public Member Functions inherited from _Evaluator | |
| def | __init__ (self, expr, sub_evaluators=None) |
| Base class init for evaluators. More... | |
| def | domain (self) |
| Domain of this evaluator. More... | |
| def | domain (self, domain) |
| def | is_zero_function (self, n=0) |
| Return whether the n'th derivative of this evaluator is identically zero. More... | |
| def | store_domain (self, obj) |
| Store the domain of this evaluator on the given object. More... | |
Private Attributes | |
| _f | |
| _derivs | |
Additional Inherited Members | |
| Public Attributes inherited from _Evaluator | |
| domain | |
Convenience class to create simple evaluators.
If your expression and the needed derivatives can be represented by simple lambda functions, this convenience class can be used to bypass the need to implement a full evaluator child class.
| def __init__ | ( | self, | |
| expr, | |||
| f, | |||
sub_evaluators = None |
|||
| ) |
Create an evaluator for a given function.
| expr | The expression object for which this evaluator is created. |
| f | Either a simple callable representing the function to evaluate or a tuple/list of functions representing the function and a few of its derivatives. This function/these functions should respect the use_mp setting supplied to the numexpr.NumericExpression._evaluator() call which usually creates these evaluators. |
| sub_evaluators | List of further evaluators required to evaluate this one. |
| def __call__ | ( | self, | |
| x | |||
| ) |
Evaluate the expression at a point x.
| def diff | ( | self, | |
| x, | |||
n = 1 |
|||
| ) |
Evaluate the n'th derivative of the expression at a point x.
| def function | ( | self, | |
n = 0 |
|||
| ) |
Return a callable for the n'th derivative.


| time |
event |
room |
| 09:00 - 17:00 |
Semantic web services
(Tutorial Track)
presenter: Terry Payne,Katia Sycara,Dieter Fensel,Christoph Bussler
|
|
| 09:00 - 12:00 |
Jena Tutorial
(Tutorial Track)
presenter: Jeremy Carroll,Brian McBride,Andy Seaborne
|
|
| 09:00 - 12:00 |
Ontologies: Representation, Engineering, Learning and Applications
(Tutorial Track)
presenter: Steffen Staab,Alexander Maedche
|
|
| 14:00 - 17:00 |
Description Logics for Conceptual Design, Information Access, and Ontology Integration: Research Trends
(Tutorial Track)
presenter: Enrico Franconi
|
|
| time |
event |
room |
| 09:00 - 09:15 |
Opening ceremony
|
|
| 09:15 - 10:15 |
The Grid, Grid Services and the Semantic Web: Technologies and Opportunities
chair: Carole Goble
presenter: Carl Kesselman
|
|
| 10:15 - 10:45 |
Coffee break
|
|
| 10:45 - 12:30 |
Infrastructure I
(Main Track)
chair: Peter Patel-Schneider
- TRIPLE - A Query, Inference, and Transformation Language for the Semantic Web,Michael Sintek, Stefan Decker
- Global vs. Community Metadata Standards: Empowering Users for Knowledge Exchange,Marek Hatala, Griff Richards
- The Usable Ontology: An Environment for Building and Assessing a Domain Ontology,Michele Missikoff, Roberto Navigli, Paola Velardi
- Ontology-Based Integration of XML Web Resources,Bernd Amann, Catriel Beeri, Irini Fundulaki, Michel Scholl
- Four Steps Towards the Widespread Adoption of a Semantic Web,Brian McBride
|
|
| 12:30 - 14:30 |
Lunch
|
|
| 14:30 - 16:15 |
Services I
(Main Track)
chair: Rudi Studer
- Towards High-Precision Service Retrieval,Abraham Bernstein, Mark Klein
- Bringing Together Semantic Web and Web Services,Joachim Peer
- Concurrent Execution Semantics of DAML-S with Subtypes,Anupriya Ankolekar, Frank Huch, Katia P. Sycara
- Semantic Matching of Web Services Capabilities,Massimo Paolucci, Takahiro Kawamura, Terry R. Payne, Katia P. Sycara
- Browsing Schedules - An Agent-Based Approach to Navigating the Semantic Web,Terry R. Payne, Rahul Singh, Katia P. Sycara
|
|
| 16:15 - 16:45 |
Coffee break
|
|
| 16:45 - 18:30 |
Languages I
(Main Track)
chair: Massimo Marchiori
- Layering the Semantic Web: Problems and Directions,Peter F. Patel-Schneider, Dieter Fensel
- Notions of Indistinguishability for Semantic Web Languages,Jaap Kamps, Maarten Marx
- Representing Disjunction and Quantifiers in RDF,Drew V. McDermott, Dejing Dou
- Nonmonotonic Rule Systems on Top of Ontology Layers,Grigoris Antoniou
- Three Implementations of SquishQL, a Simple RDF Query Language,Libby Miller, Andy Seaborne, Alberto Reggiori
|
|
| 19:30 - 21:00 |
Welcome reception
|
CAMINO Terrace |
| time |
event |
room |
| 09:00 - 10:15 |
Research Challenges for the Semantic Web (panel)
chair: Ian Horrocks
presenter: Noboru Shimizu,Murray Burke,Hans-Georg Stork,Bhavani Thuraisingham
|
|
| 10:15 - 10:45 |
Coffee break
|
|
| 10:45 - 12:30 |
Tools and applications
(Main Track)
chair: Heiner Stuckenschmidt
- OntoEdit: Collaborative Ontology Development for the Semantic Web,York Sure, Michael Erdmann, Jürgen Angele, Steffen Staab, Rudi Studer, Dirk Wenke
- A Data Integration Framework for e-Commerce Product Classification,Sonia Bergamaschi, Francesco Guerra, Maurizio Vincini
- SWAD-Europe: Semantic Web Advanced Development in Europe,Dan Brickley, S. Buswell, B. M. Matthews, L. Miller, D. Reynolds, Michael D. Wilson
- ClaiMaker: Weaving a Semantic Web of Research Papers,Gangmin Li, Victoria S. Uren, Enrico Motta, Simon Buckingham Shum, John Domingue
- WebTheme™: Understanding Web Information through Visual Analytics,Mark A. Whiting, Nick Cramer
|
|
| 12:30 - 14:30 |
Lunch
|
|
| 14:30 - 16:15 |
Poster session
(Poster Track)
|
|
| 16:15 - 16:45 |
Coffee break
|
|
| 16:45 - 18:30 |
Infrastructure II
(Main Track)
chair: Steffen Staab
- Benchmarking RDF Schemas for the Semantic Web,Aimilia Magkanaraki, Sofia Alexaki, Vassilis Christophides, Dimitris Plexousakis
- Integrating Vocabularies: Discovering and Representing Vocabulary Maps,Borys Omelayenko
- Towards a Modification Exchange Language for Distributed RDF Repositories,Wolfgang Nejdl, Wolf Siberski, Bernd Simon, Julien Tane
- Towards Semantic Web Mining,Bettina Berendt, Andreas Hotho, Gerd Stumme
- Consistency Checking of Semantic Web Ontologies,Kenneth Baclawski, Mieczyslaw M. Kokar, Richard J. Waldinger, Paul A. Kogut
|
|
| 20:00 - 22:30 |
Conference diner
|
Restaurant LE DUNE (on the Lagoon) |
| time |
event |
room |
| 09:00 - 09:15 |
Best paper and best reviewer awards ceremony
|
|
| 09:15 - 10:15 |
Semantic Web Enabled Web Services
chair: Jim Hendler
presenter: Dieter Fensel
|
|
| 10:15 - 10:45 |
Coffee break
|
|
| 10:45 - 12:25 |
Services II
(Main Track)
chair: Yun Peng
- Semantic Configuration Web Services in the CAWICOMS Project,Alexander Felfernig, Gerhard Friedrich, Dietmar Jannach, Markus Zanker
- DAML-S: Web Service Description for the Semantic Web,Mark H. Burstein, Jerry R. Hobbs, Ora Lassila, David L. Martin, Drew V. McDermott, Sheila A. McIlraith, Srini Narayanan, Massimo Paolucci, Terry R. Payne, Katia P. Sycara
- Sesame: A Generic Architecture for Storing and Querying RDF and RDF Schema,Jeen Broekstra, Arjohn Kampman, Frank van Harmelen
- A Mini-experiment in Semantic Annotation,Guus Schreiber, Inger I. Blok, Daan Carlier, Wouter P. C. van Gent, Jair Hokstam, Uri Roos
- Business and Enterprise Ontology Management with SymOntoX,Michele Missikoff, Francesco Taglino
|
|
| 12:30 - 14:30 |
Lunch
|
|
| 14:30 - 16:15 |
Languages II
(Main Track)
chair: Jérôme Euzenat
- Building the Semantic Web on XML,Peter F. Patel-Schneider, Jérôme Siméon
- Taking the RDF Model Theory Out for a Spin,Ora Lassila
- A Formal Model for Topic Maps,Pascal Auillans, Patrice Ossona de Mendez, Pierre Rosenstiehl, Bernard Vatant
- Is Participation in the Semantic Web Too Difficult?,Stefan Haustein, Jörg Pleumann
|
|
| 16:15 - 16:45 |
Coffee break
|
|
| 16:45 - 18:30 |
Infrastructure III
(Main Track)
chair: Brian McBride
- Automatic Generation of Java/SQL Based Inference Engines from RDF Schema and RuleML,Andreas Eberhart
- Matching RDF Graphs,Jeremy J. Carroll
- Trusting Information Sources One Citizen at a Time,Yolanda Gil, Varun Ratnakar
- Querying the Semantic Web: A Formal Approach,Ian Horrocks, Sergio Tessaris
- An RDF NetAPI,Andy Seaborne
|
|


{% extends 'shared/base.html' %} {% load static %} {% block site_title %} Home {% endblock %} {% block index_photo %} {% endblock %} {% block site_content %}
Each piece made is carefully considered and is either limited edition or one-of-a-kind. Joanna believes that the person wearing her jewellery deserves to feel special & the knowledge that each piece is either unique or limited edition contributes hugely to that ethos.
Read more about us


About the workshop
In continual learning, models can continually accumulate knowledge over time without the need to retrain from scratch, with particular methods aimed to alleviate forgetting. It can continually learn from a stream of experiential data, building on what was learnt previously, while being able to reapply, adapt and generalize to new situations. This is particularly important when there are changes in the data streams. Current predictive models need to be adapted to these changes (drifts) as soon as possible while maintaining good performance measures (e.g. accuracy, time, delay, energy efficiency).
The aim of this workshop is to bring together researchers from the areas of continual learning, model adaptation and concept drift in order to encourage discussions and new collaborations on solving the problems in this domain. We like to encourage state-of-the art research in the area of continual learning, model adaptation and concept drift. Beyond that we encourage research that demonstrates the applicability of these research in various areas including (but not limited to) earth and environmental science, sensor networks and transportation network. We encourage the submissions of research that incorporates the fundamentals of green AI. Therefore, this workshop encourages submissions that attempts to address any of these issues.
This workshop will provide a forum for international researchers and practitioners to share and discuss their original and interesting work on addressing new challenges and research issues in the area.
The topics of interest of this workshop include (but not limited to) the following:
- New data-level and algorithm-level approaches in non-stationary environments for continual learning, model adaptation and concept drift.
- Adaptive ensemble approaches for data streams.
- Passive and active approaches to dealing with concept drift.
- Approaches to dealing with recurring concepts.
- Semi-supervised learning and active learning approaches.
- Explainable AI (XAI) approaches for drift explanation.
- Performance evaluation in incremental and online learning scenarios.
- Case studies and real-world applications.
- Green AI for data streams.
Workshop Program
Workshop Program (Session B4)
This year, ICDM is held online. The paper presentations will be in the form of recorded videos, which will be made available to the conference attendees before the conference, on the online platform. On the day of the workshop, each main author is invited to give a short live introduction of his paper and to respond to the questions of the attendees.| 5 mins |
Opening |
Mykola Pechenizkiy |
|---|---|---|
| 2 + 5 mins |
An unsupervised methodology for online drift detection in multivariate industrial datasets |
Sarah Klein and Mathias Verbeke |
| 2 + 5 mins |
Restructuring of Hoeffding Trees for Trapezoidal Data Streams |
Christian Schreckenberger, Tim Glockner, Christian Bartelt, and Heiner Stuckenschmidt |
| 2 + 5 mins |
MIR_MAD: An Efficient and On-line Approach for Anomaly Detection in Dynamic Data Stream |
Chang How Tan, Vincent CS Lee, and Mahsa Salehi |
| 2 + 5 mins |
TEDD: Robust Detection of Unstable Temporal Features |
Ricardo Pereira, Bruno Laraña, Nádia Soares, and Miguel Araújo |
| 2 + 5 mins |
LbR: A New Regression Architecture for Automated Feature Engineering |
Meng Wang, Zhijun Ding, and Meiqin Pan |
| 2 + 5 mins |
Pelican: Continual Adaptation for Phishing Detection |
Wernsen Wong and Gillian Dobbie |
| 2 + 5 mins | Learning Student Interest Trajectory for MOOC Thread Recommendation |
Shalini Pandey, Andrew Lan, George Karypis, and Jaideep Srivastava |
Accepted Papers
- Ricardo Pereira, Bruno Laraña, Nádia Soares, and Miguel Araújo, "TEDD: Robust Detection of Unstable Temporal Features"
- Sarah Klein and Mathias Verbeke, "An unsupervised methodology for online drift detection in multivariate industrial datasets"
- Christian Schreckenberger, Tim Glockner, Christian Bartelt, and Heiner Stuckenschmidt, "Restructuring of Hoeffding Trees for Trapezoidal Data Streams"
- Wernsen Wong and Gillian Dobbie, "Pelican: Continual Adaptation for Phishing Detection"
- Meng Wang, Zhijun Ding, and Meiqin Pan, "LbR: A New Regression Architecture for Automated Feature Engineering"
- Chang How Tan, Vincent CS Lee, and Mahsa Salehi, "MIR_MAD: An Efficient and On-line Approach for Anomaly Detection in Dynamic Data Stream"
- Shalini Pandey, Andrew Lan, George Karypis, and Jaideep Srivastava "Learning Student Interest Trajectory for MOOC Thread Recommendation"
Submission
Submission
Paper submissions should be limited to a maximum of 8 pages plus 2 extra pages, in the IEEE 2-column format used by the IEEE ICDM 2020 conference, including the bibliography and any possible appendices. All submissions will be peer reviewed by the Program Committee on the basis of technical quality, relevance to scope of the conference, originality, significance, and clarity. Each submission should be regarded as an undertaking that, if the paper is accepted, at least one of the authors must register and present the work. By the unique ICDM tradition, all accepted workshop papers will be published in the dedicated ICDMW proceedings published by the IEEE Computer Society Press. Therefore, papers must not have been accepted for publication elsewhere or be under review for another workshop, conferences or journals.
Submission Link
Submission portal: https://wi-lab.com/cyberchair/2020/icdm20/scripts/ws_submit.php?subarea=S