The {@link org.htmlparser.http.ConnectionManager} class adds
The {@link org.htmlparser.http.ConnectionMonitor} interface is a callback mechanism for the ConnectionManager to notify an interested application when an HTTP connection is made. Example uses may include conditioning the connection further, accessing HTTP header information, or providing reporting or statistical functions. Callbacks are not performed for FileURLConnections, which are also handled by the connection manager.
The {@link org.htmlparser.http.Cookie} class is a container for cookie data received and sent in HTTP requests and responses. It may be necessary to prime the ConnectionManager with cookies received via a login procedure in order to access protected HTML content.
A typical use of this package, might look something like this:
ConnectionManager manager = Parser.getConnectionManager (); // set up proxying manager.setProxyHost ("proxyhost.mycompany.com"); manager.setProxyPort (8888); manager.setProxyUser ("FredBarnes"); manager.setProxyPassword ("secret"); // set up cookies Cookie cookie = new Cookie ("USER", "FreddyBaby"); manager.setCookie (cookie, "www.freshmeat.net"); cookie = new Cookie ("PHPSESSID", "e5dbeb6152e70d99427f2458d8969f8b"); cookie.setDomain (".freshmeat.net"); manager.setCookie (cookie, null); // set up security to access a password protected URL manager.setUser ("FredB"); manager.setPassword ("holy$cow"); // set up (an inner class) for callbacks ConnectionMonitor monitor = new ConnectionMonitor () { public void preConnect (HttpURLConnection connection) { System.out.println (HttpHeader.getRequestHeader (connection)); } public void postConnect (HttpURLConnection connection) { System.out.println (HttpHeader.getResponseHeader (connection)); } }; manager.setMonitor (monitor); // perform the connection Parser parser = new Parser ("http://frehmeat.net");The ConnectionManager used by the Parser class is actually held by the {@link org.htmlparser.lexer.Page#mConnectionManager Page} class. It is accessible from the Parser (or the Page class) via {@link org.htmlparser.Parser#getConnectionManager getConnectionManager()}. It is a static (singleton) instance so that subsequent connections made by the parser will use the contents of the cookie jar from previous connections. By default, cookie processing is not enabled. It can be enabled by either setting a cookie or using {@link org.htmlparser.http.ConnectionManager#setCookieProcessingEnabled setCookieProcessingEnabled()}.


| DOSE: |
2.0 g |
insufflated |
Cocaine |
(powder / crystals) |
This is insanity...I am in love and in hate all at once. And it all revolves around my addciction to this angel, this demon...Blow.....
I've used drugs since I was 13 years old. Ten years later, I've done it ALL...and this is the only thing that has imprisoned me so tragically, so beautifully. Poetically tortured, perfectly poisoned - it's such bliss, such elation, to be high...life is beautiful, then....And it's such darkness when I'm alone, without, and facing work and bills and well, reality. I love to be high and I think I always will.
I used to be a coke-head...4 years ago. That ended with my overwhelming depression and suicide attempts....I broke away from that crowd and instead turned to a morphine and ecstacy diet...I said I'd never get that way again...blowin' all night, sleepin all day...only with the help of valium or oc's...And here I am again. All grown up, responsible, mature...with a Bachelor's degree and a cool job.....all addicted to cocaine.
 And I am not rich...but I will go without other things so that I can afford what i need....and I need to get high. I sit and daydream about being out with 'my boys' - my little group of all male friends who love me as I love them....as we love getting way high and talking, inventing, revelling!!!!!  So we think at the time.....Maybe we are...Always twisted up in the ride...up, up, up so high...down, down, DOWN hard...it hurts then. But there are always tomorrows.....i think.
I am depressed. I cannot sleep at night, even when I'm not high. I am irritable and pissy and selfish as hell....I am in the process of learning about myself....I impatiently wait to go out and rage, I think about the coke, the lines, the drip, the stimulation of the mind.......And I can't wait to numb myself again...all the suffering is worth it.
Here's my theory: some people get high. it's a way of life, just like it's a way of life to get hooked on t.v sitcoms or to raise kids all day and night.... it's just what some people do. if they are happy, when they get high....then that's all that matters. that happiness makes up for the time spent hurting. if they die from it, then that's that....that was their life, and they died doing their life's work. If you are unhappy doing drugs, then you need to stop. if you are happy....that's life...keep living.
And who's to say that living is not dying, or vice versa........
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.


The DOM_Attr
class refers to an attribute of an XML element
Constructors and assignment operators
| |||||||||
Destructor
| |||||||||
Functions introduced in DOM Level 2.
| |||||||||
Getter functions
| |||||||||
Setter functions
|
Cloning function.
Destructor.
Equality and Inequality operators.
Functions to modify the DOM Node.
newChild
before the existing child node
refChild
oldChild
with newChild
in the list of children, and returns the oldChild
node
oldChild
from the list
of children, and returns it
newChild
to the end of the list of children of
this node
Get functions.
NodeList
that contains all children of this node
NamedNodeMap
containing the attributes of this node (if it
is an Element
) or null
otherwise
DOM_Document
object associated with this node
Query functions.
Set functions.
TheDOM_Attr
class refers to an attribute of an XML element. Typically the allowable values for the attribute are defined in a documenttype definition.
DOM_Attr
objects inherit theDOM_Node
interface, but since attributes are not actually child nodes of the elements they are associated with, the DOM does not consider them part of the document tree. Thus, theDOM_Node
attributesparentNode
,previousSibling
, andnextSibling
have a null value forDOM_Attr
objects. The DOM takes the view that attributes are properties of elements rather than having a separate identity from the elements they are associated with; this should make it more efficient to implement such features as default attributes associated with all elements of a given type. Furthermore, attribute nodes may not be immediate children of aDocumentFragment
. However, they can be associated withElement
nodes contained within aDocumentFragment
. In short, users of the DOM need to be aware thatAttr
nodes have some things in common with other objects inheriting theNode
interface, but they also are quite distinct.
DOM_Attr
that refers to the
same underlying Attribute as the original. See also DOM_Node::clone(),
which will copy an actual attribute, rather than just creating a new
reference to the original attribute.
DOM_Element
node this attribute is attached to or
null
if this attribute is not in use.
"Experimental - subject to change"
alphabetic index hierarchy of classes
|
Xerces-C XML Parser for C++ Version 1.1 |
|
|
generated by doc++


