Full Featured
Medis works great with strings, lists, hashes, sets, sorted sets,
streams, and even some third-party modules like RedisJSON.
With the beautiful UI, users can manage all data delightfully.
Command Query
Medis provides a query view to run arbitrary commands.
Keyword highlighting and the autocompleter make
everything super clear.
Tree View
Medis follows conventions of the
Redis community, shows a tree view to
category keys as you wish.
High Performance
Medis is designed to work with millions of keys and fields
without blocking databases. It works great with your production
database.
Alert Mode
Every writable command in alert mode sent to servers will need your
approval explicitly. This prevent you from destroying production
databases accidentally.
Data Encoders
Medis recognizes different data formats automatically so don't worry
if you are using MessagePack for reducing memory usages.
SSH/SSL
Medis allows you to connect to remote servers with an SSH tunnel,
and it works great with SSL.
Dark Mode
Of course, Medis supports dark mode!


from HarvardX
In this week, we used C.
A program that recovers JPEGs from a forensic image, per the below.
$ ./recover card.raw
The program should accept exactly one command-line argument, the name of a forensic image from which to recover JPEGs, and returns all the JPEGs found.
A program that applies filters to BMPs, per the below.
$ ./filter -r image.bmp reflected.bmp
The program can apply 5 filters to bitmap images:
The program should accept exactly three command-line arguments:
b
, e
, g
, r
or
s
, each of them specifies a different filter - blur, edges, grayscale,
reflection, and sepia.


pyshtools defines three major classes that simplify access to the underlying SHTOOLS functions:
The underlying data are stored in internal subclasses in different formats (such as kind = 'real'
or 'complex'
and grid = 'DH'
or 'GLQ'
). In this tutorial, we will demonstrate several aspects related to the SHCoeffs
and SHGrid
classes.
The spherical harmonic coefficient class SHCoeffs
can be initialized directly from a numpy array that holds the spherical harmonic coefficient data. Spherical harmonic coefficients are stored as a numpy array of dimension (2, lmax+1, lmax+1), where the first column corresponds to the cosine [0] and sine [1] components, the second column
corresponds to the spherical harmonic degree l
, and the third column corresponds to the angular order m
. We will first create a numpy array of coefficients that are equal to zero, with the exception of the l=5
, m=2
harmonic.
%matplotlib inline
from __future__ import print_function # only necessary if using Python 2.x
import matplotlib.pyplot as plt
import numpy as np
from pyshtools.shclasses import SHCoeffs, SHGrid, SHWindow
lmax = 200
coeffs = np.zeros((2, lmax+1, lmax+1))
coeffs[0, 5, 2] = 1.
To initialize a new class instance, we make use of the constructor method from_array()
:
coeffs_l5m2 = SHCoeffs.from_array(coeffs)
When initializing a new class instance, the default is to assume that the input coefficients are 4$\pi$ normalized excluding the Condon-Shortley phase. This normalization convention can be overridden by setting the optional parameter 'normalization', which takes values of '4pi', 'ortho' or 'schmidt', along with the parameter 'csphase', which can be 1 (to exclude the Condon-Shortley phase) or -1 (to include it). The SHCoeffs
class contains many methods, and here we use plot_spectrum()
to plot the power spectrum:
fig, ax = coeffs_l5m2.plot_spectrum(xscale='log', yscale='lin')
To plot the function that corresponds to the coefficients, we first need to expand it on a grid, which can be accomplished using the expand()
method:
grid_l5m2 = coeffs_l5m2.expand('DH2')
This returns a new SHGrid
class instance. The resolution of the grid is determined automatically to correspond to the maximum degree of the spherical harmonic coefficients in order to ensure good sampling. The optional parameter 'grid'
can be 'DH2'
for a Driscoll and Healy sampled grid with nlon = 2 * nlat, 'DH'
for a Driscol and Healy sampled grid with nlon = nlat, or 'GLQ'
for a grid used with the Gauss-Legendre quadrature expansion routines. Once the grid is created, it can be plotted using the built-in method plot()
.
fig, ax = grid_l5m2.plot()
Another constructor for the SHCoeffs
class is the from_random()
method. It takes a power spectrum (power per degree l of the coefficients) and generates coefficients that are independent normal distributed random variables with the provided expected power spectrum. This corresponds to a stationary and isotropic random model on the surface of the sphere whose autocorrelation function is given by the spherical harmonic addition theorem.
We initialize coefficients here with a scale-free power spectrum that has equal band power beyond the scale length that defines the size of the largest model features. The particular property of this model is that it is invariant under zoom operations.
a = 10 # scale length
ls = np.arange(lmax+1, dtype=np.float)
power = 1. / (1. + (ls / a) ** 2) ** 0.5
coeffs_global = SHCoeffs.from_random(power)
fig, ax = coeffs_global.plot_spectrum(unit='per_dlogl', xscale='log')
fig, ax = coeffs_global.expand('DH2').plot()
Spherical harmonic coefficients can be expressed in a different coordinate system very efficiently. Importantly, the power per degree spectrum is invariant under rotation.
The rotations are specified by the three Euler angles alpha
, beta
, and gamma
. There are two different conventions for specifying these angles, and the rotations can furthermore be viewed as either a rotation of the coordinate system or a rotation of the physical body. pyshtools by default uses the "y-convention" and rotates the coordinate system. The three successive rotations correspond to
alpha
,beta
, andgamma
.To rotate the physical body instead of the coordinate system, it is only necessary to set the optional parameter body
equal to True. To use the x convention, set the optional parameter convention
equal to 'x'
.
In the following example, we use the constructor from_zeros()
, and then use the method set_coeffs()
to initialize a single zonal spherical harmonic coefficient. We then rotate the physical body whose symmetry axis passess through the north pole to 30 degrees east longitude on the equator.
coeffs_l5m0 = SHCoeffs.from_zeros(lmax)
coeffs_l5m0.set_coeffs(1., 5, 0)
alpha = 30. # rotation around the initial z-axis
beta = 90. # rotation aroung the new y-axis
gamma = 0. # rotation around the new z-axis
coeffs_l5m0_rot = coeffs_l5m0.rotate(alpha, beta, gamma, body=True, degrees=True)
fig, ax = coeffs_l5m0_rot.plot_spectrum(xscale='log', yscale='lin', show=False)
grid_l5m0_rot = coeffs_l5m0_rot.expand('DH2')
fig, ax = grid_l5m0_rot.plot()
Similar grids can be added, multiplied and subtracted using standard python operators. It is easily verified that the following sequence of operations return the same rotated grid as above:
grid_new = (2 * grid_l5m0_rot + grid_l5m2**2 - grid_l5m2 * grid_l5m2) / 2.0
grid_new.plot()
coeffs = grid_new.expand()
fig, ax = coeffs.plot_spectrum()


Bonjour Tristesse tells the story of Cécile, who leads a carefree life with her widowed father and his young mistress until, one hot summer on the Riviera, he decides to remarry - with devastating consequences.
This strange new feeling of mine, obsessing me by its sweet languor, is such that I am reluctant to dignify it with the fine, solemn name of 'sadness'.  Before, I did not know what sadness was, though I knew wat it was to be languorous, to have regrets and, more rarely, to feel remorse. Today it is as if I am enfolded in some silken thing, soft and enervating that sets me apart from others.


?The
New
York
copyright
reserved
botanical
garden
irvi
NEW
YORK
BOTANICAL
GARDEN
01497465
THE
NEW
YORK
BOTANICAL
GARDEN
EXPLORATION
of
CUBA
Camp
La
Gloria,
south
of
Sierra
Moa,
Oriente
Np
.1/11
f'\KJb£X
Si/Lct
/o
,/r
j.
A.
Shafer,
collector
December
24-30,
1910
01497465
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


This section should contain XYZ information.
Put some content in this second column.
Put some content in this third column.


In this tutorial, I’m going to walk you through the basics of setting up a shiny app, starting with the example built into RStudio I’m not going to explain yet how shiny apps are structured, the goal is to just get something up and running, and give you some familiarity with the layout of a fairly simple app.
shiny
, ggplot2
Under the File
menu, choose New Project...
. You will see a popup window like the one below. Choose New Directory
.
Choose Shiny Web Application
as the project type.
I like to put all of my apps in the same directory`, but it doesn’t matter where you save it.
Your RStudio interface should look like this now. You don’t have to do anything else at this step.
If RStudio has changed their demo app and your source code doesn’t look like this, replace it with the code below:
#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com/
#
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$distPlot <- renderPlot({
# generate bins based on input$bins from ui.R
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
# draw the histogram with the specified number of bins
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
}
# Run the application
shinyApp(ui = ui, server = server)
Click on Run App
in the top right corner of the source pane. The app will open up in a new window. Play with the slider and watch the histogram change.
You can also open up the app in a web browser by clicking on Open in Browser
.
Now we’re going to make a series of changes to the demo app until it’s all your own.
You can close the app by closing the window or browser tab it’s running in, or leave it running while you edit the code. If you have multiple screens, it’s useful to have the app open on one screen and the code on another.
Find the application title. It is the first argument to the function titlePanel
. Change the title to "My First App"
. Make sure the title is inside quotes and the whole quoted string is inside the parentheses. Save the file (cmd-S
or File > Save
).
Click Run App
(or Reload App
if you haven’t closed the app window) in the source pane.  Check that the app title has changed.
Find the function sliderInput
(line 21). The first argument is the name you can use in the code to find the value of this input, so don’t change it just yet. The second argument is the text that displays before the slider. Change this to something else and re-run the app.
sliderInput("bins",
"Number of bins:",
min = 0,
max = 50,
value = 30)
See if you can figure out what the next three arguments to sliderInput
do. Change them to different integers, then re-run the app to see what’s changed.
The arguments to the function sidebarPanel
are just a list of things you want to display in the sidebar. To add some explanatory text in a paragraph before the sliderInput
, just use the paragraph function p("My text")
sidebarPanel(
p("I am explaining this perfectly"),
sliderInput("bins",
"Choose the best bin number:",
min = 10,
max = 40,
value = 25)
)
The sidebar shows up on the left if your window is wide enough, but moves to the top of the screen if it’s too narrow.
I don’t like it there, so we can move this text out of the sidebar and to the top of the page, just under the title. Try this and re-run the app.
# Application title
titlePanel("My First App"),
p("I am explaining this perfectly"),
# Sidebar with a slider input for number of bins
sidebarLayout(...)
See where you can move the text in the layout of the page and where causes errors.
I’m also not keen on the grey plot. We can change it inside the hist
function.
# draw the histogram with the specified number of bins
hist(x, breaks = bins, col = 'steelblue3', border = 'grey30')
There are a lot of ways to represent colour in R. The easiest three are:
#0066CC
,rgb
or hsl
functions,I like steelblue3
, as it’s pretty close to the shiny interface default colour, but feel free to choose whatever you like.
I prefer ggplot
graphs, so let’s make the plot with geom_histogram
instead of hist
(which is a great function for really quick plots). Since we need several functions from the ggplot2
package, we’ll need to load that package at the top of the script, just under where the shiny
package is loaded:
library(shiny)
library(ggplot2)
You can replace all of the code in the renderPlot
function with the code below.
output$distPlot <- renderPlot({
# create plot
ggplot(faithful, aes(waiting)) +
geom_histogram(bins = input$bins,
fill = "steelblue3",
colour = "grey30") +
xlab("What are we even plotting here?") +
theme_minimal()
})
You can set the fill
and colour
to whatever colours you like, and change theme_minimal()
to one of the other built-in ggplot themes.
What are we even plotting here? Type ?faithful
into the console pane to see what the waiting
column represents (faithful
is a built-in demo dataset). Change the label on the x-axis to something more sensible.
The faithful
dataset includes two columns:eruptions
and waiting
. We’ve been plotting the waiting
variable, but what if you wanted to plot the eruptions
variable instead?
Try plotting the eruption time (eruptions
) instead of the waiting time. You just have to change one word in the ggplot
function and update the x-axis label.
We can add another input widget to let the user switch between plotting eruption time and wait time. The RStudio Shiny tutorial has a great overview of the different input options. We need to toggle between two options, so we can use either radio buttons or a select box. Radio buttons are probably best if you have only a few options and the user will want to see them all at the same time to decide.
Add the following code as the first argument to sidebarPanel()
, which just takes a list of different widgets. radioButtons
is the widget we’re using. The first argument is display_var
, which we will use later in the code to find the value of this widget. The second argument is the label to display to the user. The next argument is choices
, which is a list of choices in the format c("label1" = "value1", "label2 = "value2", ...)
. The label is what gets shown to the user and the value is what gets used by the code (these can be the same, but you often want the user label to be more descriptive). The last argument is selected
, which is the value of the default choice. Save this and re-run the app.
radioButtons("display_var",
"Which variable to display",
choices = c("Waiting time to next eruption" = "waiting",
"Eruption time" = "eruptions"),
selected = "waiting"
),
You should have a radio button interface now. You can click on the options to switch the button, but it won’t do anything to your plot yet. We need to edit the plot-generating code to make that happen.
First, we need to change the x-axis label depending on what we’re graphing. We use an if/else statement to set the variable xlabel
to one thing if input$display_var
is equivalent to "eruptions"
, and to something else if it’s equivalent to "waiting"
. Put this code at the very beginning of the code block for the renderPlot
function (after the line output$distPlot <- renderPlot({
).
# set x-axis label depending on the value of display_var
if (input$display_var == "eruptions") {
xlabel <- "Eruption Time (in minutes)"
} else if (input$display_var == "waiting") {
xlabel <- "Waiting Time to Next Eruption (in minutes)"
}
The double-equal-signs ==
means "equivalent to and is how you check if two things are the same; if you only use one equal sign, you set the variable on the left to the value on the right.
Then we have to edit the ggplot
function to use the new label and to plot the correct column. The variable input$display_var
gives you the user-input value of the widget called display_var
.
# create plot
ggplot(faithful, aes(.data[[input$display_var]])) +
geom_histogram(bins = input$bins,
fill = "steelblue3",
colour = "grey30") +
xlab(xlabel) +
theme_minimal()
Notice that the function aes(waiting)
from before has changed to aes(.data[[input$display_var]])
. Because input$display_var
is a string, we have to select it from the .data
placeholder (which refers to the faithful
data table) using double brackets.
Re-run your app and see if you can change the data and x-axis label with your new widget. If not, check that your code against the code below:
#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com/
#
library(shiny)
library(ggplot2)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("My First App"),
p("I am explaining this perfectly"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
radioButtons("display_var",
"Which variable to display",
choices = c("Waiting time to next eruption" = "waiting",
"Eruption time" = "eruptions"),
selected = "waiting"
),
sliderInput("bins",
"Number of bins:",
min = 10,
max = 40,
value = 25)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$distPlot <- renderPlot({
# set x-axis label depending on the value of display_var
if (input$display_var == "eruptions") {
xlabel <- "Waiting Time to Next Eruption (in minutes)"
} else if (input$display_var == "waiting") {
xlabel <- "Waiting Time to Next Eruption (in minutes)"
}
# create plot
ggplot(faithful, aes(.data[[input$display_var]])) +
geom_histogram(bins = input$bins,
fill = "steelblue3",
colour = "grey30") +
xlab(xlabel) +
theme_minimal()
})
}
# Run the application
shinyApp(ui = ui, server = server)
| term | definition |
|---|---|
| argument | A variable that provides input to a function. |
| integer | A data type representing whole numbers. |
| package | A group of R functions. |
| panes | RStudio is arranged with four window “panes”. |
| rstudio | An integrated development environment (IDE) that helps you process R code. |
| shiny | An R package that builds interactive web apps |
| string | A piece of text inside of quotes. |
| widget | A interactive web element, like a dropdown menu or a slider. |


Google Maps API v3 Geocoder Tool
Enter a query to forward geocode, or click on the map to reverse geocode.
Query:
Bias this viewport:
Country bias:
Geocoder response:
(
)
Matches returned:
Bounds
Viewport


Start Where you sit
a story about Digital Transformation
<EMAIL_ADDRESS>Start where you stand and never mind the past,
The past won't help you in beginning new,
If you have left it all behind at last
Why, that's enough, you're done with it, you're through;
Start where you stand; Berton Braley
Summon the Enterprise DevOps Consultants
Conway's Law
organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.
M. Conway, How Co Committees Invent?
Start from where you sit?
Reducing the blast radius
The three ways
- Create fast flow of work
- Shorten and amplify feedback loops
- Create a culture of Experimentation and Learning
Gene Kim et al, The Phoenix Project, Ch 7
Flow
Feedback
Culture of Experimentation
Recognition in the workplace
The purpose of accruing political capital is to be able to spend it on doing the right thing
Anon, the internet
The world won't care about your old defeats
If you can start anew and win success.
The future is your time and time is fleet
And there is much of work and strain and stress.
Start where you stand; Berton Braley


Pro-Power has a dedicated freight team operating out of the main sea ports and airports.
A Garments/Apparel Buying House, All Our Products Never Diverge Form The Concept Of A Well-Made Tailor’s Garment: Elegant, Stylish, Long Lasting, And Perfect!
website design and development services. Our website developers provide expert web application development and web design services to our clients.
Habibi is a Bangladeshi cosmetics company founded by Abir. The company will began selling Lip Kits, a liquid lipstick and lip liner set.the company was renamed habibi.
We combine extensive local and country specific knowledge, our vast sourcing network and large purchasing power across the zxy group to negotiate the very best prices. Our merchandising and sourcing teams bring all of their ideas and expertise to each and every item. At the micro level we maximise savings for each component in the supply chain (yarn, fabrics, trims, productivity, output, packaging) to minimise the cost of the final product.
please contact us for any query.


{{{base_path}}}
LoggerDaisy Things Viewer
Visualize your sensors from anywhere
At this moment available in testing mode
View Devices
{{> footer}}


200 CIGARETTES by DeWyNGaLe Rating: D+
200 Cigarettes takes place on New Year's Eve 1981. Monica, played by Martha Plimpton is having a huge New Year's party. Everyone in town is trying to get there, but some are caught up in other things. This is the basic plot of 200 Cigarettes. As we meet the characters headed towards the party, we are sent into many subplots which are unoriginal, and not interesting at all. This disappointed me greatly. The film should have been more about the party than the people trying to get there in my opinion.
Lucy, played by Courtney Love, is with Kevin, played by Paul Rudd. The two are in a relationship that is more of a friendship, but starts to blossom into something more than that.  Janeane Garofalo is involved in another subplot, dealing with Kevin. She plays Ellie, an ex-girlfriend of Kevin's. This subplot is completely a waste of Garofalo's talent. There was no point to it at all, and it was hardly even in the movie. When Lucy runs into a bartender, played by Ben Affleck, another subplot is formed. The bartender is invited by Lucy to come to Monica's party. At the bar, he runs into two more girls. The girls are played by Angela Featherstone and Nicole Parker, but unfortunately, due to the terrible acting of both of them, I don't even remember their characters names. Ben Affleck is a good actor, but his character doesn't go anywhere so he doesn't have much screen time to give a good performance. Featherstone and Parker are horrible in their roles, and they are part of the reason the film is so bad.
Christina Ricci plays Val, and Gaby Hoffman plays Stephie. The two girls are trying to get to the party but are extremely lost.  This subplot was alright, but it was quite annoying with Stephie's accent. Hoffman did an okay job of acting, but Ricci did good. She was underused, considering she is such a wonderful actress.
Another subplot in the film is the relationship between Cindy, played by Goldie Hawn's daughter, and Jack, played by Jay Mohr. Jack is an actor who doesn't care about the girls he goes out with, he just likes dates for one night, and the next day he doesn't. Kate Hudson is a huge klutz. She gets herself into very funny situations, that are the funniest parts in the entire movie. They are probably the only funny parts in the entire movie as well. This subplot could have been used more, mainly due to Hudson's performance. Mohr wasn't good, but he wasn't bad. He was just alright, which I didn't find acceptable.
There is not much to say about the performances in the film. None of the characters are developed or shown enough to really tell if the acting is good or not. The only performances that I can judge are Christina Ricci's as always good performance, Kate Hudson's funny role, Courtney Love's mediocre performance, and Paul Rudd's annoying and overused performance. I was hoping for a little more out of Jaw Mohr, Ben Affleck, Casey Affleck, Gaby Hoffman, Dave Chapelle, and especially out of Janeane Garofalo.
The two strongest things in the film were the great soundtrack and the original costumes. Martha Plimpton and Christina Ricci had very different and original outfits which made me feel like I was in the year 1981. The soundtrack is full of 1980's tunes, ranging from "I Want Candy" to "Tainted Love." The songs in the movie also helped create the feel that you were back in the 1980s.
During the film, I often found myself asking the questions, "Is there a reason to this? Is there any moral story? Is there a point? Are any of the events going on in the film necessary? Do I care what Lucy and Kevin are going through?" The movie is extremely boring, and by the time they reached eleven-o-clock, one hour before midnight, I could not wait for the movie to be over. The plot is okay, but the subplots make it terrible. Maybe if the film was about the party, not about the people at the party, it could have been a lot better.
The Bottom Line: Just like a slasher movie, this ‘80s comedy is just one too many.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Eiman Zarrinhonar
Home
Contact
Portfolio
Dreams without goals are just dreams
Channels of Communication
Email
Please feel free to contact me directly via email.
LinkedIn Profile
A link to my LinkedIn Profile.


{{tt.Name}}
Name
Type
Configure Timetable
From
Static
Dynamic
Local Email Group
{{$select.selected.Name}}
{{group.Count}}
{{group.Name}}
To
Static
Dynamic
External Email Group
{{$select.selected.Name}}
{{group.Count}}
{{group.Name}}
Number of Recipients
Mail Template
Attachment
None
Random
Fixed
Attachment File
Randomly attach EICAR File (10% chance)
Report
Off
Daily
Weekly
Report Recipient
Report Hour
Report Day
Protocol Level
Off
On
Verbose
Update
Remove
Add
Cancel
Add


{{ partial "head" . }} {{ partial "nav" . }}
Software Engineer based in the Greater Minneapolis area. I'm a proud and self-proclaimed geek with a special knack for all things IT


Welcome to my website! Here you can learn everthing you need to know about myself.
For a list of Connor's favorite ski mountian
Click here
For a list of Connor's favorite video games
Click here
For a list of Connor's favorite foods
Click here


Jaqueline Upton
About Me
Projects
About Me
Projects
menu
Contact Me
Name
Email
Message
Submit
flash_on
Speeds up development
group
High-level User Experience
settings
Responsive HTML/CSS


Reselect
View on GitHub
Download .zip
Download .tar.gz
Basic Example
Array of Strings:
Selected Value:
Manage Choices {{$reselect.search_term}}


--- layout: post title: Gmail addon categories: [] tags: gmail web-client status: publish type: post published: true meta: {} ---
Today if you want to file email from Gmail to Content Manager you need to use the Email Link module. The limitation of this is that there is not user interface so you are unable to fill in the Record data entry form.
Gmail supports add-ons making it theoretically possible to create a client side solution which will allow the user to complete the data entry form at the time they file the email. These add-ons are constrained in that they have to be able to function both in the Gmail web UI and also the mobile Gmail app.
The sample in this video demonstrates the possibilities and the limitations of a Gmail add-on.
Given the current limitations of the UI components it is difficult to see how we could build a generic add-on. Any customer or partner who wants to build a custom add-on is welcome to start with this sample, as always feel free to contact me if you either have suggestions for an 'off the shelf' Content Manager add-on or want to discuss the building of a bespoke solution.


A tool for converting graphs generated by Graphviz to formats suitable for use with LaTeX.
| Author: | Kjell Magne Fauske |
|---|---|
| Version: | 2.8.7 |
| Licence: | MIT |
The purpose of dot2tex is to give graphs a more LaTeX look and feel. This is accomplished by:
The following software and modules are required to run dot2tex:
Users have reported problems using dot2tex with old versions of pyparsing and Graphviz.
A natural companion to dot2tex is the dot2texi LaTeX package for embedding graphs directly in your LaTeX source code.
Dot2tex was developed and tested using Python 2.4 and 2.5. However, dot2tex will probably run fine using Python 2.3.
Download a zip or a tarball from the download page. It is also available on CTAN. Unpack the file to a directory and run python on the setup.py file:
$ python setup.py install
This will create a dot2tex module in your Python module directory and a wrapper script in your SCRIPTS directory. Note that a few warnings will be displayed. You can safely ignore them. The warnings are shown because there is some extra information in the setup.py file that distutils does not understand.
The easiest way to install dot2tex is to use easy_install:
$ easy_install dot2tex
The command will locate dot2tex and download it automatically. Note that documentation and examples are not installed by default. Easy_install will also create a wrapper script or EXE file for you and install dependencies if necessary.
The development version of dot2tex is available from a Subversion repository hosted at Google code. To get the code you can use the following command:
svn checkout http://dot2tex.googlecode.com/svn/trunk/ dot2tex
Syntax:
dot2tex [options] [inputfile]
Input data is read from standard input if no input file is specified. Output is written to standard output unless a destination file is set with the -o option.
Dot2tex can also be loaded as a module for use in other Python program. See the Using dot2tex as a module section for more details.
Dot2tex relies on the xdot format generated by Graphviz. Dot2tex will automatically run dot on the input data if it is in the plain dot format. If you want to use other layout tools like neato and circo, use the --prog option.
A few examples on how to invoke dot2tex:
Read a file from standard input and write the result to the file test.tex:
$ dot -Txdot test.dot | dot2tex > test.tex $ neato -Txdot -Gstart=rand test.dot | dot2tex > test.tex
Load test.dot, convert it to xdot format and output the resulting graph using the tikz output format to testpgf.tex:
$ dot2tex -ftikz test.dot > testtikz.tex
The same as above, but use neato for graph layout:
$ dot2tex --prog=neato -ftikz test.dot > testtikz.tex
Invoking dot2tex
Windows users you have to type python dot2tex to invoke the program. If you find this annoying, try the ExeMaker tool from effbot.org, or better, use easy_install to install dot2tex.
The following options are available:
| -h, --help | Display help message. |
| -f fmt, --format fmt | |
Set output format. The following values of fmt are supported:
| |
| -t mode, --texmode mode | |
Text mode. Specify how text is converted.
Note that you can locally override the text mode by assigning a special texlbl attribute to a graph element, or by using the texmode attribute. | |
| -s, --straightedges | |
| Draw edges using straight lines. Graphviz uses bezier curves to draw straight edges. Use this option to force the use of line to operations instead of curves. Does not work in duplicate mode. | |
| -o filename, --output filename | |
| Write output to file. | |
| -d, --duplicate | |
| Duplicate the xdot output. Uses the drawing information embedded in the xdot output to draw nodes and edges. | |
| --template filename | |
| Use template from file. See the templates section for more details. | |
| -V, --version | Print version information and exit. |
| -w, --switchdraworder | |
| Switch drawing order of nodes and edges. By default edges are drawn before nodes. | |
| -c, --crop | Use preview.sty to crop the graph. Currently only implemented for the pgf and tikz output format. |
| --figonly | Output the graph without a document preamble. Useful if the graph is to be included in a master document. |
| --codeonly | Output only the drawing commands, without wrapping it in a tikzpicture or pspicture environment. Useful when used with the dot2texi package. |
| --preproc | Preprocess the graph through LaTeX using the preview package. Will generate a new dot file where the height and widths of nodes and edge labels are set based on the results from preview. |
| --autosize | Preprocess the graph and run Graphviz on the output. Equivalent to: $ dot2tex --preproc ex1.dot | dot2tex |
| --prog program | Set graph layout program to use when the input is in plain dot format. Allowed values:
|
| --usepdflatex | Use pdflatex instead of latex for preprocessing the graph. |
| --nominsize | Ignore minimum node sizes during preprocessing. |
| --valignmode mode | |
Vertical alignment of node labels, where mode can have the values:
(pgf and pstricks only) | |
| --alignstr | Used to pass a default alignment string to the PSTricks \rput command: \rput[alignstr] ... Only works for the PSTricks format. PGF/TikZ users can instead pass an anchor=... style using the graphstyle option. |
| --tikzedgelabels | |
| Bypass Graphviz' edge label placement and use PGF/TikZ instead (tikz and pgf formats only). | |
| --styleonly | Use TikZ only styles when drawing nodes. No draw or shape option is added (tikz format only). |
| --nodeoptions tikzoptions | |
| Wrap node code in a scope environment with tikzoptions as parameter (tikz format only). | |
| --edgeoptions tikzoptions | |
| Wrap edge code in a scope environment with tikzoptions as parameter (tikz format only). | |
| --debug | Write detailed debug information to the file dot2tex.log in the current directory. |
| --pgf118 | Generate code compatible with PGF 1.18 and earlier. |
The following options are used by the output templates.
| -e encoding, --encoding encoding | |
Set text encoding. Supported encodings are:
| |
| --docpreamble TeXcode | |
| Insert TeX code in the document preamble. | |
| --figpreamble TeXcode | |
| Insert TeX code in the figure preamble. | |
| --figpostamble TeXcode | |
| Insert TeX code in the figure postamble. | |
| --graphstyle style | |
| Sets the <<graphstyle>> tag. | |
| --margin margin | |
| Set margin around the graph when using preview.sty. margin must be a valid TeX unit. By default margin is set to 0pt. |
The output format is specified with the -f fmt or --format fmt command line option.
This is the default output format. Generates code for the Portable Graphics Format (PGF) package . Mixes both PGF and TikZ commands.
Generates code for the PSTricks package.
The tikz output format also uses the PGF and TikZ package. However, it relies on TikZ node and edge mechanisms to draw nodes and edges, instead of using the drawing information provided by Graphviz. This allows much tighter integration with TikZ and in some cases prettier results.
Advantages of the tikz format:
You can find more details in the section: Use the tikz output format for maximum flexibility.
Note
The tikz output format requires detailed knowledge of the PGF and TikZ package. Some of Graphviz' features will not work with this output format.
The main purpose of dot2tex is to allow text and labels to be typeset by LaTeX. Labels are treated differently according to the current TeX mode:
The TeX mode can be set on the command line using the -t option. It can also be set locally in a graph by using the special texmode attribute.
You can also use the special texlbl attribute on a graph element, which is interpreted as raw TeX string. If a texlbl attribute is found, it will be used regardless of the current TeX mode. It also has precedence over the label attribute.
Note
The \ character needs to be escaped with \\ if used in the label attribute.
Note that only position and alignment information is converted. Any font information is lost. This may result in some odd behavior. Some tweaking may be necessary to get it right.
Note
If you use texlbl for edges, you have to provide a dummy label attribute. Otherwise Graphviz will not generate the necessary code for placing edge labels.
Consider the following graph:
digraph G {
a_1-> a_2 -> a_3 -> a_1;
}
Converting the graph using:
$ dot2tex -tmath ex1.dot > ex1.tex
gives the result shown in the left hand side of the figure below. The default rendering is shown to the right. Using the raw mode will result in a compilation error because of the underscore character.
Example of using texlbl:
digraph G {
a_1 [texlbl="$\frac{\gamma}{x^2}$"];
a_1-> a_2 -> a_3 -> a_1;
}
Example of using the texmode attribute:
digraph G {
a_1 [texlbl="$\frac{\gamma}{2x^2+y^3}$"];
a_1 -> a_2 -> a_3 -> a_1
node [texmode="math"];
a_1 -> b_1 -> b_2 -> a_3;
b_1 [label="\\frac{\\gamma}{x^2}"];
node [texmode="verbatim"]
b_4 [label="\\beta"]
a_3 -> b_4 -> a_1;
}
The above example shows two important things:
Preprocessing the above graph with:
$ dot2tex --preproc ex4.dot | dot2tex > ex4.tex
gives correctly sized nodes:
Read more about preprocessing in the Preprocessing graphs section.
Dot2tex relies on the xdot format for drawing nodes and placing node labels. The fonts that Graphviz and LaTeX use are different, so using the label coordinates from Graphviz does not always give good results. Dot2tex's default behavior is to place node labels in the middle of the node. However, you can change this behavior by setting the valignmode option to dot. Labels will then be placed using the coordinates supplied by Graphviz.
Here is an example graph where it is necessary to use the valignmode option:
digraph G {
node0 [label="{left|right}", shape=record];
node1 [shape=rectangle, label="node 1"];
node0 -> node1;
rankdir=LR;
}
For record nodes dot2tex has to use Graphviz coordinates. This is shown in the following figure rendered with:
$ dot2tex valign.dot
To get the same vertical alignment for both nodes, you can use:
$ dot2tex --valignmode=dot valign.dot
Now the labels are aligned, but the labels are still placed too low. The reason for this is that both PSTricks and PGF by default centers text vertically on the current coordinate. The alignment point should in this case be set to the baseline. For PGF/TikZ you can use the --graphstyle option like this:
$ dot2tex --valignmode=dot --graphstyle="anchor=base" valign.dot
PSTricks users have to use the --alingstr option:
$ dot2tex --valignmode=dot --alignstr=B valign.dot
The result is better, but to get even better alignment you have to change the node font size. Graphviz' default font size is 14pt, which is larger than the typical 10pt or 11pt used in LaTeX documents. By changing the node font size to 10pt we can trick Graphviz to give us a better alignment:
digraph G {
node [fontsize=10];
node0 [label="{left|right}", shape=record];
node1 [shape=rectangle, label="node 1"];
node0 -> node1;
rankdir=LR;
}
A problem with using LaTeX for typesetting node and edge labels, is that Graphviz does not know the sizes of the resulting labels. To circumvent this problem, you can use the --preproc or --autosize option. The following will then happen:
Widths and heights of nodes are handled the in same way as Graphviz does it. The width and height attributes set the minimum size of the node. If label size + margins is larger that the minimum size, the node size will grow accordingly. Default values are width=0.75in and height=0.5in.
Node margins are set using the margin attribute. This also works for edge labels. margin==value sets both the horizontal and vertical margin to value, margin=="hvalue,vvalue" sets the horizontal and vertical margins respectively.
Note
All sizes are given in inches.
If you do not want a minimum node size, you can use the '--nominsize' option. Dot2tex will then use size of label + margins as node size.
Nodes with fixedsize=True attributes are not processed.
Limitations:
Consider the following graph:
digraph G {
node [shape=circle];
a_1 [texlbl="$x^2+\frac{\sin y}{y^2+\cos \beta}+\gamma_3$"];
a_1 -> a_2 [label=" ", texlbl="$x_1+x_3^2+z+c+v~~$"];
a_2 -> a_1;
}
Rendered with:
$ dot2tex -tmath example.dot > example.tex
the graph will look like this:
You could improve the result by adding a longer label attribute or setting a fixed width. A better solution is to preprocess the graph like this:
$ dot2tex -tmath --preproc example.dot > exampletmp.dot $ dot2tex exampletmp.dot > example.tex
You can also chain the commands:
$ dot2tex -tmath --preproc example.dot | dot2tex > example.tex
A shorter alternative is:
$ dot2tex -tmath --autosize example.dot > example.tex
The resulting graph now has correctly sized nodes and edge labels:
Modifying node sizes using the widht/height and margin attributes can be a bit counterintuitive. A few examples will hopefully make it clearer:
digraph G {
node [shape=rectangle];
a_1 [margin="0"];
a_2 [margin="0.7,0.4"];
a_3 [width="2",height="1"];
a_1-> a_2 -> a_3 -> a_1;
}
Processing the graph with:
$ dot2tex -tmath --preproc example.dot | dot2tex > example.tex
gives
Setting the margin of a_1 to 0 has no effect because of the minimum node width. Processing the graph with:
$ dot2tex -tmath --preproc --nominsize example.dot | dot2tex > example.tex
gives a different graph, where only label widths and margins affect the node sizes:
Dot2tex offers a few ways of modifying the generated output.
The dot language defines the style attribute that can be used to modify the appearance of graphs, nodes, and edges. The style attribute is passed to the rendering backend, and is a powerful and flexible way of customizing the look and feel of your graphs. Using styles requires detailed knowledge of the output format.
The following example shows how interesting visual results can be achieved with the PGF/TikZ output format. The styles are PGF/TikZ specific. See the user guide for details:
graph G {
node [shape=circle, fixedsize=True, width="0.2",
style="ball color =green", label=""];
edge [style="snake=zigzag, green"];
a_1 -- c -- a_2;
c [style="ball color=black"];
edge [style="snake=snake, blue"];
node [style="ball color = red", label=""];
a_3 -- c -- a_4 --a_3;
}
The snake styles only work on straight lines. We therefore have to use the -s option. fdp is used to lay out the graph:
$ fdp -TXdot ball.dot | dot2tex -fpgf -s > balls.tex
The resulting graph is shown below.
Note
Use the straight edge option -s to force the use of straight lines. Otherwise curves will be used to draw even straight lines.
The style attribute can be used to change arrow types. A PGF/TikZ example:
digraph G {
graph [mindist=0.5];
node [fixedsize=true, shape=circle, width=0.4, style="fill=green!20"];
c -> n_1 [style="-stealth"];
c -> n_2 [style="-to"];
c -> n_3 [style="-latex"];
c -> n_4 [style="-diamond"];
c -> n_5 [style="-o"];
c -> n_6 [style="{-]}"];
c -> n_7 [style="-triangle 90"];
c -> n_8 [style="-hooks"];
c -> n_9 [style="->>"];
c [style="fill=red!80"];
}
Rendered with:
$ circo -Txdot pgfarrows.dot | dot2tex -tmath > pgfarrows.tex
You can also set the default arrow style by using the --graphstyle option or d2tgraphstyle attribute:
$ dot2tex -tmath --graphstyle=">=diamond" ex1.dot > ex1gstyle.tex
A PSTricks example:
digraph G {
d2tdocpreamble="\usepackage{pstricks-add}";
graph [mindist=0.5];
node [texmode="math", fixedsize=true, shape=circle, width=0.4];
c -> n_1 [style="arrows=->"];
c -> n_2 [style="arrows=->>"];
c -> n_3 [style="arrows=-<"];
c -> n_4 [style="arrows=-*"];
c -> n_5 [style="arrows=-{]}"];
c -> n_6 [style="arrows=-o"];
c -> n_7 [style="arrows=-H"];
}
Rendered with:
$ circo -Txdot pstarrows.dot | dot2tex -fpst > pstarrows.tex
The above example shows how the d2tdocpreamble attribute can be used to load additional LaTeX packages. You could also use the `--docpreamble option:
$ ... | dot2tex -fpst --docpreamble="\usepackage{pstricks-add}" ...
Node, edge and graph labels can be styled using the special lblstyle attribute. However, this only works for the pgf and tikz output formats.
Labels are drawn using code like:
\draw (157bp,52bp) node {label};
When you specify a lblstyle attribute, the style will be given as a parameter to the node like this:
\draw (157bp,52bp) node[lblstyle] {label};
Example:
digraph G {
node [shape=circle];
a -> b [label="label",lblstyle="draw=red,cross out"];
b -> c [label="test",lblstyle="below=0.5cm,rotate=20,fill=blue!20"];
a [label="aa",lblstyle="blue"];
b [lblstyle="font=\Huge"];
c [label="ccc", lblstyle="red,rotate=90"];
label="Graph label";
lblstyle="draw,fill=red!20";
rankdir=LR;
}
See the PGF and TikZ documentation for more information about styles.
Note
You can use the exstyle attribute in addition to lblstyle. The difference is that exstyle is ignored in preprocessing mode. Useful when using TikZ' pin and label options and you do not want them to influence the graph layout.
The tikz output format offers an additional way of customizing the output by using the --nodeoptions and --edgeoptions options, or the d2tnodeoptions and d2tedgeoptions graph attributes. The code for generating nodes and edges will then be wrapped in a scope environment like this:
...
\begin{scope}[nodeoptions]
% code for drawing nodes
\end{scope}
\begin{scope}[edgeoptions]
% code for drawing edges
\end{scope}
...
The tikz and pgf output formats offers a few additional ways of customizing how edges are drawn and how edge edge labels are placed. These features are tightly integrated with TikZ and detailed knowledge of the output format is therefore necessary.
With the --tikzedgelabel option you can bypass the XDOT edge label placement and let PGF and TikZ do the job instead. This can be useful in some cases. However, this only works properly for straight edges and to paths.
Example:
graph G {
mindist = 0.5;
node [shape="circle"];
edge [lblstyle="mystyle"];
a -- b [label="ab"];
b -- c [label="bc"];
c -- a [label="ca"];
}
Without the --tikzedgelabel option the code for placing edges will look something like this:
% Edge: a -- b
\draw [] (28bp,55bp) -- (28bp,75bp);
\draw (40bp,65bp) node[mystyle] {ab};
% Edge: b -- c
\draw [] (51bp,88bp) -- (68bp,78bp);
\draw (66bp,96bp) node[mystyle] {bc};
% Edge: c -- a
\draw [] (69bp,51bp) -- (52bp,41bp);
\draw (53bp,57bp) node[mystyle] {ca};
With the tikzedgelabels option the output is simply:
\draw [] (a) -- node[mystyle] {ab} (b);
\draw [] (b) -- node[mystyle] {bc} (c);
\draw [] (c) -- node[mystyle] {ca} (a);
The placement of the edge labels depends on the options passed to the edge label node (in this case mystyle), and the curve used to connect the nodes. Some examples of mystyle values are shown in the figure below. The leftmost graph is rendered without the tikzedgelabels option.
Limitations:
The topath edge attribute offers a way to override the edges drawn by Graphviz. When a topath attribute is encountered, dot2tex inserts a so called to path operation to connect the nodes. A number of predefined to paths are defined by TikZ, and you can create your own.
Example:
digraph G {
mindist = 0.5;
node [shape="circle"];
a -> b [topath="bend right"];
c -> b [topath="bend left"];
c -> a [topath="out=10,in=-90"];
b -> b [topath="loop above"];
}
Generating the graph with:
$ circo -Txdot topaths1.dot | dot2tex -ftikz > topaths1.tex
yields:
The generated edge drawing code is:
\draw [->] (a) to[bend right] (b);
\draw [->] (c) to[bend left] (b);
\draw [->] (c) to[out=10,in=-90] (a);
\draw [->] (b) to[loop above] (b);
Note
To paths works best with layout tools that generate straight edges (neato, fdp, circo, twopi). The topath attribute overrides the edge routing done by Graphviz. You may therefore end up with overlapping edges.
Here is a larger example that uses the automata library:
digraph G {
d2tdocpreamble = "\usetikzlibrary{automata}";
d2tfigpreamble = "\tikzstyle{every state}= \
[draw=blue!50,very thick,fill=blue!20]";
node [style="state"];
edge [lblstyle="auto",topath="bend left"];
A [style="state, initial"];
A -> B [label=2];
A -> D [label=7];
B -> A [label=1];
B -> B [label=3,topath="loop above"];
B -> C [label=4];
C -> F [label=5];
F -> B [label=8];
F -> D [label=7];
D -> E [label=2];
E -> A [label="1,6"];
F [style="state,accepting"];
}
Generated with:
neato -Txdot fsm1.dot | dot2tex -ftikz --tikzedgelabels --styleonly
All Graphviz color formats are supported, including the RGBA format. Transparency will however only work when using the PGF/TikZ output format.
Named colors are supported, but you have to ensure that the colors are defined in the resulting LaTeX file. The default PSTricks and PGF/TikZ templates load the X11names color scheme defined in the xcolor package. Note that color names in the xcolor package are case sensitive. This is not the case with Graphviz's color names. Use CamelCase names in your graphs to ensure compatibility with xcolor.
For convenience, a color definition file gcols.tex is distributed with dot2tex. You can find it in the examples directory. This file defines most of Graphviz's named colors as lower case. Include this file in the preamble if you need it.
The output from dot2tex is a list of drawing commands. To render the graphics with LaTeX there's a need for some boiling plate code. This code can be customized using simple templates. If no template is specified with the --template option, a default template will be used.
The following template tags are available:
Bounding box. Example: (0bp,0bp)(100bp,100bp) The individual parts of the bounding box are available with the tags:
Note that the bounding box parts are given without any units.
Three different templates are used by dot2tex for the preprocessing mode, output mode and figure only mode respectively. The following template tags make it possible to use the same template file for all modes.
Note
Tags that have no value are replaced with an empty string. Insert a % character after a template tag to avoid unwanted line breaks.
\documentclass{article}
\usepackage[x11names, rgb]{xcolor}
\usepackage[<<textencoding>>]{inputenc}
\usepackage{tikz}
\usetikzlibrary{snakes,arrows,shapes}
\usepackage{amsmath}
<<startpreprocsection>>%
\usepackage[active,auctex]{preview}
<<endpreprocsection>>%
<<gvcols>>%
<<cropcode>>%
<<docpreamble>>%
\begin{document}
\pagestyle{empty}
%
<<startpreprocsection>>%
<<preproccode>>
<<endpreprocsection>>%
%
<<startoutputsection>>
\enlargethispage{100cm}
% Start of code
% \begin{tikzpicture}[anchor=mid,>=latex',join=bevel,<<graphstyle>>]
\begin{tikzpicture}[>=latex',join=bevel,<<graphstyle>>]
\pgfsetlinewidth{1bp}
<<figpreamble>>%
<<drawcommands>>
<<figpostamble>>%
\end{tikzpicture}
% End of code
<<endoutputsection>>
%
\end{document}
%
<<startfigonlysection>>
\begin{tikzpicture}[>=latex,join=bevel,<<graphstyle>>]
\pgfsetlinewidth{1bp}
<<figpreamble>>%
<<drawcommands>>
<<figpostamble>>%
\end{tikzpicture}
<<endfigonlysection>>
The <<cropcode>> template tag is available when the --preview option is used. The contents will then be:
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{<<margin>>}
\documentclass{article}
% <<bbox>>
\usepackage[x11names]{xcolor}
\usepackage[<<textencoding>>]{inputenc}
\usepackage{graphicx}
\usepackage{pstricks}
\usepackage{amsmath}
<<startpreprocsection>>%
\usepackage[active,auctex]{preview}
<<endpreprocsection>>%
<<gvcols>>%
<<docpreamble>>%
\begin{document}
\pagestyle{empty}
<<startpreprocsection>>%
<<preproccode>>%
<<endpreprocsection>>%
<<startoutputsection>>%
\enlargethispage{100cm}
% Start of code
\begin{pspicture}[linewidth=1bp<<graphstyle>>]<<bbox>>
\pstVerb{2 setlinejoin} % set line join style to 'mitre'
<<figpreamble>>%
<<drawcommands>>
<<figpostamble>>%
\end{pspicture}
% End of code
<<endoutputsection>>%
\end{document}
%
<<startfigonlysection>>
\begin{pspicture}[linewidth=1bp<<graphstyle>>]<<bbox>>
\pstVerb{2 setlinejoin} % set line join style to 'mitre'
<<figpreamble>>%
<<drawcommands>>
<<figpostamble>>%
\end{pspicture}
<<endfigonlysection>>
Dot2tex defines several special graph, node and edge attributes. Most of them are not part of the DOT language.
Used to pass a default alignment string to the PSTricks \rput command:
\rput[d2talignstr] ...
If your input file contains the single line
\input{filename.dot}
dot2tex will load the filename.dot file and convert it. This feature is useful when you want to use the dot2texi LaTeX package, but don't want to include your dot code directly in your document.
It is possible to load dot2tex as a module for use in other Python programs. Here is a basic example:
import dot2tex
testgraph = """
digraph G {
a -> b -> c -> a;
}
"""
texcode = dot2tex.dot2tex(testgraph, format='tikz', crop=True)
The dot2tex function is the main interface:
dot2tex(dotsource,**kwargs)
It takes the following input arguments:
Argument Description dotsource A string containing a DOT or XDOT graph. **kwargs An arbitrary number of conversion options passed as keyword arguments
The function returns the resulting LaTeX code as a string.
The supported options are the same as the command line options (long version). Here are a few examples:
import dot2tex as d2t
texcode = d2t.dot2tex(testgraph, format='tikz', crop=True)
texcode = d2t.dot2tex(testgraph, preproc=True,figonly=True)
texcode = d2t.dot2tex(testgraph, debug=True)
Option values are either strings or booleans. Note that some of the command line options are not relevant when using dot2tex as a module.
To specify a template you can use the template option like this:
import dot2tex
mytemplate = "<<drawcommands>>"
texcode = dot2tex.dot2tex(graph, template = mytemplate)
You can set debug=True to create a detailed log useful for debugging. To retrieve the content of the log you can use the get_logstream function. It will return a StringIO instance. You can then use the getvalue() class method to get the actual text. Example:
import dot2tex
texcode = dot2tex.dot2tex(testgraph, debug=True)
logstream = dot2tex.get_logstream()
print logstream.getvalue()
The purpose of dot2tex is to give graphs a more LaTeX friendly look, not to create exact duplicates. However, the program does a descent duplication job when it comes to drawing nodes and edges, but it does not try to duplicate label and annotation formatting.
A list of known limitations:
Parallel edges are only supported in the duplicate mode.
Concentrated edges are not render properly when using the tikz output format.
Pyparsing sometimes choke on valid dot files. If this happen you could try to feed xdot data directly to dot2tex like this:
$ dot -Txdot example.dot | dot2tex -o example.tex
Graphviz sometimes complain about nodes being too small to fit the content. This typically happens after the graph has been preprocessed with the preview package. You can usually ignore this warning. However, if edges are routed poorly, it may help increasing the size of the nodes.
If a dot file contains more than one graph, only the first graph will be converted.
Background color of page is currently not set.
The fontcolor attribute is not supported yet.
The setlinewidth(.) attribute is not supported yet.
Graphviz's default text encoding is utf8. The latin1 encoding can also be used. Utf8 is an unicode encoding and can in theory handle any international characters. However, LaTeX's unicode support is somewhat limited.
No font information in the DOT file is preserved by dot2tex. However, there are several ways of modifying the generated LaTeX code to achieve some control of fonts and font sizes.
To increase the font size you can for instance insert a \Huge command in the figure preamble:
$ dot2tex -tmath --figpreamble="\Huge" ex1.dot > ex1huge.tex
When making your own templates it is easy to make mistakes, and LaTeX markup in graphs may fail to compile. To make it easier to find errors, invoke dot2tex with the --debug option:
$ dot2tex --preproc --debug test.dot
A dot2tex.log file will then be generated with detailed information. In the log file you will find the generated LaTeX code, as well as well as the compilation log.
Be aware of differences between the template you use for preprocessing and code used to generate final output. This is especially important if you use the --figonly option and include the code in a master document. If a 10pt font is used during preprocessing, the result may not be optimal if a 12pt font is used in the final output.
Example. A graph is generated with:
$ dot2tex --preproc -tmath --nominsize ex1.dot > ex1tmp.dot
Running through dot2tex again with:
$ dot2tex --figpreamble="\Huge" ex1tmp.dot > ex1huge.tex
gives labels that do not fit properly inside the nodes.
The output from Graphviz and dot2tex is not perfect. Manual adjustments are sometimes necessary to get the right results for use in a publication. For final and cosmetic adjustments, it is often easier to edit the generated code than to hack the dot source. This is especially true when using the tikz output format.
Dot2tex has many options for customizing the output. Sometimes is is impractical or boring to type the various options at the command line each time you want to create the graph. To avoid this, you can use the special graph attributes. The d2toptions attribute is handy because it is interpreted as command line options.
So instead of typing:
$ dot2tex -tikz -tmath --tikzedgelabels ex1.dot
each time, use d2toptions like this:
digraph G {
d2toptions ="-tikz -tmath --tikzedgelabels";
...
}
The difference between the pgf and tikz output formats is best shown with an example. Consider the following graph:
graph G {
mindist = 0.5;
node [shape=circle];
a -- b -- c -- a;
}
Rendering the graph using circo and the pgf and tikz output formats:
$ circo -Txdot simple.dot | dot2tex -tmath -fpgf -s $ circo -Txdot simple.dot | dot2tex -tmath -ftikz -s
gives visually different graphs:
However, the main difference is in the generated code. Here is the pgf output:
% Edge: a -- b
\draw [] (19bp,38bp) -- (19bp,60bp);
% Edge: b -- c
\draw [] (35bp,70bp) -- (55bp,58bp);
% Edge: c -- a
\draw [] (55bp,40bp) -- (35bp,28bp);
% Node: a
\begin{scope}
\pgfsetstrokecolor{black}
\draw (19bp,19bp) ellipse (18bp and 19bp);
\draw (19bp,19bp) node {$a$};
\end{scope}
% Node: b
\begin{scope}
\pgfsetstrokecolor{black}
\draw (19bp,79bp) ellipse (18bp and 19bp);
\draw (19bp,79bp) node {$b$};
\end{scope}
% Node: c
\begin{scope}
\pgfsetstrokecolor{black}
\draw (71bp,49bp) ellipse (18bp and 19bp);
\draw (71bp,49bp) node {$c$};
\end{scope}
Compare the above code with the tikz output:
\node (a) at (19bp,19bp) [draw,circle,] {$a$};
\node (b) at (19bp,79bp) [draw,circle,] {$b$};
\node (c) at (71bp,49bp) [draw,circle,] {$c$};
\draw [] (a) -- (b);
\draw [] (b) -- (c);
\draw [] (c) -- (a);
The code is much more compact and it is quite easy to modify the graph.
The dot2texi package allows you to embed DOT graphs directly in you LaTeX document. The package will automatically run dot2tex for you and include the generated code. Example:
\documentclass{article}
\usepackage{dot2texi}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\begin{document}
\begin{dot2tex}[neato,options=-tmath]
digraph G {
node [shape="circle"];
a_1 -> a_2 -> a_3 -> a_4 -> a_1;
}
\end{dot2tex}
\end{document}
When the above code is run through LaTeX, the following will happen is shell escape is enabled:
The whole process is completely automated. The generated graph will look like this:
The codeonly option is useful in conjunction with dot2texi, especially when used with the tikz output format. Here is an example that shows how to annotate a graph:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes}
\usepackage{dot2texi}
\begin{document}
% Define layers
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
% The scale option is useful for adjusting spacing between nodes.
% Note that this works best when straight lines are used to connect
% the nodes.
\begin{tikzpicture}[>=latex',scale=0.8]
% set node style
\tikzstyle{n} = [draw,shape=circle,minimum size=2em,
inner sep=0pt,fill=red!20]
\begin{dot2tex}[dot,tikz,codeonly,styleonly,options=-s -tmath]
digraph G {
node [style="n"];
A_1 -> B_1; A_1 -> B_2; A_1 -> B_3;
B_1 -> C_1; B_1 -> C_2;
B_2 -> C_2; B_2 -> C_3;
B_3 -> C_3; B_3 -> C_4;
}
\end{dot2tex}
% annotations
\node[left=1em] at (C_1.west) (l3) {Level 3};
\node at (l3 |- B_1) (l2){Level 2};
\node at (l3 |- A_1) (l1) {Level 1};
% Draw lines to separate the levels. First we need to calculate
% where the middle is.
\path (l3) -- coordinate (l32) (l2) -- coordinate (l21) (l1);
\draw[dashed] (C_1 |- l32) -- (l32 -| C_4);
\draw[dashed] (C_1 |- l21) -- (l21 -| C_4);
\draw[<->,red] (A_1) to[out=-120,in=90] (C_2);
% Highlight the A_1 -> B_1 -> C_2 path. Use layers to draw
% behind everything.
\begin{pgfonlayer}{background}
\draw[rounded corners=2em,line width=3em,blue!20,cap=round]
(A_1.center) -- (B_1.west) -- (C_2.center);
\end{pgfonlayer}
\end{tikzpicture}
\end{document}
Note
If you don't want to include the dot directly in your document, you can use the \input{..} command. See the section Including external dot files for more details.
The dot parser used by dot2tex is based on code from the pydot project.


US stocks bolstered by merger announcements
NEW YORK, Wall Street stocks rose early today, opening a holiday-shortened week on a positive note following major merger announcements in the luxury and online brokerage industries.
Investors also took stock of an official Chinese announcement strengthening intellectual property protections, which could help advance trade talks with the United States.
A party-backed news outlet said the two sides were “very close” to a deal.
Shares of Tiffany shot up 5.8 per cent after it agreed to be acquired by luxury giant LVMH for US$16.2 billion in a transaction that bolsters the French company’s position in the critical US market.
Meanwhile, TD Ameritrade climbed 2.6 per cent following an announcement that it will be bought by rival Charles Schwab in an all-stock deal valued at US$26 billion. Schwab fell 1.1 per cent.
About 15 minutes into trading, the Dow Jones Industrial Average stood at 27,973.96, up 0.4 per cent.
The broad-based S&P 500 gained 0.5 per cent to 3,124.71, while the tech-rich Nasdaq Composite Index gained 0.8 per cent to 8,587.97.
This week’s calendar includes reports on consumer confidence for November and durable goods orders for October, as well as data on GDP and consumption. Markets will be closed Thursday for the Thanksgiving holiday. — AFP


--- layout: post status: publish published: true title: FileMap updated author: display_name: Tomas Restrepo login: tomasr email<EMAIL_ADDRESS>url: http://winterdom.com/ author_login: tomasr author_email<EMAIL_ADDRESS>author_url: http://winterdom.com/ wordpress_id: 973 wordpress_url: http://winterdom.com/2002/10/filemapupdated date: '2002-10-26 16:40:11 +0000' date_gmt: '2002-10-26 16:40:11 +0000' categories: - ".NET" tags: [] comments: [] ---
I've just uploaded an updated version of my MemoryMapped Files implementation for .NET, which is just a wrapper around some of the MMF Win32 APIs.
This version fixes a couple of bugs that were present (thanks to Stephan Wolf for picking one of them up!), adds full support for IDisposable to both main classes, and improves the programming model a bit. This one also contains a few unit tests, and I hope to add more in the future as time allows.
You can grab the updated version (<IP_ADDRESS>) from here


I think of myself as a good listener but after reading this section of empathic listening, it changed the way I listen. Listening with mindfulness makes it a lot easier to listen to people sharing their stories, particularly when they're feeling down. Instead of worrying that you're going to get dragged into their sadness, you listen without judging instead with more caring.
I love to meditate. It gives a sense peacefulness, and loving and kindness meditation did make me feel at ease and happy right after doing the meditation. I can really see the benefits of doing caring kindness meditation regulary.


Table Tennis Analysis
Player Name: Kaustubh
Stroke Frequency
Stroke Name
Number of Times Played
Rally Replay
Stroke Name
Zone
Speed of Stroke
Go Back
Visualise
Regenerate Table Coordinates
Start Recording
Stop Record and Analyse
Player Reports


|
x# - x coordinate of start of line pick
y# - y coordinate of start of line pick z# - z coordinate of start of line pick dx# - distance x of line pick dy# - distance y of line pick dz# - distance z of line pick radius (optional) - radius of line pick |
|
Returns the first entity between x,y,z to x+dx,y+dy,z+dz.
See also: EntityPick, LinePick, CameraPick, EntityPickMode. |


---
layout: default
title: Home
---
Welcome
fredhutch.io is an initiative to facilitate education about and promote access to computational resources at
Fred Hutch.
Descriptions for our current courses,
as well as links to publicly available training materials,
are available in
Resources
.
Fred Hutch and SCCA employees can register for fredhutch.io courses by
visiting Hutch Learning through Centernet and searching for "fredhutch.io".
For more information about training opportunities,
please see the
Training, Community, and Finding Help page
on the
Fred Hutch Biomedical Data Science Wiki.
Please submit requests for new courses or other training support using this form.
{% assign upcoming_header = true %}
{% for post in site.categories.events reversed %}
{% if post.date > site.time %}
{% if upcoming_header %}
Upcoming events
{% assign upcoming_header = false %}
{% endif %}
{{ post.date | date_to_string }}
{% for tag in post.tags %}
- {{ tag }}
{% endfor %}
{% endif %}
{% endfor %}


| Command | Description |
|---|---|
brew install git |
Install a package |
brew uninstall git |
Remove/Uninstall a package |
brew upgrade git |
Upgrade a package |
| — | — |
brew unlink git |
Unlink |
brew link git |
Link |
brew switch git 2.5.0 |
Change versions |
| — | — |
brew list --versions git |
See what versions you have |
| Command | Description |
|---|---|
brew info git |
List versions, caveats, etc |
brew cleanup git |
Remove old versions |
brew edit git |
Edit this formula |
brew cat git |
Print this formula |
brew home git |
Open homepage |
brew search git |
Search for formulas |
| Command | Description |
|---|---|
brew update |
Update brew and cask |
brew upgrade |
Upgrade all packages |
brew list |
List installed |
brew outdated |
What's due for upgrades? |
brew doctor |
Diagnose brew issues |
| Command | Description |
|---|---|
brew install --cask firefox |
Install the Firefox browser |
brew list --cask |
List installed applications |
Cask commands are used for interacting with graphical applications.
{: .-one-column}


SBP holds key interest rate at 13.25pc
by https://www.facebook.com/dunyanewsKARACHI (Dunya News) – State Bank of Pakistan (SBP) in its monetary policy has decided to leave the policy rate unchanged at 13.25 percent.
According to SBP, the decision reflects the Monetary Policy Committee s view that recent developments have had offsetting implications for the inflation outlook.
The bank last lifted rates in July by 100 basis points, raising the interest rate to 13.25 percent, its ninth cut since the start of 2018, as it faced rising inflation, a substantial current account deficit and downward pressure on the rupee currency.
The decision comes at a time of scrutiny for Pakistan’s economy by the International Monetary Fund, which is reviewing progress on reforms agreed as part of bailout package in July.


Grand Master Sedrick:
From your wounds, I'd say you've fought with Adil.
I wondered why we would undertake the pilgrimage when we couldn't even comprehend the inscriptions on the Tablets of Vision. I found out about the Stone of Commune in the ancient texts.
I hit a wall, and my Stone of Commune was damaged beyond use.
"How do I repair it?"


First, choose your lid and connect it to the base:
GAMER Lid
An already developed gamepad that provides all the buttons and LED matrices set up.
CREATOR Lid
A blank breadboard that allows you to develop your own gamepad the way you want it.
Then, choose your difficulty:
Small amount of programing may be needed, but the the code
is simple enough to play around with. Without out any previous
knowledge.
Understanding of simple programming elements (example: while
loops)
may be needed.
Move involved projects that will require some knowlege of programming
to understand.


---
layout: page
---
There’s 104 days of summer vacation, and the lockdown has just messed it up.
So E-Cell IIIT-H, in collaboration with OSDG IIIT-H, has come up with a solution, our 40-day event called “SummerUp”!
Bring out your inner innovator and come up with a project idea which has the potential to solve a problem (and win prizes, of course!) and around which a sustainable startup can be built,
the startup can be a profitable one or a social entrepreneurship based not for profit startup. Then in a 40 day period, implement the technologies related to it. Team up with as many friends as you want, there are no restrictions at all! (But keep in mind that you want to have a decent share of prize money per person.)
The main goal of this event is to help you see exactly how your idea can progress into a real world application and the amount of hard work required in order to bring it into reality. It’s okay if you haven’t got the technical skills to implement your ideas yet, that’s what this platform is for! With the help of our amazing mentors to guide you with the technical aspects, you’ll gain new skills and be able to get your hands dirty with them over the course of under two months.
Intellectual property rights:
E-Cell, OSDG or any representatives thereof do not claim any rights to the submissions of this competition. They are reserved with the respective teams making those submissions.
This award is given to the team with the most creative idea that was followed up with an efficient, well-executed implementation.
This award is given to the runner-up team that had a great idea with an excellent implementation.
This would be awarded to the greatest, most impressive implementation of an idea, even if the idea itself isn’t the most innovative or very sustainable.
The title would be won by a creative, original idea that couldn’t be implemented in the best of ways, but greatly impressed our judges.
{{ faq.answer }}


I have experience in Project Idealization to provide a robust solution for situations presented. An interactive approach to corporate strategy and foster collaborative thinking to promote global value proposals.
Corporate network survey focused on teaching. Allocation and management of computers in domain, file sharing, and user group policies.
Software development for scoring points in Cephalometric images focused on the dentistry area.
In addition to being a WEB developer, I appreciate part of my time being outdoors or distracting myself by watching TV shows and movies. On weekends, I play football. During the summer here in Bahia, I like to go to the beach, swim and ride a bike.
When forced indoors, I follow a series of fiction and fantasy genre movies and television programs, in addition to spending a lot of my free time studying hardware technologies.


Script Activities
This document covers the MDW script activities (labeled "Execute Script" and "Expression Evaluator" in the Eclipse Toolbox view).
Supported Languages
MDW has built-in support for three different scripting languages:
In addition, you can customize to add support for any arbitrary scripting language as described below.
When you drag a scripting activity onto your process canvas, the first configuration attribute you'll specify is the the language to use.
In Eclipse Designer, this appears as a dropdown on the Script tab in the properties view for an "Execute Script" activity, or on the Expression tab for a "Script Expression Evaluator".
Groovy is the recommended general-purpose scripting language for MDW. With Groovy scripting you have the ability to reference classes and closures declared in separate libraries, leading to greater power and flexibility.
Also, if you have the Groovy Plug-In installed, you can set breakpoints and debug your scripts and libraries in Eclipse.
JavaScript is supported via the Java 6 generic ScriptEngine mechanism.
Whichever scripting language you choose, the activities behave similarly, with the main difference being the syntax of the script itself.
The script content is stored as an attribute of your activity, so it can be modified, versioned and exported along with your process definition.
To edit your script, you can right click on the activity and select "Edit Script" from the context menu, or click on the "Edit Script" link in the properties view "Script" tab.
When you open a script for editing in Eclipse, the contents are saved to a temporary file in your workspace and are uploaded to the database when the process definition is saved.
This is important to remember since you'll want to reflect the latest changes when testing your processes. There is a preference option in Eclipse to disable the nag dialog so that you aren't reminded of this fact every time you save your scripts.
In your script you have implicit access to all of your process variables, as well as "runtimeContext" (which represents the containing activity's workflow
state). The runtimeContext binding is an instance of
ActivityRuntimeContext.
The syntax for accessing your process variables is simply varName in Groovy or JavaScript.
Execute Script Activity
In a script executor activity, you can both interrogate and assign values to your process variables.
Document variables are treated specially, however, and you'll need to identify which if any document (or Reference) variables are to be assigned values in your script:
You can control the return code from your script executor activity by returning a value from your script.
For example, if your activity has two outcomes labeled "VALID" and "INVALID", and your script has business logic that determines the outcome, you could implement as follows:
if (myVar != null && myVar.indexOf("something important") >= 0)
return "VALID";
else
return "INVALID";
Script Expression Evaluator
A script evaluator behaves much like a script activity except that it is normally a simple, one-line statement that evaluates to the return code which controls the outcome of the activity.
It is used for clarity to indicate a decision point in your process flow, where the outcome will depend on the runtime value of one or more process variables:
Script Libraries
Script libraries can contain reusable logic and utility classes that are accessible from all your script activities.
A script library artifact is really nothing more than a segment of code that resides in an MDW package.
Currently the only supported language for script libraries is Groovy.
Namespace resolution considerations dictate that the Groovy package name for your library components be the same as your MDW package name, and for this reason only MDW packages that comply with Groovy naming rules may contain script libraries.
To create a new script library artifact, right click on the MDW package in Process Explorer view, and select New > Script.
The newly-created script will automatically contain the appropriate package declaration. Here's an example:
package ValidationLibrary;
class TnValidator
{
boolean validate(tn)
{
println 'tn: ' + tn;
return true;
}
Closure getRegisterTnClosure()
{
return println('registering tn: ' + it); }
}
}
This resides in the MDW package ValidationLibrary and contains a class declaration for TnValidator.
To access this functionality from a script activity, you might include the following code:
import ValidationLibrary.*;
...
tnVal = new TnValidator();
valid = tnVal.validate(travelerTN);
tns = ["303-555-1212", "303-634-7861",<PHONE_NUMBER>];
tns.each(tnVal.getRegisterTnClosure());
Script library artifacts are cached in the MDW runtime engine. They are compiled on-demand by the GroovyScriptEngine.
The first time any Groovy script is accessed, all script libraries are loaded and initialized. So the first execution may be slow, but subsequent executions should be very fast since the code has been pre-loaded and pre-compiled.
Note: with MDW 5.x there is a mechanism for specifying that the Groovy script libraries be preinitialized (see the example in application-cache.xml).
If you change a script or library and save it in Eclipse, the cache is automatically reloaded, and the next access will re-initialize the libraries.
Debugging Groovy Scripts
If you have the Groovy Plug-In installed, you can debug your script activity or library by opening the contents and setting a breakpoint according to the usual procedure in Eclipse.
This only works for local (not remote) workflow projects, and the server must be running in debug mode.
When a breakpoint is encountered, you can evaluate variables and change values just as you would when debugging Java code in Eclipse.
Note that in the context of a script activity, there is a wrapper class that contains your process variable bind values.
You can evaluate or watch a process variable value by entering the following expression in the Eclipse Display view:
this.getBinding().getVariable("myVariable")
this.binding.getVariables().get("modifiedXmlBean")
Custom Scripting Languages
You can add support in the MDW script activities for any language of your choosing by writing a lightweight wrapper around your script library.
To accomplish this, you need to implement either or both of two interfaces: ScriptExecutor and ScriptEvaluator, depending on which activities need to employ the language.
The Java 1.6 javax.script.ScriptEngine interfaces makes it easy to plug-in a script provider who complies with the JSR 223 specification.
You can use the MDW class JavaScriptExecutor as a guideline on how to implement your own executor.
Once you've implemented the executor, you'll need to add it to the MDWFramework.ScriptExecutors section of your ApplicationProperties.xml file.
Then you can make your language available in the dropdown choices in Designer by editing the activity implementor Description XML PAGELET content to include it in the "LANGUAGES" attribute list.
The details of configuring activity implementors are described here.


Reports classes whose number of methods exceeds the specified maximum.
Classes with too many methods are often trying to 'do too much'. Consider splitting such a class into multiple smaller classes.
Configure the inspection:
- Use the Method count limit field to specify the maximum allowed number of methods in a class.
- Use the Ignore simple getter and setter methods option to ignore simple getters and setters in method count.
- Use the Ignore methods overriding/implementing a super method to ignore methods that override or implement a method
from a superclass.


Find and Replace
Here is your chance to play with good old
Find
and
Replace
!
Sentence or string of words:
Find word:
Replace with:
Replace!
Your input of:
Is now:


Feature: Calculator Scenario: The calculator can add Given a calculator When I add 2 and 3 Then I get 5 But result is less than 10 And result is greater than 0 Feature: Serve coffee In order to earn money Customers should be able to buy coffee at all times Scenario: Buy last coffee Given there are 1 coffees left in the machine And I have deposited 1 dollar When I press the coffee button Then I should be served a coffee


three.js
- Skeletal Animation Blending (model from
mixamo.com
)
Note: crossfades are possible with blend weights being set to (1,0,0), (0,1,0) or (0,0,1)


This privacy policy explains why we collect your personal data and what we do with it. It also explains your rights and how to enforce them.
If you don't agree to these terms and conditions and the privacy policy, do not use this service. Instead, please complete the forms sent to you by post and return them to the court.
Using this service responsibly
There are risks in using a shared computer, such as in an internet café, to use this service. It’s your responsibility to be aware of these risks and to avoid using any computer which may leave your personal information accessible by others. You are responsible if you choose to leave a computer unprotected while in the process of making a plea online.
We make every effort to check and test this service whenever we amend or update it. However, you must take your own precautions to ensure that the way you access this service does not expose you to the risk of viruses, malicious computer code or other forms of interference which may damage your own computer system.
You must not misuse our service by knowingly introducing viruses, trojans, worms, logic bombs or other malicious or technologically harmful material. You must not attempt to gain unauthorised access to our service, the system on which our service is stored or any server, computer or database connected to our service. You must not attack our site via a denial-of-service attack or a distributed denial-of-service attack.
Who manages this service
This service is managed by HM Courts and Tribunals Service (HMCTS), which is an executive agency of the Ministry of Justice (MoJ).
The MoJ is known as the data controller for data protection purposes. The MoJ personal information charter explains how the MoJ processes personal data.
As part of the MoJ, HMCTS is responsible for deciding how your personal data is used and for protecting the personal data you provide.
More information about using this service is in the terms and conditions.
Why we collect your personal data
We collect your personal data to:
- enable your plea to be processed
- set an appropriate time to pay should a fine be imposed
- administer justice
- meet legal requirements
- make improvements to this service
Our staff use your personal data to meet legal requirements and for the administration of justice. They work in the UK and your data is stored in the UK.
Types of personal data we collect
The personal data we collect includes:
- your name, address and contact details
- your email
- other personal information you provide in your plea submission
- national insurance number
We only process personal data that is relevant for meeting our legal obligations and for the administration of justice. We necessarily process personal data for the purposes of the administration of justice and supporting the independent judiciary in upholding the rule of law and in delivering justice impartially, speedily and efficiently.
Using your data
As part of your plea online you’ll be asked to provide your email address. This is to provide resulting notification for guilty pleas online.
We may ask for your permission to use your email address to send you emails using GOV.UK Notify. This system processes emails only within the European Economic Area until the point where emails are handed over to the email provider you use.
We use cookies to collect data that tells us about how you’re using this service, including:
- if you open an email from us or click on a link in an email
- your computer, phone or tablet’s IP address
- the region or town where you are using your computer, phone or tablet
- the web browser you use
Storing your data
When you make your plea online we store the data you have provided. The amount of time that your data is kept for depends on the service that you are using.
Sharing your data
If another government department is involved in processing your plea, we’ll share your data with them.
If you contact us and ask for help with a service you are using, your personal data may be shared with the Good Things Foundation. This is a company who we have partnered with to offer face to face support.
In some circumstances and where the law permits it, we may share your personal information with other justice organisations for the prevention or detection of crime; or to produce anonymised statistics. Where this is necessary, we will comply with all the relevant data protection laws.
We use Google Analytics to collect our website statistics. This anonymous website usage data is shared with Google.
Your rights
You can ask:
- to see the personal data that we hold on you
- to have the personal data corrected
- to have the personal data removed or deleted (this will depend on the circumstances, for example if you decide not to continue your claim or application)
- that access to the personal data is restricted (for example, you can ask to have your data stored for longer and not automatically deleted)
If you want to see the personal data that we hold on you, you can make a subject access request. This request goes to the MoJ as data controller.
OR
write to us:
Disclosure Team
Post point 10.24
102 Petty France
London
SW1H 9AJ
Email<EMAIL_ADDRESS>You can ask for more information about:
- agreements we have on sharing information with other organisations
- when we are allowed to pass on personal information without telling you
- our instructions to staff on how to collect, use or delete your personal information
- how we check that the information we hold is accurate and up-to-date
You can contact the MoJ data protection officer, by:
The Data Protection Officer
Ministry of Justice
3rd Floor, Post Point 3.20
10 South Colonnades
Canary Wharf
London
E14 4PU
Email<EMAIL_ADDRESS>How to complain
See our complaints procedure if you want to complain about how we've handled your personal data.
You can also complain to the Information Commissioner’s Office if you’re not satisfied with our response or believe we are not processing your personal data lawfully.
Using the make a plea service
The personal data we need
If you are using the make a plea service we will ask you for:
- your name
- your business or organisation if you are acting on their behalf
- your date of birth
- your email or mobile phone number
- your address
- your National Insurance number
- Your Driver number
- Financial information in relation to your means
Storing your data
The information you submit when making a plea is stored for 20 weeks in the Make a Plea portal before it’s deleted.
Sharing your data
The information you submit will be shared with the police, the relevant court, enforcement and the DVLA.
In some circumstance and where the law permits it, we may share your personal information with other justice organisations for the prevention or detection of crime; or to produce anonymised statistics. Where this is necessary, we will comply with all the relevant data protection laws.
As in all criminal cases, some information will be available to the press and public on demand, unless a reporting restriction is applied or the court decides otherwise. If you want to know how the data you provide is used, please visit: www.justice.gov.uk/courts/procedure-rules/criminal/forms
Further information
Refer to GOV.UK privacy policy here


Home
My Representatives
Party Comparison
Candidate Comparison
Legislative Branch
Composition
Effictiveness
Budget
Judicial Branch


ubinascii
– binary/ASCII conversions¶
This module implements conversions between binary data and various encodings of it in ASCII form (in both directions).
Functions¶
-
ubinascii.
hexlify
(data[, sep])¶ Convert binary data to hexadecimal representation. Returns bytes string.
Difference to CPython
If additional argument,
sep
is supplied, it is used as a seperator between hexadecimal values.
-
ubinascii.
unhexlify
(data)¶ Convert hexadecimal data to binary representation. Returns bytes string. (i.e. inverse of hexlify)
-
ubinascii.
a2b_base64
(data)¶ Convert Base64-encoded data to binary representation. Returns bytes string.
-
ubinascii.
b2a_base64
(data)¶ Encode binary data in Base64 format. Returns string.


HCPSS Receives A+ on School Food Environment Grades Report
HCPSS was the only Maryland school system to earn an A+ and only one of two to earn an A on the 2018-19 School Food Environment Grades report from Healthy School Food Maryland. Howard County ranked highest overall in the state for the third consecutive year.


CUP |
SMMU |
WTBU |
Search the Rankings of your University directly!
Library is always a symbol of university position and strength as well as university spirit, being the important component of campus culture. Want to know which universities possess the most spectacular libraries? Check below article!
After CUCASers' constantly efforts, the new version of CUCAS University Ranking is online now. The new version of CUCAS University Ranking contains a lot of great new features, here we list top 4 new features in it to give you a brief look of our new "CUCAS University Ranking".
Wuhan has been a more and more popular destination for international students to study in China. With a 3,500-year-long history, Wuhan is one of the most ancient and civilized metropolitan cities in China, more ancient than Beijing, Xi'an and Nanjing.
Universities in coastal area always enjoy great popularity among students. Beautiful campus is absolutely one of the reasons why students choose a university. For beach lovers, take the chance to see 10 most beautiful coastal universities in China.
Faced with different medical universities, maybe students are confused about which university is his favorite or which city deserves his coming?
Do you know how many students come to study in China in these years? The number of students who study in China is still keep going. From this point, the trends for international students who want to study in China will be continuously growing. Now, the editor will show you this growing trends through different parts.
The most comprehensive Chinese University Ranking Collection


Select Your Experience
3D Face Filter
3D Model Viewer
Share this pen
Facebook
Twitter
LinkedIn
Email
https://codepen.io/ayoisaiah/pen/YbNazJ
Copy Link
Recording
Screenshot
Start Recording
Play
Download Video
Take Screenshot
Download Photo
Share


{% extends 'base/base_template.html' %} {% load static %} {% block main_content %}
| # | Name | Role | Department | Username | Join Date | Actions |
|---|---|---|---|---|---|---|
| {{ forloop.counter }} | {{ employee.get_full_name }} | {{ employee.role }} | {{ employee.department.name }} | {{ employee.username }} | {{ employee.date_joined|date }} | Delete |


Hi! I'm a teacher, craft blogger, and soon-to-be a self-taught web developer.
CURRENT SKILLS: HTML, CSS
DEVELOPING SKILLS: Javascript, JQuery
If I'm not learning to code with Free Code Camp or other online resources,
you'll find me cooking, cycling, crocheting, or binge-watching TV shows.


Quicklinks
A url shortener for the modern age.
This is a special url shortener for enterprise use. It has the following features:
- Short links for internal websites.
- Site previews for external websites.
- Malware checking for external links.
Create or modify a link
Link saved as {{fulllink}}


Toggle navigation
Firebase Auth Test App
reCAPTCHA Config
reCAPTCHA Mode
Normal
Invisible
auth.currentUser
Last User
auth.currentUser
Last User
[anonymous]
/ uid:
/
Auth methods
User methods
Popup/Redirect methods
Action Code Settings
Logs
Development mode APIs
Enable App Verification
Disable App Verification
Apply settings change
Web Worker Testing
Run Tests
Service Worker Testing
Run Tests
Auth State Persistence
Set Persistence
Language code
Set Language Code
Use Device Language
Sign Up
Sign Up
Sign In
Sign In with Email and Password
Sign In with Custom Token
Sign In Anonymously
Sign In with Generic IdP Credential
Verify Phone Number
Sign in by Confirming Phone Verification
Sign In with Email Link
Send Sign In With Email Link
Send Sign In With Email Link Current URL
Sign In With Email Link
Password Reset
Send Password Reset Email
Verify Password Reset Code
Confirm Password Change
Fetch Sign In Methods
Fetch Sign In Methods For Email
Update Current User
Copy Active User to Temp Auth
Copy Last User to Auth
Update Profile
Change Email
Change Password
Update Profile
Linking/Unlinking
Get Providers Data
Link with Email and Password
Link with Generic IdP Credential
Verify Phone Number
Update Phone Number by Confirming Phone Verification
Link by Confirming Phone Verification
Reauthenticate by Confirming Phone Verification
Send Email Link To Link Or Reauthenticate User
Link With Email Link
Reauthenticate With Email Link
Unlink Provider
Enroll Second Factor
Phone
Verify Phone Number
Complete Enrollment
Other Actions
Send Email Verification
Confirm Email Verification
Get ID Token Result (no refresh)
Refresh ID Token Result
Get ID Token (no refresh)
Refresh ID Token
Get ID Token from Web Worker
Sign Out
Delete account
Delete Account
Sign in
Link
Reauthenticate
With Redirect
With Popup
Scopes (separated by commas)
OAuth Custom Parameters
Add OAuth Custom Parameter
OAuth Providers
Google
Facebook
Twitter
Github
Generic IdP
SAML IdP
Get Redirect Result
Web
Android
Install app
Do not install app
iOS
Handle code in app
Do not handle code in app
Reset
Clear
Clear
×
Select a second factor to sign in with
Send code
Complete sign In


A full child is a happy child! Everyday we cook up a soup as well as a full meal for every child, and offer fruits and beverages throughout the day.
We provide a quiet time for sleeping during the day for the younger children who need more sleep than the others.
We have a tent-full of toys and games to play, as well as regular outdoor activities.
Our own children were born, and we gained invaluable parenthood experience!
Seeing as we had all this experience, it felt like a point in our lives to move onto a job that we know how to do well. So we started a self-employed childminding service.
From our humble beginnings, we steadily gained popularity as a local business, and children and their parents loved it, especially the homemade cooking. Peas In a Pod became a business, and here we are today!
We are looking at the possibility of expanding our business into a full size nursery since we are still running out of our own home.
Mother of the house!
Father of the house!
Our helpful assistant!
Our workplace is a family environment, so it's only natural that our staff treat each other, and the children especially, like family.


[1]
windows 7 rc as my only operating system for and 3 months .
[2]
xp is totally insane , the one of people using hardware more than 10 -lrb-/-lrb- yes and 10 .


pingouin.bayesfactor_ttest¶
-
pingouin.
bayesfactor_ttest
(t, nx, ny=None, paired=False, alternative='two-sided', r=0.707)¶ Bayes Factor of a T-test.
- Parameters
- tfloat
T-value of the T-test
- nxint
Sample size of first group
- nyint
Sample size of second group (only needed in case of an independent two-sample T-test)
- pairedboolean
Specify whether the two observations are related (i.e. repeated measures) or independent.
- alternativestring
Defines the alternative hypothesis, or tail of the test. Must be one of “two-sided” (default), “greater” or “less”.
Warning
One-sided Bayes Factor (BF) are simply obtained by doubling the two-sided BF, which is not the same behavior as R or JASP. Be extra careful when interpretating one-sided BF, and if you can, always double-check your results.
- rfloat
Cauchy scale factor.  The default is \(\sqrt{2} / 2 \approx 0.707\).
- Returns
- bffloat
Scaled Jeffrey-Zellner-Siow (JZS) Bayes Factor (BF10). The Bayes Factor quantifies the evidence in favour of the alternative hypothesis.
See also
ttest
T-test
pairwise_ttest
Pairwise T-tests
bayesfactor_pearson
Bayes Factor of a correlation
bayesfactor_binom
Bayes Factor of a binomial test
Notes
Adapted from a Matlab code found at https://github.com/anne-urai/Tools/tree/master/stats/BayesFactors
If you would like to compute the Bayes Factor directly from the raw data instead of from the T-value, use the
pingouin.ttest()
function.The JZS Bayes Factor is approximated using the formula described in ref [1]:
\[\text{BF}_{10} = \frac{\int_{0}^{\infty}(1 + Ngr^2)^{-1/2} (1 + \frac{t^2}{v(1 + Ngr^2)})^{-(v+1) / 2}(2\pi)^{-1/2}g^ {-3/2}e^{-1/2g}}{(1 + \frac{t^2}{v})^{-(v+1) / 2}}\]where \(t\) is the T-value, \(v\) the degrees of freedom, \(N\) the sample size, \(r\) the Cauchy scale factor (= prior on effect size) and \(g\) is is an auxiliary variable that is integrated out numerically.
Results have been validated against JASP and the BayesFactor R package.
References
- 1
Rouder, J.N., Speckman, P.L., Sun, D., Morey, R.D., Iverson, G., 2009. Bayesian t tests for accepting and rejecting the null hypothesis. Psychon. Bull. Rev. 16, 225–237. https://doi.org/10.3758/PBR.16.2.225
Examples
Bayes Factor of an independent two-sample T-test
>>> from pingouin import bayesfactor_ttest >>> bf = bayesfactor_ttest(3.5, 20, 20) >>> print("Bayes Factor: %.3f (two-sample independent)" % bf) Bayes Factor: 26.743 (two-sample independent)
Bayes Factor of a paired two-sample T-test
>>> bf = bayesfactor_ttest(3.5, 20, 20, paired=True) >>> print("Bayes Factor: %.3f (two-sample paired)" % bf) Bayes Factor: 17.185 (two-sample paired)
Now specifying the direction of the test
>>> tval = -3.5 >>> bf_greater = bayesfactor_ttest(tval, 20, alternative='greater') >>> bf_less = bayesfactor_ttest(tval, 20, alternative='less') >>> print("BF10-greater: %.3f | BF10-less: %.3f" % (bf_greater, bf_less)) BF10-greater: 0.029 | BF10-less: 34.369