I have been working on creating some types which allow me to wrap an array and index it with an int
which has a Unit of Measure (UoM). Right now, if you want to index into an array with an int
that has a UoM, you need to remove the units.
[<Measure>] type ItemIdx
let a = [|1.0 .. 10.0|]
let idx = 1<ItemIdx>
let x = a[idx] // This will raise an error saying that the type `int<ItemIdx>` is not correct
let y = a[int idx] // This will work because the units are removed when calling `int`
You may think, “Matthew, that call to int
is going to cause a problem, isn’t it?” That’s a great question. Let’s put together an experiment and see what assembly is generated. This code…
let test (a: array<float>) =
let x = 1
a[x]
Will generate this assembly.
; Core CLR <IP_ADDRESS>210 on amd64
_.test(System.Double[])
L0000: sub rsp, 0x28
L0004: vzeroupper
L0007: cmp dword ptr [rcx+8], 1
L000b: jbe short L0017
L000d: vmovsd xmm0, [rcx+0x18]
L0012: add rsp, 0x28
L0016: ret
L0017: call 0x00007ffd109ee750
L001c: int3
Let’s add a UoM to the index and see what happens when we use it to index into the array while using int
to remove the units.
[<Measure>] type ItemIdx
let test (a: array<float>) =
let x = 1<ItemIdx>
a[int x] // Does calling `int` here incur a performance penalty?
And here is the assembly…
; Core CLR <IP_ADDRESS>210 on amd64
_.test(System.Double[])
L0000: sub rsp, 0x28
L0004: vzeroupper
L0007: cmp dword ptr [rcx+8], 1
L000b: jbe short L0017
L000d: vmovsd xmm0, [rcx+0x18]
L0012: add rsp, 0x28
L0016: ret
L0017: call 0x00007ffd109ee750
L001c: int3
You should notice that we are getting the exact same result. The F# compiler is smart enough to see that we are calling the int
conversion function on a type that is already an int
so it removes it.
This kind of thing is annoying to have to do manually all the time and I really wanted a wrapper around an array
which had a UoM type associated with the index. I decided to code up something simple.
type ClassWrapper<[<Measure>] 'Measure, 'Value>(values: array<'Value>) =
member _.Values = values
member this.Item
with get (idx: int<'Measure>) =
this.Values.[int idx]
member this.Length =
LanguagePrimitives.Int32WithMeasure<'Measure> this.Values.Length
We now have a class which is taking an array<'Value>
as part of its constructor and it is giving us a view of the underlying array
which is forcing the use of an int
with a UoM to retrieve values. This allows us to do the following.
[<Measure>] type ItemIdx
let classWrapper =
[|1.0 .. (float numberCount)|]
|> ClassWrapper<ItemIdx, float>
ClassWrapper
will now force us to use an int<ItemIdx>
to retrieve values. You may think this is cumbersome but if you are working with many arrays simultaneously it can be easy to mix up which index is meant to be associated with which array. I like the compiler to be able to help me out so the idea of using UoM as a way provide some guarantees is nice provided there is not a speed penalty.
I also thought, “You know, why not use a Struct instead of a Class to wrap the value? Using a Struct means the reference to the array will be on the stack, right? That should save you chasing a reference before getting to the array.” Rather than assuming that was the case I decided to put together a test using BenchmarkDotNet to verify my assumption was correct.
The Setup
The first thing I need to do is define a Struct for wrapping my array
.
[<Struct>]
type StructWrapper<[<Measure>] 'Measure, 'Value> =
val Values : array<'Value>
new (values: array<'Value>) =
{
Values = values
}
member inline this.Item
with inline get (idx: int<'Measure>) =
this.Values[int idx]
member this.Length =
LanguagePrimitives.Int32WithMeasure<'Measure> this.Values.Length
Then I setup some test data. I typically am working with small arrays so I’m just going to be summing up the values from 1.0
to 100.0
and I’ll perform that 100,000
times. I create my three different types for my testing.
let iterations = 100_000
let numberCount = 100
let rawArray = [|1.0 .. (float numberCount)|]
let classWrapper =
[|1.0 .. (float numberCount)|]
|> ClassWrapper<ItemIdx, float>
let structWrapper =
[|1.0 .. (float numberCount)|]
|> StructWrapper<ItemIdx, _>
Alright, data prepared, time to create some tests. I open the namespaces I need from BenchmarkDotNet and create my Benchmark
class. I create three tests to see which approach is faster. I’m assuming that the raw array is the absolute limit (short of SIMD).
type Benchmarks () =
[<Benchmark>]
member _.RawArray () =
let mutable iterationIdx = 0
let mutable result = 0.0
while iterationIdx < iterations do
let mutable idx = 0
let len = rawArray.Length
while idx < len do
result <- result + rawArray[idx]
idx <- idx + 1
result <- 0.0 // Reset
iterationIdx <- iterationIdx + 1
result
[<Benchmark>]
member _.ClassWrapper () =
let mutable iterationIdx = 0
let mutable result = 0.0
while iterationIdx < iterations do
let mutable idx = 0<ItemIdx>
let len = classWrapper.Length
while idx < len do
result <- result + classWrapper[idx]
idx <- idx + 1<ItemIdx>
result <- 0.0 // Reset
iterationIdx <- iterationIdx + 1
result
[<Benchmark>]
member _.StructWrapper () =
let mutable iterationIdx = 0
let mutable result = 0.0
while iterationIdx < iterations do
let mutable idx = 0<ItemIdx>
let len = structWrapper.Length
while idx < len do
result <- result + structWrapper[idx]
idx <- idx + 1<ItemIdx>
result <- 0.0 // Reset
iterationIdx <- iterationIdx + 1
result
I run the benchmarks and get an unexpected result.
| Method | Mean | Error | StdDev |
|---|---|---|---|
| RawArray | 6.434 ms | 0.1241 ms | 0.1100 ms |
| ClassWrapper | 6.969 ms | 0.1177 ms | 0.1101 ms |
| StructWrapper | 23.983 ms | 0.2800 ms | 0.2619 ms |
I am shocked that the StructWrapper
performed so much more poorly that either the RawArray
or ClassWrapper
. This does not make any sense to me. If anything, StructWrapper
should be faster than ClassWrapper
but these numbers aren’t lying. The .NET Runtime has some special optimizations it can perform for Struct. In .NET 6.0 this includes keeping the values of the struct in the registers. You can check out the work here
The Fix
I go to StackOverflow and Twitter to see if anyone had insight into what is going on. Upon the recommendation of Phillip Carter I move the code for generating the test data to inside the Benchmark
class. When I do this, I get these results.
| Method | Mean | Error | StdDev |
|---|---|---|---|
| InternalRawArray | 5.788 ms | 0.0241 ms | 0.0225 ms |
| InternalClassWrapper | 5.983 ms | 0.0174 ms | 0.0154 ms |
| InternalStructWrapper | 5.980 ms | 0.0423 ms | 0.0396 ms |
Now the performance is roughly equivalent. Apparently, there are some gotchas with the BenchmarkDotNet library and F# modules. I go ahead and define some additional types for wrapping an array
. I wrap an array
using a Record and a Record with the [<Struct>]
attribute. I create tests where the data is defined inside the Benchmark
class and tests where the data is defined in a separate module. Here is what I ended up finding.
| Method | Mean | Error | StdDev |
|---|---|---|---|
| InternalRawArray | 5.839 ms | 0.0517 ms | 0.0431 ms |
| ExternalRawArray | 6.537 ms | 0.0429 ms | 0.0401 ms |
| InternalClassWrapper | 5.866 ms | 0.0183 ms | 0.0203 ms |
| ExternalClassWrapper | 6.903 ms | 0.0734 ms | 0.0686 ms |
| InternalStructWrapper | 6.032 ms | 0.0933 ms | 0.0827 ms |
| ExternalStructWrapper | 21.042 ms | 0.0932 ms | 0.0826 ms |
| InternalRecordApproach | 5.920 ms | 0.0728 ms | 0.0608 ms |
| ExternalRecordApproach | 6.899 ms | 0.0760 ms | 0.0674 ms |
| InternalStructRecordApproach | 5.899 ms | 0.0947 ms | 0.1297 ms |
| ExternalStructRecordApproach | 5.841 ms | 0.0576 ms | 0.0450 ms |
As you can see, I stumbled upon what appears to be a single outlier. You can also see that across the board the tests that are operating on data defined inside the Benchmark
class outperform those where the data is defined externally. The only exception is the Struct Record but the difference in means is withen the noise of the tests. I think it’s important for an F# developer whose looking for performance to be aware that where data is declared can affect your benchmarks and could lead to incorrect conclusions. The guidance I received from Phillip was to declare the data in the Benchmark
class. Bartosz Adamczewski recommends writing the library code in F# and the benchmarks in C#. This makes sense as I believe the BenchmarkDotNet library considers the C# use case primarily.
If you would like to see the full set of tests you can check out the repo here.
Please send me an email at<EMAIL_ADDRESS>if you have any questions and subscribe so you can stay on top new posts and products I am offering.


{% extends "base.html" %} {% block htmlhead %} {% endblock %} {% block content %}
This page attempts to show the current battery status of the host .
This html page uses socket.io to establish an event listener for a "{{sio_evt_battery_changed}}" event. The server side, implement using Flask and Flask-SocketIO, establishes a background thread that attaches a signal handler for all detected batteries to the system DBUS and sends back the events to the browser.


## Dynamic Pictures `PacemPictureElement` allows to dynamically render image sets onto the screen. It may contain `PacemPictureSourceElement` items that may adapt and provide the best possible source based on the actual browser.


This is the Javadoc for the Data Accounts (Spring Data) example in O'REILLY Learning Spring and Spring Boot.


| for [decreasing] [id ] : first .. last [by increment] | ||||||||
| statementsAndDeclarations | ||||||||
| end for |
Increment must be a positive integer value. When the by clause is present, the for loop terminates as soon as the identifier would become greater than last, unless decreasing is present. If decreasing is present, the loop terminates when the identifier would become less than last.
will not cause an overflow.
for i : 1 .. maxint
for i : 1 .. 10
put i
end for
for i : 1 .. 10 by 2
put i
end for
for decreasing j : 10 .. 1
put j
end for
for decreasing j : 10 .. 1 by 4
put j
end for
for j : 1 .. 10 by 20
put j
end for
for j : 5 .. 2
put j
end for
If first is a value beyond last, there will be no repetitions (and no error message). The counting identifier is always increased (or decreased) by 1 or increment if the by clause is present. Executing an exit statement inside a for statement causes a jump to just beyond end for. You are not allowed to change the counting variable (for example, you are not allowed to write i := 10).
The counting identifier can be omitted. In this case, the statement is just as before, except that the program cannot use the value of the identifier.
If decreasing is not present, first .. last can be replaced by the name of a subrange type, for example by dozen, declared by:
Procedures, functions and modules cannot be declared inside a for statement. Just preceding the statements and declarations, you are allowed to write an "invariant clause" of the form:
This clause is equivalent to: assert trueFalseExpn.
type dozen : 1..12
invariant trueFalseExpn


Weather Radar - Landrienne, QC
2019-09-11
Due to a service disruption with XLA - Landrienne, QC, the radar imagery is currently unavailable. Environment Canada technicians are aware and working to resolve the outage. Environment Canada apologizes for the inconvenience. Thank you for your patience.
What we are doing
Weather Forecasts
Weather Alerts
Weather Resources
- Date modified:


populations Black Sea aegypti population Ae. using genetic Aedes analysis New file dataset individuals microsatellite World Asia SNP number {border-style Fig. px;} region #ffffff;} Additional Figure data used Table []. analyses test based years SNPs generations structure Bayesian Turkey [], recent (Fig. Analysis assigned clusters dengue differentiation samples time yellow (see STRUCTURE assignment different fever indicated populations. reference reported (Additional Aaa Components Ecol Mediterranean Principal alleles ancestral area datasets estimated genetics implemented origin supported Genetic Population S). allele distribution diversity established group likely panel phylogenetic present program px; regions richness scenarios species tests {font-family ABC FST Georgia However, allelic consistent dataset, dataset. details font-size form high history human invasion loci major method model mosquito provided software vector worldwide < Africa Asian DNA Madeira Model RASP ae. available average bold chip combined compared distinct double; geographical heterozygosity included independent microsatellites mosquitoes performed plots presented remnant run sampling single support version year (Figs. (b) (for Aaa, European Funding MCMC Populations Scenario South ago analysis. arrived bar border-color border-width bottleneck divergence estimates evidence expected frequency groups historical individual localities markers mean package populations, record represented scenario set solid; studies tropical v... values {font-style {font-weight (Diptera: (Scenario (a) (i) (ii) .). AC, Aaf Africa. African Allele Assignment Bottleneck Discriminant Evanno Foundation Likelihood Maximum Mutation North PCA Results S), TPM Trop World. aegypti, age article ascertainment bias correction correctly courier; em; equally equilibrium evolutionary genetically genotyped identified identify information large later levels manuscript. methods mutation new observed occurred older online original patterns plotted private probability pt;} range shown significant size small supplementary times tree use world


--- extends: base.j2 title: Donate to devilesk description: Support the site and donate to devilesk. header: Donate page_script: donate no_breadcrumbs: true --- {% block main %}


Fabinho misses out for leaders Liverpool
Midfielder could miss as much as two months.
Liverpool midfielder Fabinho has been ruled out until the new year but manager Jurgen Klopp has no other new injury problems ahead of the visit of Brighton.
The Brazil international, who was actually suspended this weekend, could be out for six to eight weeks with ankle ligament damage.
Fellow midfielder Naby Keita has recovered from illness but centre-back Joel Matip faces another scan on a knee problem which has kept him out since October 20.
Brighton will have Lewis Dunk and young forward Aaron Connolly back for the trip to Anfield.
Captain Dunk missed the 2-0 loss to Leicester after picking up his fifth caution of the season while Republic of Ireland international Connolly has recently been sidelined with a groin injury.
Both return for the clash with Liverpool, but Bernardo remains short of match fitness despite featuring for the Under-23s this week and Solly March is a doubt with tightness in his groin.
Liverpool provisional squad: Alisson, Alexander-Arnold, Lovren, Van Dijk, Robertson, Wijnaldum, Oxlade-Chamberlain, Keita, Salah, Firmino, Mane, Adrian, Gomez, Lallana, Shaqiri, Milner, Henderson, Origi, Brewster.
Brighton provisional squad: Ryan, Button, Dunk, Duffy, Schelotto, Montoya, Burn, Webster, Balogun, Stephens, Propper, Gross, Mooy, March, Alzate, Maupay, Trossard, Murray, Connolly, Jahanbakhsh.


{% extends "base/base.html" %} {% load staticfiles %} {% block css %} {% endblock %} {% block content %}
Fish like good snacks. DocFish isn't any different. Thus, the currency of DocFish is the fish gil. Every time you make an annotation or a markup, you earn one gil, and you can use these gils for good snacks. Why not get started, and view snacks to choose some that you like.


Buy A Google Nest Mini & Get A Free Wemo Mini Smart Plug
Best Buy isn't putting the Nest Mini on sale just yet, but it is bundling some things with it to make it a really great buy.
Right now, you can purchase the Nest Mini for its regular price of $49.99, and get a free Wemo Mini Smart Plug (a $29.99 value) with it. That makes this a really good deal.
Nest Mini also comes with a three month trial to Pandora Premium and a three month SiriusXM Premiere subscription.
Advertisement
The Nest Mini is the new version of the Google Home Mini – but with a new name, since all of Google's smart home products are now under the "Nest" name. There are a few changes to the Nest Mini, but not many. The biggest change on the outside is the charging port. It's no longer micro USB, unfortunately.
It still has the Google Assistant built-in, so you are able to talk to your assistant and get things done pretty easily. This includes controlling other smart home products, asking Google for the current weather, or the traffic conditions. And of course, asking Google some questions.
Now this is a smart speaker, so you still have the ability to play music on this speaker. It supports services like Spotify, Google Play Music, YouTube Music, Amazon Music Unlimited and so much more. Making it great for streaming music from your favorite streaming service.
Advertisement
The Nest Mini is going to be a great stocking stuffer this year, and while it's not discounted right now, getting a free smart plug is definitely worth taking advantage of this deal. And it can be a stocking stuffer for someone else on your list too!
You can pick up the Nest Mini from Best Buy on sale right now by clicking here. But you'd better hurry as this bundle won't last all that long.
Google Nest Mini - Best Buy - $49
Advertisement


June 14, 2015
Method: Map
I'm quite new to the realm of Ruby. Don't get me wrong, I'm a hughe fan. There are just a few things (many, many things) that I don't quite understand yet. I'm going to throw some concept descriptions down below, but just so you know where I'm going with this - this post is about the Ruby 'map' method. It's a super-simple, super-useful method. See below for descriptions and examples.
Define
Alias - Methods with different names that operate identically. Often included out of consideration for programmers that use multiple languages (map
and collect
are aliases).
Module - Modules are a way of grouping together methods, classes, and constants - like a package! Collection of code that someone has written that you can now use. Reuseable code.
Mixin - ??? (like I said above, I don't know everything, yet)
The Enumerable Module (the map method belongs to this module) - traversal (iterative), can do serching, sorting, and comparisons. Really Useful Stuff.
The Map Method - Takes an array, performs a specified operation or operations on each element, returns a new array with new elements.
Destuctive vs. Nondestructive Methods - map
is a nondestructive method, map!
is a destructive method. The only difference between the two is that map!
will change (destroy) the array you give it, and map
will not. map
will create and return a new Array instance with your new values.
Examples
input_array = [1,2,3,4,5] # => [1,2,3,4,5]
new_array = input_array.map { |i| i + 5 } # => [6,7,8,9,10]
input_array # => [1,2,3,4,5]
new_array = input_array.map! { |i| i + 5 } # => [6,7,8,9,10]
input_array # => [6,7,8,9,10]
In Conclusion:
new_array = input_array.map { |i| code block }
# i = current array value,
# i goes from input_array[0] to input_array[input_array.length - 1]
# code block = operations to perform with/on each array value
# => (arrow means 'returns') new array with values altered according to the code block
Hopefully that made sense. Can anyone explain what a mixin is? (Edit - Read this post I made about Modules, Classes, Namespace, and Mixins).


Hello there! Thanks for checking out EasyLightbox. This is an example page. Take a look at the source for this page to get an idea for how to use it!
Show lightbox
You can also call EasyLightbox.showLightbox("myLightboxId") to show the lightbox and EasyLightbox.closeLightbox() to close the lightbox.
P.S. Try appending #myEasyLightbox to the address bar to see how you can open up the lightbox on page load.


The code for this assignment is stored in the ‘meerkat’ package. It contains helper functions that are not exported and for which no visible documentation was written. At the start of each part, I give a link to the R-code hosted on GitHub where you can view the code.
The code for the t-test can be found here
1. Create a function that computes the t-test.
See the code for the t-statistic here and the pooled variance here
The t_test
function can be found here
2. Test your function with the following data obtained from a study by air force psychologists conducting research into the relative effectiveness of training pilots (see Table 1). The first training method consists of computer simulated flight instruction (CSFI) while the second training method uses traditional flight instruction (TFI). The 18 pilots were randomly assigned to the two experimental conditions CSFI and TFI and the performance test scores in each condition are displayed in Table 1. Calculate the t-statistic with your newly created function and check the results by analyzing the same data with the in-built R function t.test and compare the results.
library(meerkat)
# Create two variables
CSFI <- c(2,5,5,6,6,7,8,9)
TFI <- c(1,1,2,3,3,4,5,7,7,8)
# Calculate t-test
set.seed(500)
tt1 <- meerkat::t_test(CSFI, TFI, variance_equal = TRUE,
bootstrap_ssize = 0.7,
R=1000)
tt1
## Two-sided t-test with equal variances.
##
## Summary stats:
## x y
## n 8 10
## mean 6 4.1
## var 4.57 6.54
## ------------------------
## Pooled variance: 5.68
##
## t-statistic df p-value
## 1.68 16 0.112
##
## Bootstrapped 95% CI (Naive bootstrap):
## Lower Upper Avg. Bias
## -0.49 4.68 1.6 0.08
The results indicate that there is no statistically different performance between pilots who use traditional flight instructions and pilots who are trained using computer-simulated flight instruction.
When we compare this to the built-in R function, we get:
t.test(CSFI, TFI, var.equal = TRUE)
##
## Two Sample t-test
##
## data: CSFI and TFI
## t = 1.6805, df = 16, p-value = 0.1123
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.4967883 4.2967883
## sample estimates:
## mean of x mean of y
## 6.0 4.1
From the t-test We observe that the 95% confidence interval contains \(0\). This means that we may conclude there is no effect.
3. Add code to your function that calculates the p-value for a two-sided t-test.
See the code here
4. The last part of your function consists of organizing the output in the form of a list. The output should consist of at least the value of the t-statistic and the p-value. You are free to add other statistics of interests.
The print method of the t_test()
function prints the information returned by this function in a neatly organized way.
The t_test()
function returns an S3 object containing:
t1 <- t_test(CSFI, TFI)
names(t1)
## [1] "inputs" "summary_statistics" "test"
## [4] "CI"
The code for the linear model can be found here
# Load gala data
data("gala")
1. Use the in-built R-function for linear regression and the summary() function to obtain the output for a multiple linear regression analysis on the variables described. Obtain predicted values and residuals using the extractor functions. Make a plot of the predicted values against the residuals. Give an interpretation of the results of the regression model and the plot
# Run a linear regression model
mod1 <- lm("Species ~ Area + Elevation + Endemics", data = gala)
summary(mod1)
##
## Call:
## lm(formula = "Species ~ Area + Elevation + Endemics", data = gala)
##
## Residuals:
## Min 1Q Median 3Q Max
## -67.691 -10.530 2.387 10.529 72.723
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -15.891237 7.569210 -2.099 0.0456 *
## Area 0.012669 0.008936 1.418 0.1681
## Elevation -0.041439 0.023653 -1.752 0.0916 .
## Endemics 4.331791 0.304686 14.217 8.97e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 27.29 on 26 degrees of freedom
## Multiple R-squared: 0.9492, Adjusted R-squared: 0.9433
## F-statistic: 161.8 on 3 and 26 DF, p-value: < 2.2e-16
# Retrieve residuals and predicted values
residuals_mod1 <- resid(mod1)
predicted_mod1 <- predict(mod1)
# Plot
plot(predicted_mod1, residuals_mod1)
2. Obtain the same estimates as in the previous step, but now with matrix algebra
# Make subset of the variables
y <- as.matrix(gala[, "Species"])
# Create a formula
form <- formula("Species ~ Area + Elevation + Endemics")
# Create a model matrix
X <- model.matrix(form, gala)
# Apply the formula for the linear model
linmod <- solve( t(X) %*% X ) %*% t(X) %*% y
# Create the predicted values
yhat <- X %*% linmod
# Residuals
resid <- (y - yhat)
# Plot
plot(yhat, resid)
The results obtained are the same as those obtained from the lm()
function
print.listof(list("Coefficients" = cbind(linmod, coef(mod1))))
## Coefficients :
## [,1] [,2]
## (Intercept) -15.89123674 -15.89123674
## Area 0.01266946 0.01266946
## Elevation -0.04143887 -0.04143887
## Endemics 4.33179106 4.33179106
3. Once you have the correct code to obtain the estimates with matrix algebra, write a function that has as input a data set suitable for multiple linear regression
See the code of the linear_model()
function here. The helper functions in this file calculate residuals, predicted values, t-statistics, p-values, \(R^2\), F-statistic etc.
# Load the meerkat library
library(meerkat)
# Create the model using the formula and the gala data
gala_mod <- linear_model(form, gala)
# Print the model
gala_mod
## Linear regression model containing 4 predictors and 30 observations
##
## DV: Species
## IV: Area, Elevation, Endemics
##
## Formula: 'Species ~ Area + Elevation + Endemics'
Like the lm()
function, we can call summary()
on the model
# Call the summary function
summary(gala_mod)
## Formula: 'Species ~ Area + Elevation + Endemics'
##
## Obs. Predictors
## 30 4
##
## Summary statistics :
## Area Elevation Endemics
## mean 261.71 368.03 26.10
## variance 746686.99 177750.72 746.99
## min 0.01 25.00 0.00
## max 4669.32 1707.00 95.00
##
## Model information :
## Estimate SE t p Sig.
## (Intercept) -15.8912 7.5692 -2.0995 0.0456 *
## Area 0.0127 0.0089 1.4179 0.1681
## Elevation -0.0414 0.0237 -1.7520 0.0916 .
## Endemics 4.3318 0.3047 14.2173 0.0000 ***
##
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## F-statistic: 161.85, p-value: 0
## R-squared: 0.9492
## df: 26
##
## Residuals :
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -67.691 -10.530 2.387 0.000 10.529 72.723
The plot()
method for the linear_model()
function plots the predicted values versus the residuals
plot(gala_mod)


The Microsoft Azure Regions Interactive Map shows the location of each of the Microsoft Azure Regions plotted over a map using the Bing Maps v8 JavaScript SDK.
This project is hosted as open source on Github at the following location, go there to view the source code for this project: https://github.com/buildazure/azure-region-map
This project is created and maintained by Chris Pietschmann.
Disclaimer: This community project is not affiliated with Microsoft in any way.
## Azure CLI 1.0 azure location list --json > azure_regions.json ## Azure CLI 2.0 az account list-locations > azure_regions.jsonThis Azure CLI command will output a JSON file containing the Azure Region data. This JSON file is pulled directly into this app for display.


Uchi rises 2.14% on positive technical outlook
by Surin MurugiahKUALA LUMPUR (Nov 25): Shares in Uchi Technologies Bhd rose 2.14% at mid-morning today following a positive technical outlook on the stock.
At 10am, Uchi gained 6 sen to RM2.86 for a market capitalisation of RM1.29 billion.
CGS-CIMB Research has maintained its "Add" rating on Uchi at RM2.80 with a higher target price (TP) of RM3.30 (from RM3.06) and said Uchi's 9M19 core net profit beat expectations at 77% of house FY19F and 76% of Bloomberg consensus due to better-than-expected earnings in 3Q19.
In a note Nov 22, the research house said Uchi's 3Q19 net profit surged 33% year-on-year (y-o-y), driven by robust demand from its Art-of-Living (AL) and biotech segments, while 9M19 net profit also rose by 16% y-o-y.
"We raise our FY19-21F net profit forecasts by 4-6% to reflect the higher sales projection driven by resilient demand from AL and biotech segments.
"We maintain our Add rating with a higher RM3.30 TP, based on 17x FY21F P/E as we roll over our valuation to end-2020," it said.


Eazy-T
Loading...
$
Travel -
-
%
Energy -
/
[
Gym
]
Nerve -
/
[
Arson
]
Happy -
/
Life -
/
Information
OK Test
OK BUDDY TEST


blogs.perl.org
module docs (http://metacpan.org)
Perlmonks
stackoverflow
user submitted data
Threaded forums
Stackoverflow and Perlmonks already have this!
Perlmonks == slow, bogged down, shitty search
Stackoverflow is an alright thing. It could be narrowed down to a much more focused scope.
Favorites
Bookmark your favorite documentation, code, code snippets, modules (using metacpan), documentation, and be able to search them
Useful because I personally can't sift throught my Chrome bookmarks efficiently
Catalyst application deployment
the advent of Plack has helped this a whole hell of a lot, but frankly I find the Catalyst Wiki a bit like trying to hit a fly with a brick.
From across the room.
Drunk. (no slight towards MojoMojo intended)
Though retired, it still contains a whole lot of relevant and good information.
DBIx::Class Intricacies
This ORM is a beautiful thing, and I'm indebted for life to mst for creating something that allows me to not have to have the slightest clue what I'm doing in SQL and still get things done. However, the rabbit hole goes deep, and I want to add a map to the goodies.
I love Moose, and it's really done some amazing things to the Perl 5 world, but I just can't keep all of it in my head. See above about goodies.
Create a general index of reliable Perl knowledge.
Allow users to create a subset of this knowledgebase of their own.
Out of date
Propogating bad practices
Almost never refer to Modern Perl
"Does Moose method delegation take an arrayref, or a hashref?" - this is no slight at the Moose documentation, it's awesome.
"If I want to get ahold of the connection info from a DBIx::Class ResultSet object, how would I do that?"
unless you're on irc.perl.org#dbix-class
which is fine, but mst/ribasushi/Caelum/frew/et al have better things to do than hold my hand (gphat and jshirley are exempt here)
I want it to be easy
I want it to be fast
would allow people that know what they're doing in the pertinent IRC channels and mailing lists to point people with queries to something that explains things in full, or at least so that the explainer doesn't have to repeat themselves to each person that asks said question.
DRY is a good thing.
But it will be!
Code is up on github (https://github.com/dhoss/PerlFu)
And IRC (irc.perl.org/#perlfu)
And beta will be (back) up soon: beta.perlfu.org
Please bear in mind I am trying to level up in Skyrim so I can forge Dragon Armor. And I just installed Jedi Knight 2: Jedi Outcast. And Knights of the Old Republic. And I have a job.
Fork the project
Read the TODO
Hack
Push, make a pull request.


Layout
1 Spalte
2 Spalten
3 Spalten
automatisch
You are using an
outdated
browser. Please
upgrade your browser
to improve your experience.


x c p 1 v 0 3 z 3 r 3 y k l
it
resources
reading
techsupport
hacking
cool
sites
interesting
other
home
projects
plans
systems
services
info
MSOutlookit
College Textbook Tracker
Silent Install Builder
Security Tools | PCC
www.theyrule.net
bbcode ref
LCD fonts
Yonghz *oid
Create IRC Bot
Create Chatbot
HTML5 UP!
2MB exes
YUMI
>Networking Linux
How To Linux
Dive into HTML5
recommendations - anime
Guide: Softmod ANY Wii
Google Alerts -
Coil wrapping
Taiga
WordNet SQL
edX | Free online courses from the world's best universities
Text files onto your desktop
STUDYBLUE
Emails to RSS Forwarding
helm for rainmeter - Google Search
Internet Arcade : Free Software : Download & Streaming : Internet Archive
NodeSchool
jquery ui
IrfanView
Reddit Alternatives
The Windows 10 Security Settings You Need to Know | WIRED
Beermoney: Online Money-making
Buy low, sell high
Movie lists
The Companion app
My Phenom glasses
Rex Swain's Home Page
Araxis Merge – Advanced 2 & 3-way file comparison (diff), merging and folder synchronization


Travis Shelton
About
Portfolio
Contact
Portfolio
Hangman
RPG
Trivia Game
Travis Info Widget
Rock Paper Scissors
Connect with Me


Bootstrap works on a grid system. Using the grid you can divide the page up into a maximum of 12 columns. You can also group columns together to split the grid into other multiples of twelve. For example, you could have three wider columns of 4 (3 x 4=12) or two even wider colums of 6 (2 x 6=12) and so on. Most of these permutations are shown in the coloured grid below. Like other elements in Bootstrap the grid is responsive and will react to different device sizes.


Pig! The Dice Game
Player Names
Player 1
Roll
Running Tally
0
Total Score
0
Total Turns
0
Hold
Player 2
Roll
Running Tally
0
Total Score
0
Total Turns
0
Hold


@Experimental(value=OUTPUT_TIME) public class OutputTimeFns extends java.lang.Object
OutputTimeFn
.| Constructor and Description |
|---|
OutputTimeFns() |
| Modifier and Type | Method and Description |
|---|---|
static Instant |
combineOutputTimes(OutputTimeFn<?> outputTimeFn,
java.lang.Iterable<? extends Instant> outputTimes)
Applies the given
OutputTimeFn to the given output times, obtaining
the output time for a value computed. |
static OutputTimeFn<?> |
fromProto(org.apache.beam.sdk.common.runner.v1.RunnerApi.OutputTime proto) |
static OutputTimeFn<BoundedWindow> |
outputAtEarliestInputTimestamp()
The policy of outputting at the earliest of the input timestamps for non-late input data
that led to a computed value.
|
static OutputTimeFn<BoundedWindow> |
outputAtEndOfWindow()
The policy of outputting with timestamps at the end of the window.
|
static OutputTimeFn<BoundedWindow> |
outputAtLatestInputTimestamp()
The policy of holding the watermark to the latest of the input timestamps
for non-late input data that led to a computed value.
|
static org.apache.beam.sdk.common.runner.v1.RunnerApi.OutputTime |
toProto(OutputTimeFn<?> outputTimeFn) |
public static OutputTimeFn<BoundedWindow> outputAtEarliestInputTimestamp()
For example, suppose v1 through vn are all on-time
elements being aggregated via some function f
into
f
(v1, ..., vn. When emitted, the output
timestamp of the result will be the earliest of the event time timestamps
If data arrives late, it has no effect on the output timestamp.
public static OutputTimeFn<BoundedWindow> outputAtLatestInputTimestamp()
For example, suppose v1 through vn are all on-time
elements being aggregated via some function f
into
f
(v1, ..., vn. When emitted, the output
timestamp of the result will be the latest of the event time timestamps
If data arrives late, it has no effect on the output timestamp.
public static OutputTimeFn<BoundedWindow> outputAtEndOfWindow()
Note that this output timestamp depends only on the window. See {#link dependsOnlyOnWindow()}.
When windows merge, instead of using OutputTimeFn.combine(org.joda.time.Instant, org.joda.time.Instant)
to obtain an output
timestamp for the results in the new window, it is mandatory to obtain a new output
timestamp from OutputTimeFn.assignOutputTime(org.joda.time.Instant, W)
with the new window and an arbitrary
timestamp (because it is guaranteed that the timestamp is irrelevant).
For non-merging window functions, this OutputTimeFn
works transparently.
public static Instant combineOutputTimes(OutputTimeFn<?> outputTimeFn, java.lang.Iterable<? extends Instant> outputTimes)
OutputTimeFn
to the given output times, obtaining
the output time for a value computed. See OutputTimeFn.combine(org.joda.time.Instant, org.joda.time.Instant)
for
a full specification.java.lang.IllegalArgumentException
- if outputTimes
is empty.public static org.apache.beam.sdk.common.runner.v1.RunnerApi.OutputTime toProto(OutputTimeFn<?> outputTimeFn)
public static OutputTimeFn<?> fromProto(org.apache.beam.sdk.common.runner.v1.RunnerApi.OutputTime proto)


| Home > Documentation > Developing > Tutorials > Developing EJB applications |
Enterprise JavaBeans (EJB) is a platform for developing reusable and portable Java applications. In very simple terms we can say that EJB is a Java code that runs in a runtime environment called EJB container.
EJB has three different types of components: Session beans, Message Driven Beans and Entity bean. Session beans and Message Driven Beans are used for developing the business logic and Entity beans are used for persistence.
EJB provides the following services: transactions, persistence, state management, messaging, security and many more. EJB can be considered as a framework because of the components and services they provide for enterprise application development.
This document is organized in the following sections:
EJB2 was quite complex for developers. It involved a lot of code-home interface, remote interface, local interface, bean class and deployment descriptors. Also you have to write lots of bean classes which are never called, but are required by the bean class to implement the interface. You need to implement life cycle callback methods likes ejbCreate, ejbRemove, ejbActivate, ejbPassivate compulsorily even if those are not required. Also many object oriented features such as inheritance, polymorphisms were not supported by EJB2.
EJB3 as against to EJB2 has undergone a great change. The hard work and innovations from the community has simplified EJB development to a great extent. In EJB3, classes are nothing but a simple Plain Old Java Object(POJO) and interfaces are Plain Old Java Interfaces(POJI). EJB3 objects are plain Java object which are given special powers with Annotations.  EJB3 is one of the best framework available for server side development due to the following reasons:
We sill discuss each of these in upcoming sections and EJB applications.
There are three different types of beans as was discussed earlier:
We will discuss each type of Bean one by one.
| Bookmark this on Delicious Digg this | Privacy Policy - Copyright © 2003-2013, The Apache Software Foundation, Licensed under ASL 2.0. |


Git on with it
Hello World!
My first week of Dev Bootcamp is drawing to a close and I’m glad to say that I’ve learned a lot more about what I’ll be doing with the next 18 weeks of my life. We’ve also been learning about the software that we will use throughout our experience here and that has focused mostly on Git and Github.
I’ve heard of Github before from my techy friends, but really had no idea what it was or how powerful of a tool it will be for my future not just at DBC, but the rest of my developer career. Github is essentially a social networking site. You create a profile and can follow others, but rather than sharing pictures of your cat/dog/baby/this awesome place you hiked to, you share code (at least that what’s it’s used for the most, the infrastructure is there to share a lot more). Github allows you to create a project and have others comment on it or make changes directly (based on the permissions you give them). Even if you’re not working together, others can make their code publicly visible so that a newbie like me can read code from industry experts and examine how their brains work and what kind of elegant solutions they can dream up. However all of this is only possible with Git.
Git is the older, secluded brother of Github. Git is mostly a background program that you only call from the terminal. There is no sharing, pretty interface, or really any GUI at all. What Git does provide is critical to everything that Github builds on top of. Git is version control software, which means that it helps you store backups of each save so that you can recall specific versions later in the future if you mess something up or liked it before some changes you made. Just like in a video game, you can save your work before you try something really risky. If it works out, great; you can keep working from there. If it doesn’t you can go back to the last save and try again or take a safer design strategy.
How Git works is by allowing you to have a copy of the project stored on Github’s servers remotely, what we will call the origin. Then you can clone the origin onto your personal computer so that you can make edits. This gives you the freedom to edit whatever and however you want (and your colleagues can all edit their parts of the project at the same time). When you accomplish your new routine or bug fix you can then push your changes back to the origin on Github for your team to evaluate and leave comments on. If you’re working and others make updates you can also pull those edits from the origin to your cloned copy so you can test that your new code will work with their edits. This sounds so simple, but for those of us that have tried to create a PowerPoint presentation with a team the night before a presentation it’s like feeling a shaft of sunlight from Heaven.
Thanks for reading and I hope next week I can talk about some awesome code I’ve written!
February 8, 2015
My first week of Dev Bootcamp is drawing to a close and I’m glad to say that I’ve learned a lot more about what I’ll be doing with the next 18 weeks of my life. We’ve also been learning about the software that we will use throughout our experience here and that has focused mostly on Git and Github.
I’ve heard of Github before from my techy friends, but really had no idea what it was or how powerful of a tool it will be for my future not just at DBC, but the rest of my developer career. Github is essentially a social networking site. You create a profile and can follow others, but rather than sharing pictures of your cat/dog/baby/this awesome place you hiked to, you share code (at least that what’s it’s used for the most, the infrastructure is there to share a lot more). Github allows you to create a project and have others comment on it or make changes directly (based on the permissions you give them). Even if you’re not working together, others can make their code publicly visible so that a newbie like me can read code from industry experts and examine how their brains work and what kind of elegant solutions they can dream up. However all of this is only possible with Git.
Git is the older, secluded brother of Github. Git is mostly a background program that you only call from the terminal. There is no sharing, pretty interface, or really any GUI at all. What Git does provide is critical to everything that Github builds on top of. Git is version control software, which means that it helps you store backups of each save so that you can recall specific versions later in the future if you mess something up or liked it before some changes you made. Just like in a video game, you can save your work before you try something really risky. If it works out, great; you can keep working from there. If it doesn’t you can go back to the last save and try again or take a safer design strategy.
How Git works is by allowing you to have a copy of the project stored on Github’s servers remotely, what we will call the origin. Then you can clone the origin onto your personal computer so that you can make edits. This gives you the freedom to edit whatever and however you want (and your colleagues can all edit their parts of the project at the same time). When you accomplish your new routine or bug fix you can then push your changes back to the origin on Github for your team to evaluate and leave comments on. If you’re working and others make updates you can also pull those edits from the origin to your cloned copy so you can test that your new code will work with their edits. This sounds so simple, but for those of us that have tried to create a PowerPoint presentation with a team the night before a presentation it’s like feeling a shaft of sunlight from Heaven.
Thanks for reading and I hope next week I can talk about some awesome code I’ve written!


pyLabbook Basic Tutorial
This tutorial will guide you through some of pyLabbook’s basic data management features and provide links to more detailed information. This tutorial uses the pyLabbook scripts in the scripts
folder of your pyLabbook root.
Table of Contents
- Open a Terminal Window
- Create a Labbook
- Initialize a Protocol
- Create a Protocol
- Initialize an Experiment
- Data Entry
- Store Experimental Data
- Transferring Data
- Exporting Data
Open a Terminal Window
Open a terminal window and cd
to your pyLabbook root folder, and then cd
into the scripts
folder. This folder contains a series of python scripts that you will use to input and manage some data.
Create a Labbook
pyLabbook is made up of labbooks, which house your data in two places: a database file for long-term storage/bulk access, and in a spreadsheet repository for data entry. Create a labbook using the labbook.py script:
> python labbook.py create myLabbook --sheetformat csv
This will create a labbook module file called myLabbook.py in the python/pyLabbook/labbooks
folder. The --sheetformat csv
option says that we want the spreadsheet repository files to be csv format. You can, optionally, use -s xlsx
for Excel format. For more information on labbook modules see the Labbooks documentation.
You can also import external databases when you create a labbook. For more information on the labbook script see the pyLabbook Scripts documentation.
Initialize a Protocol
Protocols define the structure of your data as a collection of table columns. Each pyLabbook protocol is analogous to an experimental protocol that you would perform in a lab. Protocols store your data in a set table and a sample table. Think of a set as a single set of experimental conditions that yield results - both the conditions and results are properties of a set. Sets are stored in a protocol’s set table, whose columns describe the properties of a prototypical set. Samples expand the flexibility of your data structures and are discussed in detail in the Introduction, the Minimal Data Management System and Protocol Design sections.
The protocol we will create in this tutorial is called PlasmidPrep and is based on a standard DNA plasmid preparation protocol. This protocol creates plasmid stocks for use in other experiments. A set is defined as a single plasmid stock produced by the protocol. The conditions of this protocol include the date that the plasmid was prepped and the plasmid’s name. The results include measurements of the product, such as its concentration and purity. These properties are all single-value measurements that can be represented as individual columns in the set table. So we don’t need to use samples for this protocol. You can find more complex, sample-using protocols in our Example Protocol Modules
To create the PlasmidPrep protocol we need to specify the structure of the its data. This is done by initializing the protocol using the protocol.py script:
> python protocol.py initialize PlasmidPrep
This will create two csv-formatted spreadsheet files in the same folder that the protocol.py script is in:
-
a set description file (
PlasmidPrep_SET_DESC.csv
) -
and a sample description file (
PlasmidPrep_SAMPLE_DESC.csv
).
Open the set description file PlasmidPrep_SET_DESC.csv
with your favorite spreadsheet editor or even a text editor. The first row contains a list of headers called name
, type
, notnull
, unique
, description
and primary_key
. These columns are the options that are used to define a set property (e.g. a column in the protocol’s set table). Each set table column you define will be a row that specifies a value for these options.
We will define the following columns:
| name | type | notnull | unique | description | default | primary_key |
|---|---|---|---|---|---|---|
| name | TEXT | TRUE | FALSE | name of the plasmid | FALSE | |
| source_id | TEXT | FALSE | FALSE | id of the source plasmid, glycerol stock etc. tube | FALSE | |
| resistance | TEXT | FALSE | FALSE | plasmid resistance | FALSE | |
| transform_method | TEXT | FALSE | FALSE | single-word method used to transform where applicable (HEATSHOCK,ELECTROPORATE) | FALSE | |
| transform_date | TEXT | FALSE | FALSE | YYYYMMDD date of transformation where applicable | FALSE | |
| colonies | TEXT | FALSE | FALSE | transformation produced colonies (Y) or description of colonies. If no colonies leave empty | FALSE | |
| cultured | TEXT | FALSE | FALSE | bacteria cultured (Y) or description of culture. If no culture leave empty | FALSE | |
| prep_date | TEXT | FALSE | FALSE | YYYYMMDD date of plasmid preparation | FALSE | |
| prep_operator | TEXT | FALSE | FALSE | initials of person performing the prep | FALSE | |
| prep_tube_id | TEXT | FALSE | TRUE | unique id for the plasmid product tube | FALSE | |
| concentration | REAL | FALSE | FALSE | concentration of product plasmid prep | FALSE | |
| concentration_units | TEXT | FALSE | FALSE | units for product plasmid concentration | ug/mL | FALSE |
| absorbance_260_280 | REAL | FALSE | FALSE | absorbance ratio 260/280 | FALSE | |
| absorbance_260_230 | REAL | FALSE | FALSE | absorbance ratio 260/230 | FALSE | |
| notes | TEXT | FALSE | FALSE | notes | FALSE |
You can download a fully prepared version of the plasmidPrep set description file file and copy it into your own plasmidPrep set description file. For more detailed information on how to fill out a description file check out the Defining Set and Sample Table Columns section of the Protocol Design documentation. Because this protocol doesn’t have samples, we will leave the sample description file alone.
Note: The order of your table column descriptions, as they appear in the set description file and sample description file, is the order that they will appear in spreadsheets, databases and exports. This order has no effect on the essential functions of pyLabbook, but may be important in other processes such as data entry. Be sure to organize your table column descriptions in an order that makes sense. For example, the concentration_units column directly follows the concentration column in the fully prepared version of the plasmidPrep set description file.
Once this set description file is filled out, you’re ready to create the protocol module file using the protocol script.
Create a Protocol
After filling out the set description and sample description files with the columns that you want for the protocol’s set and sample tables, use the protocol.py script to create the protocol:
> python protocol.py create PlasmidPrep
This will create a protocol module file called plasmidPrep.py
in the python/pyLabbook/protocols
folder. For more information on protocol module files see the Protocols documentation.
Once created, you can initialize experiments for this protocol, enter data, and store it in your labbook’s database.
Initialize an Experiment
Let’s setup an experiment where we prepare 5 plasmids in a single run of the plasmidPrep protocol. Before we actually perform the experiment in the lab, we need to initialize the protocol and name the experiment with an experiment_id
.
We will call the experiment ME20191024A
which is your initials (ME
), the YYYYMMDD-formatted date that the experiment will be performed on (20191024
) and a letter (A
) to distinguish between multiple runs of this protocol that might occur on the same day. These experiment id’s are restricted to A-Z, a-z, 0-9, _ and - characters only, no spaces, and should not begin with the number zero. For more details on these id’s see the Identifier Conventions section of the Minimal Data Management System documentation.
We will initialize this ME20191024A
experiment as a plasmidPrep experiment, in the labbook myLabbook that we created earlier:
> python experiment.py initialize myLabbook@PlasmidPrep ME20191024A
Follow the prompts. This will create a spreadsheet repository for the ME20191024A
experiment, under the plasmidPrep protocol in the myLabbook labbook.
Data Entry
All repositories are rooted in the repositories
folder of your pyLabbook distribution. The files for a specific labbook, protocol and experiment are found in the path:
repositories/[LABBOOK_ID]/[PROTOCOL_ID]/experiments/[EXPERIMENT_ID]
where [LABBOOK_ID]
, [PROTOCOL_ID]
and [EXPERIMENT_ID]
correspond to the labbook, protocol and experiment you are accessing.
Each experiment repository has a set file and a sample file that contains the data to be stored in the experiment’s set table and sample table. These file names are:
[PROTOCOL_ID]_[EXPERIMENT_ID]_SETS
[PROTOCOL_ID]_[EXPERIMENT_ID]_SAMPLES
.
where [PROTOCOL_ID]
and [EXPERIMENT_ID]
correspond to the protocol and experiment you are accessing.
Open a finder window and go to the repository for the ME20191024A
experiment of the plasmidPrep protocol in your myLabbook labbook. This repository is located in:
repositories/myLabbook/PlasmidPrep/experiments/ME20191024A
and it contains:
- a set file:
PlasmidPrep_ME20191024A_SETS.csv
- a sample file:
PlasmidPrep_ME20191024A_SAMPLES.csv
Because this protocol doesn’t have any samples, we only need to work with the set file.
Open the set file with your favorite spreadsheet editor or a text editor and fill out the information for the plasmids you will be preparing. Since the experiment hasn’t been performed yet, your set file will probably look like this. Before performing the experiment, you can use this set file as a guide for labelling tubes, gathering your source plasmids and preparing reagents.
As you proceed through the transformation, culture and finally preparation stages of the actual experiment, you’ll have more information to add to the set file columns. You’ll end up with something like this, where in this case, plasmid #4 didn’t yield any colonies after transformation.
For the purpose of this tutorial, feel free to copy these results into your PlasmidPrep_ME20191024A_SETS.csv
file.
We don’t need to worry about the sample file because this protocol has no samples. Once the set and sample files are filled out appropriately, you’re ready to store that data.
Store Experimental Data
To store the data from your experiment’s set file and sample file into your labbook’s database use the experiment script by telling it the labbook, protocol and experiment(s) that you want to store:
> python experiment.py store myLabbook@PlasmidPrep ME20191024A
Follow the prompts. The data is now stored in the database file for myLabbook, which is located in databases/myLabbook.sqlite3
.
Transferring Data
You can organize your data in different ways by copying it into different labbooks. First, we’ll create the labbook we want to transfer our data to:
> python labbook.py create ProjectOne
Then we will transfer myLabbook@PlasmidPrep ME20191024A
to ProjectOne
using the transfer.py
script:
> python transfer.py ProjectOne -lp myLabbook@PlasmidPrep ME20191024A
The transfer script will tell you how many sets and samples were transferred. You can transfer data from multiple labbooks and multiple protocols by adding more -lp
arguments to the list.
Exporting Data
You can also export experiments, or combinations of experiments, into spreadsheet files for bulk analysis using a spreadsheeet editor. Use the export.py
script:
> python export.py -lp ProjectOne@PlasmidPrep ME20191024A
will export set and sample data into an excel-formatted spreadsheet called export_PlasmidPrep.xlsx
.


Bootstrap's grid system allows up to 12 columns across the page. you can group the columns together to create wider columns.
Bootstrap's grid system is responsive, and the columns will re-arrange automatically depending on the screen size.
The Bootstrap grid system has four grid classes:
a column grouped with 3 xs
columns.

...

With 2 sm
columns
With 3 sm
columns
With 6 sm
columns

...

...

...

No any column is defined.
Bootstrap's grid system allows up to 12 columns across the page. you can group the columns together to create wider columns. Bootstrap's grid system is responsive, and the columns will re-arrange automatically depending on the screen size.
No any column is defined.
Bootstrap's grid system allows up to 12 columns across the page. you can group the columns together to create wider columns. Bootstrap's grid system is responsive, and the columns will re-arrange automatically depending on the screen size.


Quick Summary of Game (Storyboard)
This is missing the "THE NETWORK CONNECTION HAS DISCONNECTED MESSAGE TERMINATED" slide at the end and a few others. The storyline also isn't in the gifs yet. All images can be viewed here: https://photos.app.goo.gl/lLk3ONNvPXQ1XqaA2


Alerts
Primary You have a new message!
Secondary You have a new message!
Success You have a new message!
Warning You have a new message!
Danger You have a new message!
Danger You have a new message!
Danger You have a new message!
Danger You have a new message!
Alert with close button
Close Alert with close button
Alert with more content
Title
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Progress Bar
Height
Striped
Animated
Multiple Bars
Main panel (17%)
Photos (30%)
Update (27%)