Roundup: an Issue-Tracking System for Knowledge Workers
| Authors: | Ka-Ping Yee (original), Richard Jones (implementation) |
|---|
Contents
Introduction
Roundup is an issue-tracking system called which will manage a number of issues (with properties such as “description”, “priority”, and so on) and provides the ability to:
- submit new issues,
- find and edit existing issues, and
- discuss issues with other participants.
Roundup facilitates communication among the participants by managing discussions and notifying interested parties when issues are edited.
Background
A typical software project requires the management of many tasks, usually distributed among several collaborators. In fact, any project team could use a tool for sorting out and discussing all the relevant issues. A common approach is to set up some kind of “to-do” list that people can share.
However, to address the overall problem we need much more than just a shared to-do list; we need to manage a growing body of knowledge and experience to help a team collaborate effectively on a project. The issue-tracking tool becomes a nexus for communication: the Grand Central Station of the group intelligence.
The primary focus of this design is to help developers work together well, not to provide a customer service interface to the developers. This is not to say that the design is to be made unsuitable for customers to use. Rather, it is assumed that many of the same qualities that are good for supporting development (see below) are also good for non-developers using the system. Additional niceties for providing a safe or simplified interface to clients are intentionally deferred for later consideration.
A good issue-tracking system should have at least the following properties:
- Low barrier to participation
- The usefulness of the tool depends entirely on the information people contribute to it. It must be made as easy as possible to submit new issues and contribute information about existing issues.
- Straightforward navigation
- It should be easy for users to extract information they need from the system to direct their decisions and tasks. They should be able to get a decent overview of things as well as finding specific information when they know what they’re after.
- Controlled information flow
- The users must have control over how much information and what information they get. A common flaw of some issue-tracking systems is that they inundate users with so much useless e-mail that people avoid the system altogether.
With a nod to the time-honoured computer science tradition of “filling in the fourth quadrant”, we note that there are really four kinds of information flow going on here. The three mentioned qualities really address the first three quadrants of this 2-by-2 matrix, respectively:
- User push: a user submits information to the system.
- User pull: a user queries for information from the system.
- System push: the system sends information out to users.
- System pull: the system solicits information from users.
An example of the fourth kind of flow is voting. Voting isn’t described in this design, but it should be noted as a potential enhancement.
Guiding Principles
- Simplicity
- It is a strong requirement that the tool be accessible and understandable. It should be fairly obvious what different parts of the interface do, and the inner mechanisms should operate in ways that most users can easily predict.
- Efficiency
- We aim to optimize for minimum effort to do the most common operations, and best use of resources like screen real estate to maximize the amount of information that we summarize and present.
- Generality
- We try to avoid making unnecessary assumptions that would restrict the applicability of the tool. For example, there is no reason why one might not also want to use this tool to manage a design process, non-software projects, or organizational decisions.
- Persistence We
- prefer hiding or reclassifying information to deleting it. This helps support the collection of statistics later. If records are never destroyed, there is little danger in providing access to a larger community, and logging yields accountability, which may encourage better behaviour.
Data Model
Roundup stores a number of items, each of which can have several properties and an associated discussion. The properties can be used to classify or search for items. The discussion is a sequence of e-mail messages. Each item is identified by a unique number, and has an activity log which records the time and content of edits made on its properties. The log stays fairly small since the design intentionally provides only small data types as item properties, and encourages anything large to be attached to e-mail where it becomes part of the discussion. The next section explains how items are organized.
The Hyperdatabase
Often when classifying information we are asked to select exactly one of a number of categories or to fit it into a rigid hierarchy. Yet things only sometimes fall into one category; often, a piece of information may be related to several concepts.
For example, forcing each item into a single keyword category is not just suboptimal but counterproductive: seekers of that item may expect to find it in a different category and conclude that the item is not present in the database – which has them worse off than if the items were not categorized at all.
Some systems try to alleviate this problem by allowing items to appear at multiple locations in a tree, as with “aliases” or “symbolic links” in a filesystem, for example. This does help somewhat, but we want to be even more flexible by allowing the organization of items into sets that may freely intersect. Rather than putting each item at exactly one place in an overall “grand scheme”, a item can belong to as many sets as are appropriate.
If we choose to represent the sets themselves as items and set membership as a link between items, we’re now ready to present the definition of a hyperdatabase.
A hyperdatabase is a collection of items that may be hyperlinked to each other (hence the name “hyperdatabase”). Each item carries a collection of key-value pairs, where some of the values may be links to other items. Any item may have an arbitrary number of outgoing and incoming links. Hyperdatabases are able to efficiently answer queries such as “what items link to this item?” and “what items does this item link to?”
Rationale
There are several reasons for building our own kind of database for Roundup rather than using an existing one.
Requiring the installation of a full-blown third-party SQL database system would probably deter many potential users from attempting to set up Roundup; yet a real relational database would be too complicated to implement on our own.
On the other hand, a hyperdatabase can be implemented fairly easily using one of the Python DBM modules, so we can take the “batteries-included” approach and provide it as part of the system. It’s easier to build and understand than a true relational database (in accordance with our guiding principle of simplicity), but provides most of the query functionality we want.
A hyperdatabase is well suited for finding the intersection of a number of sets in which items belong. We expect that most of the queries people want to do will be of this form, rather than complicated SQL queries. For example, a typical request might be “show me all critical items related to security”. The ability to store arbitrary key-value pairs and links on items gives it more flexibility than an RDBMS.
Users are not going to be making thousands of queries per second, so it makes sense to optimize for simplicity and flexibility rather than performance.
Roundup’s Hyperdatabase
For our application, we store each item as a item in a hyperdatabase. The item’s properties are stored as key-value pairs on its item. Several types of properties are allowed: string, number, boolean, date, interval, *link, and multlink. Another type, password, is a special type of string and it’s only used internally to Roundup.
The string type is for short, free-form strings. String properties are not intended to contain large amounts of text, and it is recommended that they be presented as one-line fields to encourage brevity. A number is a special type of string that represents a numeric value. A boolean is further constrained to be a true or false value.
The date type is for calendar dates and times. An interval is the time between two dates.
The link type denotes a single selection from a number of options. A link property entails a link from the item possessing the property to the item representing the chosen option.
The multilink type is for a list of links to any number of other items in the in the database. A multilink property, for example, can be used to refer to related items or keyword categories relevant to an item.
For Roundup, all items have four properties that are not customizable:
- a date property named creation
- a link property named creator
- a date property named activity
These properties represent the date of the creation of the item, who created it, and when the last change was made.
Further, all issue items have an additional four properties:
- a string property named title
- a multilink property named nosy
- a multilink property named messages
- a multilink property named files
- a multilink property named superseder
The title property is a short one-line description of the item. The detailed description can go in the first e-mail message of the item’s messages spool.
The nosy property contains a list of the people who are interested in an item. This mechanism is explained in the section on Submission and Discussion.
Each message added to the item goes in the messages spool - any attached files go in the files spool.
The superseder property is used to support the splitting, joining, or replacing of items. When several items need to be joined into a single item, all the old items link to the new item in their superseder property. When an item needs to be split apart, the item references all the new items in its superseder propety. We can easily list all active items just by checking for an empty superseder property, and trace the path of an item’s origins by querying the hyperdatabase for links.
Users of the system are also represented by items in the hyperdatabase, containing properties like the user’s e-mail address, login name, and password.
The Default Schema
It is hoped that the hyperdatabase together with the specializations mentioned above for Roundup will be applicable in a variety of situations (in accordance with our guiding principle of generality).
To address the problem at hand, we need a specific schema for items applied particularly to software development. Again, we are trying to keep the schema simple: too many options make it tougher for someone to make a good choice:
# IssueClass automatically gets these properties:
# title = String()
# messages = Multilink("msg")
# files = Multilink("file")
# nosy = Multilink("user")
# superseder = Multilink("issue")
# (it also gets the Class properties creation, activity and creator)
issue = IssueClass(db, "issue",
assignedto=Link("user"), keyword=Multilink("keyword"),
priority=Link("priority"), status=Link("status"))
The assignedto property assigns responsibility for an item to a person or a list of people. The keyword property places the item in an arbitrary number of relevant keyword sets (see the section on Browsing and Searching).
The prority and status values are initially:
| Priority | Description |
|---|---|
| “critical” | panic: work is stopped! |
| “urgent” | important, but not deadly |
| “bug” | lost work or incorrect results |
| “feature” | want missing functionality |
| “wish” | avoidable bugs, missing conveniences |
| Status | Description |
|---|---|
| “unread” | submitted but no action yet |
| “deferred” | intentionally set aside |
| “chatting” | under review or seeking clarification |
| “need-eg” | need a reproducible example of a bug |
| “in-progress” | understood; development in progress |
| “testing” | we think it’s done; others, please test |
| “done-cbb” | okay for now, but could be better |
| “resolved” | fix has been released |
As previously mentioned, each item gets an activity log. Whenever a property on an item is changed, the log records the time of the change, the user making the change, and the old and new values of the property. This permits the later gathering of statistics (for example, the average time from submission to resolution).
We do not specify or enforce a state transition graph, since making the system rigid in that fashion is probably more trouble than it’s worth. Experience has shown that there are probably two convenient automatic state transitions:
- from unread to chatting when e-mail is written about an item
- from testing to resolved when a new release of the software is made
Beyond these, in accordance with our principle of generality, we allow access to the hyperdatabase API so that scripts can automate transitions themselves or be triggered by changes in the database.
User Interface
Roundup provides its services through two main interfaces: e-mail and the Web. This division is chosen to optimize the most common tasks.
E-mail is best suited for the submission of new items since most people are most comfortable with composing long messages in their own favourite e-mail client. E-mail also permits them to mention URLs or attach files relevant to their submission. Indeed, in many cases people are already used to making requests by sending e-mail to a mailing list of people; they can do exactly the same thing to use Roundup without even thinking about it. Similarly, people are already familiar with holding discussions in e-mail, and plenty of valuable usage conventions and software tools already exist for that medium.
The Web, on the other hand, is best suited for summarizing and seeking information, because it can present an interactive overview of items. Since the Web has forms, it’s also the best place to edit items.
Submission and Discussion
The system needs an address for receiving mail and an address that forwards mail to all participants. Each item has its own list of interested parties, known as its nosy list. Here’s how nosy lists work:
- New items are always submitted by sending an e-mail message to Roundup. The “Subject:” field becomes the description of the new item. The message is saved in the mail spool of the new item, and copied to the list of all participants so everyone knows that a new item has been added. The new item’s nosy list initially contains the submitter.
- All e-mail messages sent by Roundup have their “Reply-To:” field set to Roundup’s address, and have the item’s number in the “Subject:” field. Thus, any replies to the initial announcement and subsequent threads are all received by Roundup. Roundup notes the item number in the “Subject:” field of each incoming message and appends the message to the appropriate spool.
- Any incoming e-mail tagged with an item number is copied to all the people on the item’s nosy list, and any users found in the “From:”, “To:”, or “Cc:” fields are automatically added to the nosy list. Whenever a user edits an item’s properties in the Web interface, they are also added to the nosy list.
The effect is like each item having its own little mailing list, except that no one ever has to worry about subscribing to anything. Indicating interest in an issue is sufficient, and if you want to bring someone new into the conversation, all you need to do is “Cc:” a message to them. It turns out that no one ever has to worry about unsubscribing, either: the nosy lists are so specific in scope that the conversation tends to die down by itself when the issue is resolved or people no longer find it sufficiently important.
Each nosy list is like an asynchronous chat room, lasting only a short time (typically five or ten messages) and involving a small group of people. However, that group is the right group of people: only those who express interest in an item in some way ever end up on the list, so no one gets spammed with mail they don’t care about, and no one who wants to see mail about a particular item needs to be left out, for they can easily join in, and just as easily look at the mail spool on an item to catch up on any messages they might have missed.
We can take this a step further and permit users to monitor particular keywords or classifications of items by allowing other kinds of items to also have their own nosy lists. For example, a manager could be on the nosy list of the priority value item for “critical”, or a developer could be on the nosy list of the keyword value item for “security”. The recipients are then determined by the union of the nosy lists on the item and all the items it links to.
Using many small, specific mailing lists results in much more effective communication than one big list. Taking away the effort of subscribing and unsubscribing gives these lists the “feel” of being cheap and disposable.
The transparent capture of the mail spool attached to each issue also yields a nice knowledge repository over time.
Editing
Since Roundup is intended to support arbitrary user-defined schema for item properties, the editing interface must be automatically generated from the schema. The configuration for Roundup will include a template describing how to lay out the properties to present a UI for inspecting and editing items. For example:

Priority
priority
Status
status

To display the editing form for an item, Roundup inserts an HTML form widget where it encounters an expression like tal:content="structure context/priority/menu". Each type has its own appropriate editing widget:
string and number properties appear as text fields
boolean properties appear as a yes/no selection
date and interval properties appear as text fields
link properties appear as selection lists
- multilink properties appear as multiple-selection lists
or text fields with pop-up widgets for larger selections.
We foresee the use of custom date fields for things like deadlines, so input fields for date properties support a simple way of specifying relative dates (such as “3w” for “three weeks from now”).
The superseder property is a special case: although it is more efficient to store a superseder property in the superseded item, it makes more sense to provide a “supersedes” edit field on the superseding item. We use a special widget on items for this purpose (a text field containing a comma-separated list of items). Links in the superseder property appear on both the superseding and superseded items to facilitate navigating an item’s pedigree.
After the editing widgets, the item inspection page shows a “note” text box and then a display of the messages in the discussion spool. This field lets you enter a note explaining your change when you edit the item, and the note is included in the notification message that goes out to tell the interested parties on the nosy list of your edits.
Browsing and Searching
The ideal we would like to achieve is to make searching as much like browsing as possible: the user simply clicks about on things that seem interesting, and the information narrows down comfortably until the goal is in sight. This is preferable to trying to digest a screen filled with widgets and buttons or entering a search expression in some arcane algebraic syntax.
While a one-shot search may be appropriate when you’re looking for a single item and you know exactly what you want, it’s not very helpful when you want an overview of things (“Gee, there are a lot more high-priority items than there were last week!”) or trying to do comparisons (“I have some time today, so who is busiest and could most use some help?”)
The browsing interface presents filtering functionality for each of the properties in the schema. As with editing, the interface is generated from a template describing how to lay out the properties. Each type of property has its own appropriate filtering widget:
- string properties appear as text fields supporting case-insensitive substring match
- date properties appear as a text field which accepts a date range with start, end or both
- link properties appear as a group of selectable options (the filter selects the union of the sets of items associated with the active options)
- multilink properties appear as a group of selectable options (the filter selects the intersection of the sets of items associated with the active options)
For a multilink property like keyword, one possibility is to show, as hyperlinks, the keywords whose sets have non-empty intersections with the currently displayed set of items. Sorting the keywords by popularity seems reasonable. Clicking on a keyword then narrows both the list of items and the list of keywords. This gives some of the feel of walking around a directory tree – but without the restriction of having to select keywords in a particular hierarchical order, and without the need to travel all the way to the leaves of the tree before any items are visible.
Below the filtering form is a listing of items, with their properties displayed in a table. Rows in the table are generated from a template, as with the editing interface. This listing is the central overview of the system, and it should aim to maximize the density of useful information in accordance with our guiding principle of efficiency. Colour may be used to indicate the status of each item to help the eye sift through the index quickly.
Roundup sorts items in groups by priority, and then within groups by the date of last activity. This reveals at a glance where discussion is most active, and provides an easy way for anyone to move an issue up in the list.
The page produced by a given set of browsing options constitutes an index. The options should all be part of the query parameters in the URL so that views may be bookmarked. An index specifies:
- search strings for string properties
- date ranges for date properties
- acceptable values for choice properties
- required values for reference properties
- a sorting key
- a grouping key
- a list of properties for which to display filtering widgets
Our default index is:
- all status values except “resolved”
- show priority and fixer
- grouping by priority in sections
- sorting by decreasing activity date
The starting URL for Roundup immediately presents the listing of items generated by this default index, with no preceding query screen.


Sweltering climate, exhausting heat waves, and merciless drought & dust make life in summers agonizing. On the contrary, winters bring an uncharacteristic hope that appeases the soul. People are content, festive, and brimming with energy that was once sapped out of them. Thus, they start looking for options to travel. And Uttarakhand is one such option.
Uttarakhand, or Devbhumi as it is fondly called, boasts of serene, quaint, and economical destinations that would be a definite help in getting over the summer woes. As most of these places are relatively unexplored, they seem promising and won’t cease to surprise you.
For all of you who have been sweating it out in the scorching heat this year, here is a list of places to visit in Uttarakhand in winter.


Team Member Profiles
Mary Smith
Manager
ID: 11
Email<EMAIL_ADDRESS>Office: 22
Richie Rich
Engineer
ID: 33
Email<EMAIL_ADDRESS>GitHub: Richie
Steve Strange
Intern
ID: 55
Email<EMAIL_ADDRESS>School: CalArts


Visualization of Linear Size Suffix Trie
Show Suffix Links:
Show Extended Suffix Links:
Create Implicit Node:
Links
Paper of Linear Size Suffix Trie
Data Structure Visualizer


The lunar calendar data is obtained from the United States Naval Observatory (USNO) website. We import the custom data as a CSV file. The four phases of the lunar cycle are New Moon, First Quarter, Full Moon and Last Quarter. They are in string format in the data file so we convert the string names to numbers as New Moon(0), First Quarter(1), Full Moon(2) and Last Quarter(3).
class MoonPhase(PythonData): "Class to import Phases of the Moon data from Dropbox" def GetSource(self, config, date, isLiveMode): return SubscriptionDataSource("https://www.dropbox.com/s/q9rt06tpfjlvymt/MoonPhase.csv?dl=1", SubscriptionTransportMedium.RemoteFile) def Reader(self, config, line, date, isLiveMode): index = MoonPhase() index.Symbol = config.Symbol try: # Example File Format: (Data starts from 01/07/2004) # date phase # 2004 Jan 07 15:40 Full Moon data = line.split(',') if data[0] == "date": return None index.Time = datetime.strptime(data[0], "%Y %b %d %H:%M").replace(hour=0, minute=0) if data[1] == "New Moon": index.Value = 0 elif data[1] == "First Quarter": index.Value = 1 elif data[1] == "Full Moon": index.Value = 2 elif data[1] == "Last Quarter": index.Value = 3 except: return None return index
Research shows that the effect is strongest in emerging markets.
Here we choose the iShares MSCI Emerging Markets Index ETF EEM
.
The algorithm therefore goes long in emerging market index ETF 7 days before the new moon and switch to a short position on ETF 7 days before the full moon.
The benchmark is set to EEM
.
def Initialize(self): self.SetStartDate(2004, 1, 1) self.SetEndDate(2018, 8, 1) self.SetCash(100000) # import the custom data self.AddData(MoonPhase, "phase", Resolution.Daily) self.AddEquity("EEM", Resolution.Daily) self.SetBenchmark("EEM") def OnData(self, data): # long in emerging market index ETF 7 days before the new moon (It's the Last Quarter) if self.Securities["phase"].Price == 3 and not self.Portfolio["EEM"].IsLong: self.SetHoldings("EEM", 1) # short on emerging market index ETF 7 days before the full moon (It's the First Quarter) elif self.Securities["phase"].Price == 1 and not self.Portfolio["EEM"].IsShort: self.SetHoldings("EEM", -1)


Perf Report:
Test (Frame #19)
Worker Thread 0
expand all
|
collapse all
View as:
tree
|
flat
Worker Thread 1
expand all
|
collapse all
View as:
tree
|
flat
Worker Thread 2
expand all
|
collapse all
View as:
tree
|
flat
CUMULATIVE
expand all
|
collapse all
View as:
tree
|
flat


It causes bugs!
The Internet offers a two-part list of 113 ways that time screws up software.
There are many contenders for the biggest cause of time-related bugs...
but today I'll be focusing on my personal pet peeve...
false precision.
A joke!
| Input | "2016-03-04" |
| Stored as | 2016-03-04 00:00:00 PST |
| Equivalent to | 2016-03-04 08:00:00 UTC |
The year 1996 and the Date
class.
An annoyingly one-size-fits-all approach to storing and representing time values, riddled with early-OOP antipatterns.
Date
toString
pretends it does
java.util.Date
, java.util.Calendar
,
or java.sql.Date
?
Or, as it is known in Java 8, the java.time.*
package.
A library of improved classes for representing time.
| Java, pre-8 | Few classes | Overloaded and complex |
| Joda-Time | Larger and more complex selection of classes | Each class is simple |
The remainder of the talk will be a brief tour of Joda-Time's basic classes.
If you are not a Java coder, I hope it will provide a good philosophical example.
Example:
Neil Armstrong first stepped onto the Moon at
July 21, 1969, 02:56 UTC.
Instant
did the day begin)
Example:
The release date of the movie Primer was
October 8, 2004.
Example:
WiFri begins at
4:30 PM.
Example:
Bastille Day is celebrated on
July 14.
LocalDateTime
+ time zone = Instant
Example:
The next Game of Thrones season premiere episode will air
April 24, 2016 at 9:00 PM.
ZonedDateTime
and OffsetDateTime
represent date-and-timestamps in particular time zones.
Both can be translated into Instant
objects.
An offest is just a number of hours offset from UTC.
A time zone defines an offset, with complicated baggage about stuff like Daylight Saving Time.
Example:
The Pacific Time
Zone's offset is equal to UTC minus eight hours in the winter and
UTC minus seven hours in the summer.
Example:
Regulation time in a game of soccer is
90 minutes.
Example:
A warranty lasts for
90 days.
Duration
and Period
?
To avoid false precision!
Days, as measured on a calendar, don't neatly translate into 24-hour intervals.
What if Daylight Saving Time begins or ends during the period? What if you travel between time zones?
Representing a 90-day warranty as 2,160 hours is silly.
The java.time.temporal.*
package provides nice enums
for every time unit and calendar field you can think of.
Fear magic numbers no longer.
But I thought the whole point of the Calendar
class
was to avoid ethnocentric preference for the Gregorian calendar?
It's not Gregorian; it's ISO-8601.
Can't be ethnocentric with "International" right in the name.
The java.time.chrono.*
package has got you covered with
library classes for Islamic, Japanese, Chinese, and Thai calendars.
Time left for questions?
These slides use reveal.js.
This work is licensed under a Creative Commons Attribution 4.0 International License.


Try-hard normcore crucifix, listicle Tumblr kale chips kitsch Brooklyn mustache organic skateboard tote bag before they sold out Wes Anderson. Gentrify authentic PBR before they sold out, wolf cred blog cronut migas sriracha stumptown keytar. Sriracha chia Williamsburg fashion axe taxidermy. Church-key Truffaut tattooed Helvetica kale


Unit 1: Introduction to web
After the first unit we are familiar with concepts such the web, html, urls and web applications. We know how I, my computer (browser), the internet, http and servers are connected to each other.
We are also familiar with basic html markups. We have learned how to edit text and how to add images and urls to our website.
HTML
is made of text content (what you see)
markup (what it looks like)
references to other documents (for example images and videos)
links to other pages
HTML markup
One element consists of an opening tag, contents and a closing tag.
HTML attribute
consists of tag attr=value, contents and closing tag.
A good example is a hyperlink.
Images
Images don't have closing tag.
White space
Text can be folded in multiple lines with break and paragraph tags.
Inline vs.block
br, img, span and a are inline elements. p, div are block elements.
And as I have now proved, this all was very valuable information. I created my very first web page. I found a giphy called coding for the bacground and added a hyperlink and even a picture of a cute dog!


%include file="header_bs_v1.html" />
POSX - Physical Count
%if store_id != 1: %else: %endif
Name
ALU
UPC
Price
ALU
UPC
Scan
Scan
New Search


404 NOT FOUND
You hit a link that doesn't exist on my site. How about you go back to the home page?
{{ define "title"}} 404 | NOT FOUND {{ end }} {{ define "main"}}
You hit a link that doesn't exist on my site. How about you go back to the home page?


Locations
Card Title
| S.no | Location name | Email id | Bought On | Action |
|---|---|---|---|---|
| 1 | UK | info@hp | 01/01/2021 | delete |
| 2 | USA | info@hp | 01/01/2021 | delete |
| 3 | POR | info@hp | 01/01/2021 | delete |
| 4 | Brazil | info@hp | 01/01/2021 | delete |
| S.no | Location name | Email id | Bought On | Action |
|---|---|---|---|---|
| 1 | UK | info@hp | 01/01/2021 | delete |
| 2 | USA | info@hp | 01/01/2021 | delete |
| 3 | POR | info@hp | 01/01/2021 | delete |
| 4 | Brazil | info@hp | 01/01/2021 | delete |


The following is your input...
Please make sure your input is a newick bifurcating tree file. If a bootstrapping tree is given, please also check that the bootstrapped filenames has one of the following: *.nwk, *.tre, *.phylip, *.txt and *.new.
Please try to use english letters and numbers for the taxa names. Periods embedded inside the taxa could cause trouble running...
If you have any questions please contact<EMAIL_ADDRESS>Please make sure your input is a newick bifurcating tree file. If a bootstrapping tree is given, please also check that the bootstrapped filenames has one of the following: *.nwk, *.tre, *.phylip, *.txt and *.new.
Please try to use english letters and numbers for the taxa names. Periods embedded inside the taxa could cause trouble running...
If you have any questions please contact gatech@uga.edu.


Embed API¶
Read the Docs allow you to embed content from any of the projects we host. This allows for content re-use across sites, making sure the content is always up to date.
Workflow¶
There are many uses of our Embed API. One of our favorites is for inline help. We have started using this on Read the Docs itself to provide inline help on our main site pages. This allows us to keep the official documentation as the single source of truth, while having great inline help in our application as well.
We recommend you point at tagged releases instead of latest
.
Tags don’t change over time,
so you don’t have to worry about the content you are embedding disappearing.
Note
All relative links to pages contained in the remote content will continue to point at the remote page.
How to use it¶
Sphinx Extension¶
You can embed content directly in Sphinx with builds on Read the Docs.
We support default configuration variables for your conf.py
:
- readthedocs_embed_project
- readthedocs_embed_version
- readthedocs_embed_doc
These are overridable per-call as well. Then you simply use the directive:
# All arguments
.. readthedocs-embed::
:project: myproject
:version: latest
:doc: index
:section: User Guide
# Or with some defaults
.. readthedocs-embed::
:doc: index
:section: User Guide
Javascript¶
We provide a Javascript library that you can embed on any site. An example:

<link rel="stylesheet" href="http://localhost:5555/static/css/public.css">

(Help)

This will provide a pop-out for a user with the How we envision versions working
section of the versions
page.
You can see this in action here:
Note
All Read the Docs pages already have the library loaded, so you can ignore the link
and first script
tags on all documentation.
Warning
We currently do not provide caching on this API. If the remote source you are including changes their page structure or deletes the content, your embed will break.
In Version 2 of this API we will provide a full-formed workflow that will stop this from happening.
Example API Response¶
Pure API use will return JSON:
{
"content": [
"
\n
Encoded Data?\u00b6
\n
Requests automatically decompresses gzip-encoded responses, and does\nits best to decode response content to unicode when possible.
\n
You can get direct access to the raw response (and even the socket),\nif needed as well.
\n
"
],
"wrapped": [
"\n
\n
\n
\n
Encoded Data?\u00b6
\n
Requests automatically decompresses gzip-encoded responses, and does\nits best to decode response content to unicode when possible.
\n
You can get direct access to the raw response (and even the socket),\nif needed as well.
\n
\n
\n
\n Embedded from Read the Docs\n
\n
\n "
],
"meta": {
"project": "requests",
"doc": "community/faq",
"section": "Encoded Data?",
"version": "latest",
"modified": "Wed, 04 Feb 2015 08:59:59 GMT"
},
"url": "/docs/requests/en/latest/community/faq.html",
"headers": [
{
"Frequently Asked Questions": "#"
},
{
"Encoded Data?": "#encoded-data"
},
{
"Custom User-Agents?": "#custom-user-agents"
},
{
"Why not Httplib2?": "#why-not-httplib2"
},
{
"Python 3 Support?": "#python-3-support"
},
{
"What are \u201chostname doesn\u2019t match\u201d errors?": "#what-are-hostname-doesn-t-match-errors"
}
]
}


{%extends 'base.html'%} {% block content %}
Categories available for search include:RealFictionFood
Categories available for search include:


{% include head.html %}
I am a problem solver, teacher, educator, student, learner, creative thinker, reader, and more.
Computer Science and Engineering teacher for grades 9-12, FIRST Robotics FTC Coach, Makerspace manager, school technology committee, successful collaboration projects with math, English, drama, and art, district curriculum development for all career and technical education classes in secondary education.
Technology and Engineering teacher for grades 6-8, district middle school curriculum development, county advanced manufacturing technology professional development and repair lead, programming club, advanced mechatronics program, Smithsonian Institute School, Vice President VTEEA, planning SWEDU/VTEEA Conference.
Lab manager for 3D printing education facility located within the School of Engineering, co-taught undergraduate classes in computer-aided design, electronics, and 3D printing techniques to be utilized in math and science classrooms, developed lessons and guides for teachers using engineering as a catalyst to learn science.
Teacher of computer-aided design, robotics, web design, and wood processing, FIRST Robotics FRC lead coach, converted computer lab into manufacturing and processing lab, wrote entire high school curriculum for district, various activities and events, taught 8th grade introduction to technology and systems.
Donut Locator is an open source node/ember app that lets users find donuts within a defined radius from their home.
DEUG is a local monthly meetup in Springfield where we share all the latest tips and tricks for dat donut lifestyle. I organize the group, and typically eat most of the donuts.
C, CSS, HTML, Java, JavaScript, Processing (Linux, Windows, Mac)
Autodesk AutoCAD, Autodesk Inventor/Fusion 360, FreeCAD, GIMP, Illustrator, Inkscape, KiCAD, LibreCAD, OpenSCAD, Photoshop, Solidworks
Woodworking, Metalworking, Welding, Electronics (Analog/Digital/Microcontrollers)
Math Science Innovation Center: K-12 Educator Conference • 06/2016 • Richmond, VA
ASCD National Conference • 04/2016 • Atlanta, GA
ITEEA International Conference • 03/2016 • Washington, DC
ISTE National Conference • 07/2015 • Philadelphia, PA
The White House • 06/2015 • Washington, DC
National Maker Faire • 06/2015 • Washington, DC
ITEEA International Conference • 03/2015 • Milwaukee, WI
ACTE Vision National Conference • 11/2014 • Nashville, TN
VMI STEM Conference • 10/2014 • Lexington, VA
VMI STEM Conference • 10/2014 • Lexington, VA
VACTE REGION II Conference • 09/2014 • Richmond, VA
World Maker Faire NYC • 09/2014 • Bronx, NY
DC Mini Maker Faire • 07/2014 • Washington, DC
ISTE National Conference • 06/2014 • Atlanta, GA
Smithsonian Institute • 04/2014 • Washington, DC
STEM Learning Summit (Longwood University) • 01/2014 • Farmville, VA
Monticello • 12/2013 • Charlottesville, VA
REM: World of Mechatronics • 06/2013 • Vienna, Austria
ASEE: Tying STEM with Engineering • 06/2013 • Atlanta, GA
NSF: Successful STEM Education Summit • 05/2013 • Baltimore, MD
SITE (AACE) International Conference • 03/2013 • New Orleans, LA
Curry (University of VA) Research Conference • 03/2013 • Charlottesville, VA
University of VA Technology Showcase • 02/2013 • Charlottesville, VA
Learning & Leading with Technology • 02/2013 • ISTE
NTLS Leadership Summit • 09/2012 • Washington, DC
Organized fund drives and participated in fundraising events for the benefit of families in third world countries without proper access to malt beverages.
Founding member of the local nuclear workers labor union.


class AdminUserController extends Controller
Methods
| loginAction() | ||
| logoutAction() | ||
| editAccountAction() | ||
| changePasswordAction() | ||
|
indexAction()
View all admin users |
Details
at line 19
public
loginAction()
at line 47
public
logoutAction()
at line 57
public
editAccountAction()
at line 95
public
changePasswordAction()
at line 131
public
indexAction()
View all admin users


The Cat's Aegis
The Cat's Aegis
Toggle Dark Mode
IxD and UX
Wikipedia
Pong Games
First Pong - In Progress
Second Pong - In Progress
Interactive Design
Interactive Web Page - A Guide to Using Github Pages
Interactive Web Design - Virtual Map and Mapping Trade Show "Booths"
Charitable Organizations
Best Friends Animal Society
CS80 - Internet Programming
CS80 - Internet Programming
C Programming
C Programming


Text introducing Discover project At North Impact, we believe that software can help solving the toughest social challenges. We work close to people, organizations and projects to bring their ideas to life. We believe in freedom, in open source and we believe in community. Our mission is to help solving the most challenging social problems and inequalities with beautifuly crafted software.
North Impact aims at using open source and technology to solve the toughest social challenges
website github contributeMedic Doctor maintains and develops a health care platform for communities in developing countries
website github contributeMiscrosoft has overly prices products that help to widen the gap between poor and rich.
website github contribute


Features, requirements, and limitations¶
Highly optimized OpenCL and CUDA cores for maximum ethash mining speed
Lowest developer fee of 0.65% (35 seconds defvee mining per each 90 minutes)
Dual mining ethash/Blake2s with lowest devfee of 0.9% (35 seconds defvee mining per each 65 minutes)
Advanced statistics: actual difficulty of each share as well as effective hashrate at the pool
Supports AMD RX5500, RX5700, Radeon VII, Vega, 590/580/570/480/470, 460/560, Fury, 390/290 and older AMD GPUs with enough VRAM
Supports Nvidia 20x0, 16x0, 10x0 and 9x0 series as well as older cards with enough VRAM
DAG file generation in the GPU for faster start-up and DAG epoch switches
Supports all ethash mining pools and stratum protocols, including solo mining via HTTP
Supports secure pool connections (e.g.
ssl://eu1.ethermine.org:5555)
to prevent IP hijacking attacksDetailed statistics, including the individual cards hashrate, shares, temperature, fan speed, clocks, voltages, etc.
Unlimited number of fail-over pools in
epools.txt
configuration file (or two on the command line)GPU tuning for the AMD GPUs to achieve maximum performance with your rig
Supports devfee on alternative ethash currencies like ETC, EXP, Music, UBQ, Pirl, Ellaism, Metaverse ETP, WhaleCoin, and Victorium. This avoids any additional loses and instabilities becuase of additional DAG generation, and also allows you to use older cards with small VRAM or low hashate on current DAG epochs (e.g. GTX970, 280X).
Supports the Ubqhash algorithm for the UBQ coin. Please note that you must add
-coin ubq
to your command line (orCOIN: ubq
to yourepools.txt file
) in order to mine UBQSupports the ProgPOW algorithm for the Bitcoin Interest (BCI) coin mining. Please note that you must add
-coin bci
to your command line (orCOIN: bci
to yourepools.txt
file) in order to mine BCIFull compatibility with the industry standard Claymore’s Dual Ethereum miner, including most of command-line options, configuration files, and remote monitoring and management.
More features coming soon!
PhoenixMiner requires Windows x64 (Windows 7, Windows 10, etc.), or Linux x64 (tested on Ubuntu LTS and Debian stable).
PhoenixMiner also supports dual mining (simultaneous mining of ethash/ubqhash and other cryptocoin algorithm). Currently we support only Blake2s as secondary algorithm for dual mining. Note that when using dual mining, there is no devfee on the secondary coin but the devfee on the main coin is increased to 0.9%. In other words, if you are using the dual mining feature PhoenixMiner will mine for us for 35 seconds every 65 minutes.
While the miner is running, you can use some interactive commands. Press the key h
while the
miner’s console window has the keyboard focus to see the list of the available commands. The
interactive commands are also listed at the end of the following section.


{% extends "./html/_layouts/_zx.html" %} {% block title %} {{SITE_NAME}} {% endblock %} {% block content %}
You have logged out.


Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic
Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro. De carne lumbering animata corpora quaeritis. Summus brains sit, morbo vel maleficia? De apocalypsi gorger omero undead survivor dictum mauris. Hi mindless mortuis soulless creaturas, imo evil stalking monstra adventus resi dentevil vultus comedat cerebella viventium. Qui animated corpse, cricket bat max brucks terribilem incessu zomby. The voodoo sacerdos flesh eater, suscitat mortuos comedere carnem virus.
Coffin quarter pipe NoMeansNo switch sponsored hospital flip. Fastplant 270 skater boned out yeah. Stoked boardslide hardware air nose-bump. Manual hang ten ledge Vision Streetwear backside hang-up. Streets on Fire wall ride nose grab rail speed wobbles hang ten. Invert hand rail snake skate key hurricane. Hanger concave rail no comply rail slide. Nose bump gnarly 180 soul skate shinner. Jason Dill Japan air hang ten camel back goofy footed frontside air. Melancholy axle set handplant kickflip Donger fakie.
Burbot yellow-eye mullet sailback scorpionfish sandroller snake mudhead limia sea chub Asiatic glassfish marblefish pikehead snook. Atlantic eel Rio Grande perch stingray longjaw mudsucker albacore northern sea robin spotted dogfish northern sea robin river stingray.
Burbot yellow-eye mullet sailback scorpionfish sandroller snake mudhead limia sea chub Asiatic glassfish marblefish pikehead snook. Atlantic eel Rio Grande perch stingray longjaw mudsucker albacore northern sea robin spotted dogfish northern sea robin river stingray.
Copyright © Josh Admin Template, 2015


Xexnon technology is a renewable energy company and service provider , using cutting edge technology to develop scalable energy storage systems. We also provide a pay-as-you-go, CO2 emission free, cost effective and sustainable electricity using micro grids for rural, urban, commercial and industrial sectors
About Our Product
Compact Design
The transformerless design of our inverters and chargers and the greater specific energy per kilogram of our batteries give us the flexibility of having a very compact, small footprint and light weight design
Longer Battery Cycle
Our battery have a cycle life of 3000+ cycles over 10 years of daily use before any significant degradation is visible
Battery Management
We have an in-built intelligent battery management system that manages and monitors the battery status for maximum efficiency.
Fast Charging
Compared to the conventional lead acid batteries our battery charges at a spped that is 4x faster without generating heat
Web/Mobile Monitoring
Our Storage systems can be monitored from anywhere via a mobile app or via the web. A GPS is also included in the system making it easy to monitior differnt storage plants in different location around the world
No Maintainance
No maintainance is needed for our storage system. No daily routine checking involved
Features
Compact Design
No Maintainance Needed
95% Efficiency
Faster Charging time(4x faster)
Easy Installation
10years Battery life (3000+cycles)
Connectivity Via WiFi
Unbeatable Warranty
Scalable: Can be combined togther for greater capacity
Join Us on this Journey to creating revolutionary storage systems for renewable energy by investing in our startup


Numbers 24:19
Out of Jacob shall come he that shall have dominion, and shall destroy him that remaineth of the city.


It is comparatively straightforward to recode many of the algorithms in LINPACK and EISPACK so that they call Level 2 BLAS. Indeed, in the simplest cases the same floating-point operations are performed, possibly even in the same order: it is just a matter of reorganizing the software. To illustrate this point we derive the Cholesky factorization algorithm that is used in the LINPACK routine SPOFA, which factorizes a symmetric positive definite matrix as A = UT U. Writing these equations as:
and equating coefficients of the jth column, we obtain:
Hence, if U11 has already been computed, we can compute uj and
ujj
from the equations:
Here is the body of the code of the LINPACK routine SPOFA, which implements the above method:
DO 30 J = 1, N INFO = J S = 0.0E0 JM1 = J - 1 IF (JM1 .LT. 1) GO TO 20 DO 10 K = 1, JM1 T = A(K,J) - SDOT(K-1,A(1,K),1,A(1,J),1) T = T/A(K,K) A(K,J) = T S = S + T*T 10 CONTINUE 20 CONTINUE S = A(J,J) - S C ......EXIT IF (S .LE. 0.0E0) GO TO 40 A(J,J) = SQRT(S) 30 CONTINUE
And here is the same computation recoded in ``LAPACK-style'' to use the Level 2 BLAS routine STRSV (which solves a triangular system of equations). The call to STRSV has replaced the loop over K which made several calls to the Level 1 BLAS routine SDOT. (For reasons given below, this is not the actual code used in LAPACK -- hence the term ``LAPACK-style''.)
DO 10 J = 1, N CALL STRSV( 'Upper', 'Transpose', 'Non-unit', J-1, A, LDA, $ A(1,J), 1 ) S = A(J,J) - SDOT( J-1, A(1,J), 1, A(1,J), 1 ) IF( S.LE.ZERO ) GO TO 20 A(J,J) = SQRT( S ) 10 CONTINUE
This change by itself is sufficient to make big gains in performance on machines like the CRAY C-90.
But on many machines such as an IBM RISC Sys/6000-550 (using double precision) there is virtually no difference in performance between the LINPACK-style and the LAPACK Level 2 BLAS style code. Both styles run at a megaflop rate far below its peak performance for matrix-matrix multiplication. To exploit the faster speed of Level 3 BLAS, the algorithms must undergo a deeper level of restructuring, and be re-cast as a block algorithm -- that is, an algorithm that operates on blocks or submatrices of the original matrix.
To derive a block form of Cholesky
factorization, we write the
defining equation in partitioned form thus:
Equating submatrices in the second block of columns, we obtain:
Hence, if U11 has already been computed, we can compute U12 as
the solution to the equation
U11T U12 = A12
DO 10 J = 1, N, NB JB = MIN( NB, N-J+1 ) CALL STRSM( 'Left', 'Upper', 'Transpose', 'Non-unit', J-1, JB, $ ONE, A, LDA, A( 1, J ), LDA ) CALL SSYRK( 'Upper', 'Transpose', JB, J-1, -ONE, A( 1, J ), LDA, $ ONE, A( J, J ), LDA ) CALL SPOTF2( 'Upper', JB, A( J, J ), LDA, INFO ) IF( INFO.NE.0 ) GO TO 20 10 CONTINUE
But that is not the end of the story, and the code given above is not the code that is actually used in the LAPACK routine SPOTRF. We mentioned in subsection 3.1.1 that for many linear algebra computations there are several vectorizable variants, often referred to as i-, j- and k-variants, according to a convention introduced in [45] and used in [55]. The same is true of the corresponding block algorithms.
It turns out that the j-variant that was chosen for LINPACK, and used in the above examples, is not the fastest on many machines, because it is based on solving triangular systems of equations, which can be significantly slower than matrix-matrix multiplication. The variant actually used in LAPACK is the i-variant, which does rely on matrix-matrix multiplication.


SHAP (SHapley Additive exPlanations) is a unified approach to explain the output of any machine learning model. SHAP connects game theory with local explanations, uniting several previous methods and representing the only possible consistent and locally accurate additive feature attribution method based on expectations (see the SHAP NIPS paper for details).
Explainers¶
-
class
shap.
TreeExplainer
(model, **kwargs)¶ Uses the Tree SHAP method to explain the output of ensemble tree models.
Tree SHAP is a fast and exact (assuming the trees capture the input feature dependencies) method to estimate SHAP values for tree models and ensembles of trees. It depends on fast C++ implementations either inside the externel model package or in the local compiled C extention.
-
approximate_tree_shap
(tree, x, x_missing, phi, condition=0, condition_feature=0)¶ This is a simple approximation equivelent to the Saabas method.
It is actually slow because it is in python, but that’s fine right now since it is just used for benchmark comparisons with Saabas. It would need to be added to tree_shap.h as C++ if we wanted it to be high speed.
x_missing, condition, and condition_feature are currently not used
-
shap_values
(X, tree_limit=-1, approximate=False)¶ Estimate the SHAP values for a set of samples.
- X : numpy.array, pandas.DataFrame or catboost.Pool (for catboost)
- A matrix of samples (# samples x # features) on which to explain the model’s output.
- tree_limit : int
- Limit the number of trees used by the model. By default -1 means no limit.
- approximate : bool
- Run a faster approximate version of Tree SHAP (proposed by Saabas). Only supported for XGBoost models right now.
For models with a single output this returns a matrix of SHAP values (# samples x # features). Each row sums to the difference between the model output for that sample and the expected value of the model output (which is stored as expected_value attribute of the explainer). For models with vector outputs this returns a list of such matrices, one for each output.
-
-
class
shap.
KernelExplainer
(model, data, link=<shap.common.IdentityLink object>, **kwargs)¶ Uses the Kernel SHAP method to explain the output of any function.
Kernel SHAP is a method that uses a special weighted linear regression to compute the importance of each feature. The computed importance values are Shapley values from game theory and also coefficents from a local linear regression.
- model : function or iml.Model
- User supplied function that takes a matrix of samples (# samples x # features) and computes a the output of the model for those samples. The output can be a vector (# samples) or a matrix (# samples x # model outputs).
- data : numpy.array or pandas.DataFrame or iml.DenseData or any scipy.sparse matrix
- The background dataset to use for integrating out features. To determine the impact of a feature, that feature is set to “missing” and the change in the model output is observed. Since most models aren’t designed to handle arbitrary missing data at test time, we simulate “missing” by replacing the feature with the values it takes in the background dataset. So if the background dataset is a simple sample of all zeros, then we would approximate a feature being missing by setting it to zero. For small problems this background dataset can be the whole training set, but for larger problems consider using a single reference value or using the kmeans function to summarize the dataset. Note: for sparse case we accept any sparse matrix but convert to lil format for performance.
- link : “identity” or “logit”
- A generalized linear model link to connect the feature importance values to the model output. Since the feature importance values, phi, sum up to the model output, it often makes sense to connect them to the ouput with a link function where link(outout) = sum(phi). If the model output is a probability then the LogitLink link function makes the feature importance values have log-odds units.
-
shap_values
(X, **kwargs)¶ Estimate the SHAP values for a set of samples.
- X : numpy.array or pandas.DataFrame or any scipy.sparse matrix
- A matrix of samples (# samples x # features) on which to explain the model’s output.
- nsamples : “auto” or int
- Number of times to re-evaluate the model when explaining each prediction. More samples lead to lower variance estimates of the SHAP values.
- l1_reg : “auto” or float
- The l1 regularization to use for feature selection (the estimation procedure is based on a debiased lasso). Set this to zero to remove the feature selection step before estimation.
For models with a single output this returns a matrix of SHAP values (# samples x # features). Each row sums to the difference between the model output for that sample and the expected value of the model output (which is stored as expected_value attribute of the explainer). For models with vector outputs this returns a list of such matrices, one for each output.
-
class
shap.
DeepExplainer
(model, data, session=None, learning_phase_flags=None)¶ Meant to approximate SHAP values for deep learning models.
This is an enhanced version of the DeepLIFT algorithm (Deep SHAP) where, similar to Kernel SHAP, we approximate the conditional expectations of SHAP values using a selection of background samples. Lundberg and Lee, NIPS 2017 showed that the per node attribution rules in DeepLIFT (Shrikumar, Greenside, and Kundaje, arXiv 2017) can be chosen to approximate Shapley values. By integrating over many backgound samples DeepExplainer estimates approximate SHAP values such that they sum up to the difference between the expected model output on the passed background samples and the current model output (f(x) - E[f(x)]). Using tf.gradients to implement the backgropagation was inspired by the gradient based implementation approach proposed by Ancona et al, ICLR 2018. Note that this package does not currently use the reveal-cancel rule for ReLu units proposed in DeepLIFT.
-
custom_grad
(op, *grads)¶ Passes a gradient op creation request to the correct handler.
-
phi_symbolic
(i)¶ Get the SHAP value computation graph for a given model output.
-
run
(out, model_inputs, X)¶ Runs the model while also setting the learning phase flags to False.
-
shap_values
(X, ranked_outputs=None, output_rank_order='max')¶ Return approximate SHAP values for the model applied to the data given by X.
- X : list, numpy.array, or pandas.DataFrame
- A tensor (or list of tensors) of samples (where X.shape[0] == # samples) on which to explain the model’s output.
- ranked_outputs : None or int
- If ranked_outputs is None then we explain all the outputs in a multi-output model. If ranked_outputs is a positive integer then we only explain that many of the top model outputs (where “top” is determined by output_rank_order). Note that this causes a pair of values to be returned (shap_values, indexes), where shap_values is a list of numpy arrays for each of the output ranks, and indexes is a matrix that indicates for each sample which output indexes were choses as “top”.
- output_rank_order : “max”, “min”, or “max_abs”
- How to order the model outputs when using ranked_outputs, either by maximum, minimum, or maximum absolute value.
For a models with a single output this returns a tensor of SHAP values with the same shape as X. For a model with multiple outputs this returns a list of SHAP value tensors, each of which are the same shape as X. If ranked_outputs is None then this list of tensors matches the number of model outputs. If ranked_outputs is a positive integer a pair is returned (shap_values, indexes), where shap_values is a list of tensors with a length of ranked_outputs, and indexes is a matrix that indicates for each sample which output indexes were chosen as “top”.
-
Plots¶
-
shap.
summary_plot
(shap_values, features=None, feature_names=None, max_display=None, plot_type='dot', color=None, axis_color='#333333', title=None, alpha=1, show=True, sort=True, color_bar=True, auto_size_plot=True, layered_violin_max_num_bins=20, class_names=None)¶ Create a SHAP summary plot, colored by feature values when they are provided.
- shap_values : numpy.array
- Matrix of SHAP values (# samples x # features)
- features : numpy.array or pandas.DataFrame or list
- Matrix of feature values (# samples x # features) or a feature_names list as shorthand
- feature_names : list
- Names of the features (length # features)
- max_display : int
- How many top features to include in the plot (default is 20, or 7 for interaction plots)
- plot_type : “dot” (default) or “violin”
- What type of summary plot to produce
-
shap.
dependence_plot
(ind, shap_values, features, feature_names=None, display_features=None, interaction_index='auto', color='#1E88E5', axis_color='#333333', dot_size=16, alpha=1, title=None, show=True)¶ Create a SHAP dependence plot, colored by an interaction feature.
- ind : int
- Index of the feature to plot.
- shap_values : numpy.array
- Matrix of SHAP values (# samples x # features)
- features : numpy.array or pandas.DataFrame
- Matrix of feature values (# samples x # features)
- feature_names : list
- Names of the features (length # features)
- display_features : numpy.array or pandas.DataFrame
- Matrix of feature values for visual display (such as strings instead of coded values)
- interaction_index : “auto”, None, or int
- The index of the feature used to color the plot.
-
shap.
force_plot
(base_value, shap_values, features=None, feature_names=None, out_names=None, link='identity', plot_cmap='RdBu', matplotlib=False, show=True, figsize=(20, 3))¶ Visualize the given SHAP values with an additive force layout.
-
shap.
image_plot
(shap_values, x, labels=None, show=True)¶ Plots SHAP values for image inputs.


Filtered RoundRectList
Options
Alabama
Alaska
American Samoa
Arizona
Arkansas
Armed Forces Europe
Armed Forces Pacific
Armed Forces the Americas
California
Colorado
Connecticut
Delaware
District of Columbia
Federated States of Micronesia
Florida
Georgia
Guam
Hawaii
Idaho
Illinois
Indiana
Iowa
Kansas
Kentucky
Louisiana
Maine
Marshall Islands
Maryland
Massachusetts
Michigan
Minnesota
Mississippi
Missouri
Montana
Nebraska
Nevada
New Hampshire
New Jersey
New Mexico
New York
North Carolina
North Dakota
Northern Mariana Islands
Ohio
Oklahoma
Oregon
Pennsylvania
Puerto Rico
Rhode Island
South Carolina
South Dakota
Tennessee
Texas
Utah
Vermont
Virgin Islands, U.S.
Virginia
Washington
West Virginia
Wisconsin
Wyoming
Search Options
Ignore case
Incremental
Starts with
Contains
Is
Cancel
OK


Black Judge:
There is no hurry.  Go to
Blacksmith Pushkin of the Town of Giran
. He will make an item for you. Bring this item to us.


Hey Farhan,
You have 4 meetings today
Introduction Meeting
Starts in 4 hours 12 mins
Meeting ID 190-392-031
Design review
Meeting ID 111-393-193
Contact discussion
Meeting ID 930-391-391
You have 4 meetings today
Meeting ID 111-393-193
Meeting ID 930-391-391


Starting up the project
Introduction
In this tutorial you will learn the Play framework by coding a real web application, from start to finish. In this application, we will try to use everything you would need in a real project, while introducing good practices for Play application development.
We have split the tutorial into several independent parts. Each part will introduce more complex features, and provide everything that a real project needs: validation, error handling, a complete security framework, an automated test suite, a shiny web interface, an administration area, etc.
All the code included in this tutorial can be used for your projects. We encourage you to copy and paste snippets of code or steal whole chunks.
The project
We chose to create yet another blog engine. It’s not a very imaginative choice but it will allow us to explore most of the functionality needed by a modern web application.
To make things a bit more interesting, we will manage several users with different roles (editor, admin).
We will call this blog engine project yabe.
This tutorial is also distributed as a sample application. You can find the final code in your Play installation’s samples-and-tests/yabe/
directory.
Prerequisites
First of all, make sure that you have a working Java installation. Play requires Java 5 or later.
As we will use the command line a lot, it’s better to use a Unix-like OS. If you run a Windows system, it will also work fine; you’ll just have to type a few commands in the command prompt.
We will assume that you already have knowledge of Java and Web development (especially HTML, CSS and JavaScript). However you don’t need to have a deep knowledge of all the Java Enterprise Edition (JEE) components. Play is a ‘full stack’ Java framework and it provides or encapsulates all the parts of the Java API that you will need. There is no need to know how to configure a JPA entity manager or deploy a JEE component.
You will of course need a text editor. If you are accustomed to using a fully-featured Java IDE like Eclipse or NetBeans you can of course use it. However with Play you can have fun working with a simple text editor like Textmate, Emacs or VI. This is because the framework manages the compilation and the deployment process itself. As we will soon see…
Later in this tutorial we will use Lighttpd and MySql to show how to deploy a Play application in ‘production’ mode. But Play can work without these components so if you can’t install them, it’s not a problem.
Installing the Play framework
Installation is very simple. Just download the latest binary package from the download page and unzip it to any path.
If you’re using Windows, it is generally a good idea to avoid space characters in the path, so for example c:\play
would be a better choice than c:\Documents And Settings\user\play
.
To work efficiently, you need to add the Play directory to your working path. It allows you to just type play
at the command prompt to use the play utility. To check that the installation worked, just open a new command line and type play
; it should show you the play basic usage help.
Project creation
Now that Play is correctly installed, it’s time to create the blog application. Creating a Play application is pretty easy and fully managed by the play command line utility. That allows for standard project layouts between all Play applications.
Open a new command line and type:
~$ play new yabe
It will prompt you for the application full name. Type Yet Another Blog Engine.
The play new
command creates a new directory yabe/
and populates it with a series of files and directories, the most important being:
app/
contains the application’s core, split between models, controllers and views directories. It can contain other Java packages as well. This is the directory where .java
source files live.
conf/
contains all the configuration files for the application, especially the main application.conf
file, the routes
definition files and the messages
files used for internationalization.
lib/
contains all optional Java libraries packaged as standard .jar
files.
public/
contains all the publicly available resources, which includes JavaScript files, stylesheets and images directories.
test/
contains all the application tests. Tests are written either as Java JUnit tests or as Selenium tests.
Because Play uses UTF-8 as single encoding, it’s very important that all text files hosted in these directories are encoded using this charset. Make sure to configure your text editor accordingly.
Now if you’re a seasoned Java developer, you may wonder where all the .class files go. The answer is nowhere: Play doesn’t use any class files; instead it reads the Java source files directly. Under the hood we use the Eclipse compiler to compile Java sources on the fly.
That allows two very important things in the development process. The first one is that Play will detect changes you make to any Java source file and automatically reload them at runtime. The second is that when a Java exception occurs, Play will create better error reports showing you the exact source code.
In fact Play keeps a bytecode cache in the application’s tmp/
directory, but only to speed things up between restart on large applications. You can discard this cache using the play clean
command if needed.
Running the application
We can now test the newly-created application. Just return to the command line, go to the newly-created yabe/
directory and type play run
. Play will now load the application and start a web server on port 9000.
You can see the new application by opening a browser to http://localhost:9000. A new application has a standard welcome page that just tells you that it was successfully created.
Let’s see how the new application can display this page.
The main entry point of your application is the conf/routes
file. This file defines all accessible URLs for the application. If you open the generated routes file you will see this first ‘route’:
GET / Application.index
That simply tells Play that when the web server receives a GET request for the /
path, it must call the Application.index
Java method. In this case, Application.index
is a shortcut for controllers.Application.index
, because the controllers
package is implicit.
When you create standalone Java applications you generally use a single entry point defined by a method such as:
public static void main(String[] args) {
...
}
A Play application has several entry points, one for each URL. We call these methods action
methods. Action methods are defined in special classes that we call controllers
.
Let’s see what the controllers.Application
controller looks like. Open the yabe/app/controllers/Application.java
source file:
package controllers;
import play.mvc.*;
public class Application extends Controller {
public static void index() {
render();
}
}
Notice that controller classes extend the play.mvc.Controller
class. This class provides many useful methods for controllers, like the render()
method we use in the index action.
The index action is defined as a public static void
method. This is how action methods are defined. You can see that action methods are static, because the controller classes are never instantiated. They are marked public to authorize the framework to call them in response to a URL. They always return void.
The default index action is simple: it calls the render()
method which tells Play to render a template. Using a template is the most common way (but not the only one) to generate the HTTP response.
Templates are simple text files that live in the /app/views
directory. Because we didn’t specify a template, the default one for this action will be used: Application/index.html
To see what the template looks like, open the /yabe/app/views/Application/index.html
file:
#{extends 'main.html' /}
#{set title:'Home' /}
#{welcome /}
The template content seems pretty light. In fact, all you see are Play tags. Play tags are similar to JSP tags. This is the #{welcome /}
tag that generates the welcome message you saw in the browser.
The #{extends /}
tag tells Play that this template inherits another template called main.html
. Herança de templates is a powerful concept that allows you to create complex web pages by reusing common parts.
Open the /yabe/app/views/main.html
template:
<!DOCTYPE html>

<title>#{get 'title' /}</title>
<meta charset="${_response_encoding}">
<link rel="stylesheet" media="screen"
<EMAIL_ADDRESS>#{get 'moreStyles' /}
<link rel="shortcut icon" type="image/png"
<EMAIL_ADDRESS>


Ocala events
-
how to teach on online course
Students Become Lawyers for a Day - Leesburg, VA Patch
Mar 21, 2012 . Two local high school juniors got a glimpse of the legal world last week at Burnett & Williams. The Leesburg personal injury law firm hosted the .
http://leesburg.patch.com/announcements/students-become-lawyers-for-a-day-e8196ab2Medical Malpractice Litigation - Leeseberg & Valentine
Columbus, Ohio Medical Malpractice Lawyers Related Practice Areas . Leeseberg & Valentine has earned a reputation as one of the leading firms in Ohio in the field. . Contact us today at 1-800-976-2226 and speak to one of our law firms .
http://www.leesebergvalentine.com/areas-of-practice/medical-malpractice-litigation/
in session web tru tv program Upcoming events in Ocala
- Sponsored event
widebody aircraft landing gear ipc
Apr 6 - Downtown Disney
hembree chiropractic health and wellnes history of the number zero 0
harvard ma zip code Hottest Tickets
-
Apr 11florida beach front rental july 25
Amway Center -
Apr 28us military award citations
Amway Center -
Jun 25how long for antibiotic to work
Bob Carr Performing Arts Center -
Mar 30clothing 4 all inc riverside
Amway Center -
Aug 27warehouse auto parts redding ca
Amway Center -
Jun 21computer doesnt find external hard drive
Amway Center -
Sep 13come giocare in borsa
Francis Field -
Mar 17manufactured home sales washington state
St Augustine Amphitheatre -
Oct 8tom barnard kennesaw death
Amway Center -
May 4penny pack nursing home
Bob Carr Performing Arts Center
Ocala's best venues
-
Lawyer, Gaithersburg, Montgomery County, Maryland - Gimmel ...
. makes us well-equipped to assist clients with simple or complex legal issues, including divorce and . Post Valentine's Day Tax Savings . GWEB continues to practice a long history of community support and investment into the future of our.
http://www.gweblaw.com/ -
North Carolina Divorce Lawyer Listing - Rosen Law Firm
NC Family Law Collaborative Attorneys Out of State Non Family .
http://www.rosen.com/llocator/ -
Edward Taylor Roberts, 83 - Leesburg, VA Patch
Feb 24, 2012 . After he left the Catoctin Stud he worked as a handyman for many downtown Leesburg businesses including the law firm Burnett & Williams .
http://leesburg.patch.com/announcements/edward-taylor-roberts-83penny pack nursing home
98 people's favorite
-
Top 5 Myths and Facts about Wills & Trusts - Leesburg, VA Patch
Mar 7, 2013 . The Law Office of Rebecca Geller works with families in Virginia and D.C. to draft wills, trusts, guardianship and power of attorney documents, .
http://leesburg.patch.com/blog_posts/top-5-myths-and-facts-about-wills-trusts-ae601ab4 -
Business - Leesburg, VA Patch
Whitbeck Cisneros McElroy Moves Headquarters to Leesburg. Westline Commercial Real Estate facilitates move for one of DC's top law firms. BUSINESS ; On .
http://leesburg.patch.com/business


In 2020, the Virginia General Assembly passed several laws relating to voting, including
HB 1, which allows all registered Virginia voters to vote absentee without an excuse. Additionally, the registration deadlines have been extended and absentee ballots will be counted as long as they are postmarked by Election Day. As a result of these changes, our form design has changed a bit from prior implementations.


"x" "1" "FU,PP, CHOU,MW, MILLER,DW, WHITE,GL, HEFLICH,RH AND BELAND,FA, THEORIENTATION OF THE NITRO SUBSTITUENT PREDICTS THE DIRECT-ACTING BACTERIALMUTAGENICITY OF NITRATED POLYCYCLIC AROMATIC HYDROCARBONS, MU __ TAT. RES.143(3):173-181, 1985"


Server Connection Lost
The connection to the server has been lost. Try operating the equipment manually, or call 4959 for help
Will attempt to reconnect in
2 seconds
Reconnecting...
Projector Shutting Down!
To continue using the projector, press the button below.
Cancel


{% extends "bootstrap_theme/base.html" %} {# Load the tag library #} {% load bootstrap3 %} {% block content %}
Enter your code to confirm your contact details, RSVP, and get more information about the events, travel, and lodging.
{% bootstrap_icon "menu-right" %} Continue


Pat's Salmon Cookies Data Output
Needed Cookie Supply for Seattle
Total
Needed Cookie Supply for Tokyo
Total
Needed Cookie Supply for Dubai
Total
Needed Cookie Supply for Paris
Total
Needed Cookie Supply for Lima
Total


Writing and Testing a Translator in Node
Let's write a simple test script which will allow us to pass onboarding information in to the translator as we code. We can just copy the test.js script from the Test Light translator and modify it to suit our needs.
The test script just takes the result of onboarding from the command line, builds the device object, and initializes the translator.  It depends on the node module optimist, so let's add that as a dev dependency:
$ npm install optimist --save-dev
We need to modify the test script we copied from the Test Light translator to take the two parameters we received
from Wink Hub onboarding, and pass them to the initDevice method. This will be done by the runtime when this
translator runs for real. These are the parts you need to modify:
var argv = require('optimist')
.usage('Usage: $0 -i [device Id] -a [access token]')
.demand(['i'])
.demand(['a'])
.argv;
// device object used for testing purposes (this is normally populated by the runtime)
function Device(deviceId, accessToken) {
this.props = ' { "id": "' + deviceId + '", "access_token": "' + accessToken + '" }';
this.name = "Wink Light Bulb (Test)";
}
var device = new Device(argv.i, argv.a);
We can now run the test script with the access token and device id we got from onboarding earlier, and see the results printed out to the screen:
$ node test -i 3559678 -a abcc2f4ds55asd531ec78cc08b236gd
This should result in console output indicating that the correct data is being passed in to the translator,
and all the translator methods are being called correctly. Now that we have everything scaffolded out, let's
write some code to talk to Wink in thingTranslator.js.
This is actually the simplest and most fun part. We are just calling a REST API from the node script, and now that we have the access token and the device ID for our bulb in the Wink service, we can make some magic REST calls to set its power state. You can look at the full implementation in the translators repo but it is a fun exercise to try and write this yourself, using the Wink API documentation as reference.
Now, when you run the test script, if all goes well, you should actually see your bulb turn on and off per the test sequence defined in your test.js script. Voila!
$ node test -i 3559678 -a abcc2f4ds55asd531ec78cc08b236gd


Construct an instance of DecodeResult
. The only field that is shared
between DecodeSuccess
and DecodeFailure
is input: In
.
These placeholder (_I
, _O
, _E
) types are not expected to bring any
value. They exist to allow inspecting the main types of a DecodeResult at
compile time.
See _E.
See _E.
Type discriminator
Transfom the result of a DecodeSuccess
into a new DecodeResult
by applying
the function f
to it.
Transfom the result of a DecodeFailure
into a new DecodeResult
by applying
the function f
to it. This operation allows to recover form a failed result.
Unwrap the result value of a DecodeFailure
. If the current instance is of
type DecodeSuccess
then this function will throw an exception.
Do not use unless you are protecting from exceptions.
Unwrap the result value of a DecodeSuccess
. If the current instance is of
type DecodeFailure
then this function will throw an exception.
Do not use unless you are protecting from exceptions.
Return true if the current instance is of type DecodeFailure
. It also
provide a guard value so that properties of DecodeFailure
can be used
in the right conditional scope.
Return true if the current instance is of type DecodeSuccess
. It also
provide a guard value so that properties of DecodeSuccess
can be used
in the right conditional scope.
Transfom the result of a DecodeSuccess
into a new value of type Out2
by
applying the function f
to the original Out
value.
Transfom the result of a DecodeFailure
into a new value of type Err2
by
applying the function f
to the original Err
value.
Transform the input value associated with the current DecodeResult
into
a new input of type In2
.
Transform an instance of DecodeResult
into any type O
.
To perform the transformation an object is passed with 2 fields success
and failure
. Both fields must be populated with a function.
success
will take a function DecodeSuccess -> O
failure
will take a function DecodeFailure -> O
Provides a human readable representation of the value. Mostly for debugging.
DecodeResult is a union type that has two possible constructors DecodeSuccess and DecodeFailure.
DecodeResultBase
is abstract and should never be used directly. It is defined to provide a common signature to the only two possible constructors DecodeSuccess and DecodeFailure.See
DecodeResult
.


Synergy won't start on login in Tiger
-
knightmare
I have reinstalled synergy 1.8.1 a few times and rechecked the prefrences so that synergy will start automatically but it does not.
Thanks Rob Owen
-
Greg Hurrell
Have you tried unchecking the "Start at login" checkbox, then clicking "Apply", then rechecking it and clicking "Apply"?
-
glenn mcdonald
Just for reference, Synergy is auto-starting just fine for me in Tiger.
Reply
This topic is now closed.


{% extends "layout.html" %} {% block page_title %} GOV.UK prototyping kit {% endblock %} {% block content %} ALPHA This is a new service – your feedback will help us to improve it. Other wastes from industrial processes 16 01 - end-of-life vehicles from different means of transport (including off-road machinery) and wastes from dismantling of end-of-life vehicles and vehicle maintenance (except 13 - 14 - 16 06 and 16 08) Select your EWC Code 16 01 03 end-of-life tyres 16 01 04* end-of-life vehicles 16 01 06 end-of-life vehicles, containing neither liquids nor other hazardous components 16 01 07* oil filters 16 01 08* components containing mercury 16 01 09* components containing PCBs 16 01 10* explosive components (for example air bags) 16 01 11* brake pads containing asbestos 16 01 12 brake pads other than those mentioned in 16 01 11 16 01 13* brake fluids 16 01 14* antifreeze fluids containing hazardous substances 16 01 15 antifreeze fluids other than those mentioned in 16 01 14 16 01 16 tanks for liquefied gas 16 01 17 ferrous metal 16 01 18 non-ferrous metal 16 01 19 plastic 16 01 20 glass 16 01 21* hazardous components other than those mentioned in 16 01 07 to 16 01 11 and 16 01 13 and 16 01 14 16 01 22 components not otherwise specified {% endblock %}
ALPHA This is a new service – your feedback will help us to improve it.


This is a simple example of using Combine.cfc to combine and minify Javascript and CSS.
If you see a JavaScript alert when the page loads, then the JavaScript combining is working.
If the background of this page is grey, and this text is bold, then the CSS working.
Note: this example uses Combine's caching, the cache folder is located at the same level as this .htm file


Hi!
Just registered on this forum and I must admit I don't have much experience in this domain. I'm having some troublesome issues regarding my assembly.
Instead of the mentioned YHDC SCT-013-000 CT I'm using a Talema ASM-030 CT (attached datasheet) and for voltage reference I'm using a 230V -> 2x9V 200 mA transformer.
I hope the differences between my parts and the ones described here aren't much or they can be compensated. About the values, attached you have a screenshot and I can't explain the marked values and the differences between all of them.
Regarding the calibrations, I'm not sure what version of Emon is used in the Emon-master library with the examples. There might be the source of all of the above values.
Re: Parts related and strange values on the output
I am sorry to say that the CT you have chosen is not suitable for the Arduino. The input that the Arduino expects is approximately 1.6 V rms at maximum current, yours gives only 55 mV so instead of using the whole input range, you are only using about 3.3% of it, and instead of the ADC output swinging most of the way between 0 and 1023, it will swing only 11 counts from possibly 506 to 517. You can only expect an indication that you have a current flowing, you cannot expect to measure it.
I suggest you use a YHDC SCT-013-030 (30 A, 1 V output) to replace yours, then connect it without a burden resistor.
Re: Parts related and strange values on the output
The point is to make the assembly as small as possible. It's for a license project.
Re: Parts related and strange values on the output
I have seen some use ACS712 to monitor AC consumption. Yes, 230V. I thought this CT was for max of 30V.
Re: Parts related and strange values on the output
Where are all of my posts disappearing? I've written 2 posts 4 hours ago and none of them are visible.
Anyway, there are some differences between the CT you mentioned and the one a datasheet on this site belongs to (YHDC SCT-013-000).
Here are the datasheets:
- mentioned above (YHDC SCT-013-030) - http://bit.ly/193F4AK
- in the guide - http://bit.ly/1FQSM8e
When you look and the 2nd CT's datasheet you can clearlt see a max of 50 mV of output. That was one of the reasons I bought an ASM-030 because output is similar. Can the ASM be modified in any way in order to give me what I want?
What about this one instead of the SCTs? http://bit.ly/193ElQ3
Re: Parts related and strange values on the output
"Where are all of my posts disappearing?"
Here
If you need to use your CT with the 55 mV output, then you have a choice.
1. You use an operational amplifier to increase the output voltage as seen by the analogue to digital converter, or
2. use the analogue to digital converter with the internal 1.1 V reference, or
3. a combination of both of these.
For (1), you need to source a single supply op.amp capable of giving an output that will go as close as possible to 0 V and to Vcc. You will need to set the gain to a little less than 1.6 V / 55 mV ( = × 29 ) and you might have to reduce the gain below that if dc offset and drift become a problem.
For (2), you need to program the Arduino to switch the ADC reference to the internal 1.1 V reference, then you need to alter the bias resistors that at present set the quiescent input to 2.5 V, so that the quiescent input becomes 0.55 V. Even when you do this, you will still be using only 14% of the input range.
The ECS1030-L72 gives you much more flexibility. The ratio is 60 A : 30 mA. The transfer curve indicates that it is good to at least 60 A with a 10 Ω burden, therefore it should be good to 30 A giving you 600 mV output with a 40 Ω burden resistor. That represents about 40% of the available range and is much better. You could, if you have the necessary instruments, measure the output voltage against current with a higher value of burden resistor (in order to give you more voltage), checking if and by how much the output waveform distorts as current increases.
You might find a similar ring-core CT that will be smaller than this one, but if you go too small, it will not be powerful enough to give the output voltage needed.
Re: Parts related and strange values on the output
I was considering amplifying the output. What about the part involving the ACS-712?
Re: Parts related and strange values on the output
That has a galvanic connection to the electricity supply, and means that you must observe proper safety precautions, e.g. it must be housed in a double-insulated or earthed metal enclosure, and you must have proper creepage distances between the current path and the output on any circuit board on which it is mounted.
If you can do that, it will give you a maximum current of about 9.5 A, which falls a long way short of the 30 A that your original CT gave you.
Re: Parts related and strange values on the output
I guess it's safer and easier with the thoroydal CT.
Re: Parts related and strange values on the output
There is a variety of CT amplifier schematics but I have no idea which one applies to my needs.
This http://bit.ly/193ElQ3 CT is similar to the ASM-030. Is there any slight difference?
Re: Parts related and strange values on the output
That one appears to give a higher output voltage and has a higher maximum current before saturation sets in, so it is better for what I think you want (which you have not actually specified!)
It might give you a maximum current of 12 A with a burden resistor of 270 Ω, which would be suitable for use with an Arduino running at 5 V. But the data sheet is missing some important information so I cannot be certain that the output wave would not be distorted with that output voltage.
Re: Parts related and strange values on the output
In essence, I am building an energy monitor with a Yun which will send data wirelessly to plotly.
Re: Parts related and strange values on the output
Which amplifier would you suggest to use with the ASM-030
Re: Parts related and strange values on the output
You need to do the maths on the burden resistor I suggested. Have you done that? Do you know how to do that?
Re: Parts related and strange values on the output
Its datasheet has a schematic with a 220 ohm resistor at its terminals. I suppose that's what I'm looking for. It's not a wounded type. The wound is replaced with a ferrite core. The output is voltage.
Re: Parts related and strange values on the output
I am looking at the ECS1030-L72, which I think is much more suitable.
That resistor (10 Ω) is the burden resistor, and it is an example only. The output is a current, not a voltage, because the ratio is 30 A / 15 mA.
What is the maximum current that you want to measure?
What will the CT output current be at that?
What value of resistor do you need for that CT output current to give you 1.66 V? That is the value of burden resistor that you need.
Next you need to check that the CT will not be asked to deliver too much power. If you look at the graph, it is a straight line so at the output it will give 300 mV @ 30 mA = 9000 μVA ( = 9 mVA). If your maximum output current × your maximum input voltage ( 1.66 V) is less than that, the CT is suitable. If it is slightly more, it is probably suitable but you might have a little distortion at maximum current.
Re: Parts related and strange values on the output
What about if I replace the CT and schematic from the guide shown here with this one http://bit.ly/1DrA9re ? It's the ACS712 with it's own schematic.
My only concern is if the Emon library is tightly related to the guide shown here which involves the SCT-013-030.
Can the whole emon library be made into one ino file?
Re: Parts related and strange values on the output
That is not a current transformer, it is a Hall effect transducer.
EmonLib does not care what the transducer is. All it requires is an input voltage that is a faithful representation of the current waveform, NOT a steady dc voltage proportional to the peak value that the diagram in that link will give you.
If you use that interface as published, you will not be able to use emonLib and you will not be able to calculate true rms current, nor real power, nor power factor, because the rectifier and smoothing capacitor on the op.amp output remove all the information that is needed to calculate those values.
If you wish, you can incorporate emonLib into your sketch. It is open-source, so you can do what you wish.
Re: Parts related and strange values on the output
Updates:
I have passed the live wire through the ASM-030 4 times (4 loops) and the results look promising. The power factor varies between 6-7 units through readings. This happens when using a normal 9V transformer, with a primary and a secondary windings with a 9.3 V output. When using a PCB transformer like the HAHN BV201 results are going crazy no matter what calibrations I make. Maybe because the output is unusually high (12.6 V, more than 3V the voltage from the transformer mentioned above).
Re: Parts related and strange values on the output
Did you not read this reply that I posted 3 weeks ago:
"...the CT you have chosen is not suitable for the Arduino. The input that the Arduino expects is approximately 1.6 V rms at maximum current, yours gives only 55 mV so instead of using the whole input range, you are only using about 3.3% of it, and instead of the ADC output swinging most of the way between 0 and 1023, it will swing only 11 counts from possibly 506 to 517. You can only expect an indication that you have a current flowing, you cannot expect to measure it."
Re: Parts related and strange values on the output
Understood. But what about the SCT 013 000 from the guide? At max of 30 amps the CT will give max of 1 V. If I find a similar CT besides it's construction or type (clamp on, ferrite core, winded type) it should work?
Re: Parts related and strange values on the output
I suppose this is what I'm looking for:http://www.tme.eu/ro/Document/70426a11254837900f0ea7ada5026da5/AZ%20Series.PDF
Re: Parts related and strange values on the output
Those look as if they are much more suitable for an Arduino running on 5 V.
Remember that a current transformer is a current source, this CT appears to require an external burden resistor, just like the SCT-013-000, and that means you can adjust to value of the burden resistor to give you the correct voltage for your Arduino.
If you say what maximum current you want to measure, then it is easy to calculate the correct value for your burden resistor and the calibration coefficient so that you read the correct current.
Re: Parts related and strange values on the output
The Yun will powered from the V in pin from a power supply, not a battery.
Please clarify the influence the pcb transformer mentioned above has on the results and why the normal one shows correct values.
Re: Parts related and strange values on the output
Is the current supplied by the transformer important in this case?
Re: Parts related and strange values on the output
I do not understand your questions. We are discussing a current transformer. It has two windings: the primary winding is the cable that you thread through the middle, normally it passes through once so there is one turn. The secondary winding is the fine wire inside and there are many turns, often hundreds or thousands. The secondary winding acts like a current source and it supplies a current proportional to and smaller than the current in the primary winding.
If you want a voltage, for example to feed into the analogue input of your Arduino, then you must convert the current into a voltage. You do that by feeding the current into a burden resistor. Then you connect the current transformer and burden resistor like this.
The output will be specified as so many mA at the maximum primary current.
Some current transformers are supplied with the burden resistor inside. When that is the case, the output is specified as so many V at the maximum primary current.
Every transformer has a maximum output. For a voltage transformer that you are probably familiar with, there is a maximum current that you can draw before it becomes overloaded.
For a current transformer, there is a maximum voltage that it can generate before it becomes overloaded.
Re: Parts related and strange values on the output
Last posts were about the 220V - 9V transformer. One is a regular and the other is a pcb type, a compact one. Read the issues again.
Re: Parts related and strange values on the output
The AX-1500 CT just arrived and I installed it. The problem now is the output. As you can see below, the output is very strange when a 40W light bulb is plugged. The real power output varies very much and that's because the power factor isn't calculated properly.
23.60 40.43 225.75 0.18 0.58
18.56 39.68 225.86 0.18 0.47
18.60 31.05 226.06 0.14 0.60
26.53 44.05 226.04 0.19 0.60
17.09 37.55 226.12 0.17 0.46
21.40 39.49 225.80 0.17 0.54
22.15 42.95 225.82 0.19 0.52
14.70 36.09 226.27 0.16 0.41
23.15 40.45 226.17 0.18 0.57
18.87 40.02 225.94 0.18 0.47
17.83 37.27 226.16 0.16 0.48
25.09 42.76 226.92 0.19 0.59
I don't know the source of the problem. I checked the EmonLib.cpp and I still can't figure it out. I have to mention I added abs() to the realpower and power factor in the EmonLib.cpp file. It kept reading negative.
And increased the sample rate to 1000.
Re: Parts related and strange values on the output
If your maximum current is 30 A (I'm guessing as that's what you originally suggested you wanted), then 40 W is probably 0.5% of full scale, and you should not expect accurate readings at such low currents due to noise pickup. You should calibrate at a much higher current, say with a 1 kW heater (~ 4 A) and 5 primary turns to give the equivalent of 20 A primary current.
If real power is negative, it means that the power flow is in the opposite direction to that which you assumed. Reverse the CT connections or reverse the CT on its cable.
Re: Parts related and strange values on the output
So, even if I calibrate it correctly, small consumers would not be read accurately? What would be the minimum?
Re: Parts related and strange values on the output
That depends on the actual method of construction that you used, so I cannot give a figure. Great care was taken with the design of the emonTx V3 to minimise noise pickup, we seem to get more complaints about noise pickup from people who have constructed their own front-end circuitry and used an Arduino board for the processor. We believe the major noise contribution comes from the digital circuits inside the processor and makes its way into the analogue side via the analogue reference AVcc.
Re: Parts related and strange values on the output
For now, the assembly is on a breadboard. I'm using a Talema AX-1500 CT (max. 15A read), which reminds me:
http://www.imagebam.com/image/f8b562405087177
In the attached image I've highlighted in yellow the load resistance and the 50 Ohm resistance in the graph on the right. What is with the load resistance and what's with the one in the graph? In the current setting there is no load resistance on my assembly, just the 50 Ohm resistor from the graph.
Re: Parts related and strange values on the output
Those are suggested values for the burden resistor. If you look back over this thread, I think I've covered all the theory you need to be able to choose the correct value for your application. The sums are all in Building Blocks - see the article on calibration theory. It's only straightforward Ohms Law, but you need to allow a few percent for component tolerances. I aim for not more than 1.1 V rms across the burden at max current for the emonTx, or 1.66 V rms if you have an Arduino running at 5 V.
Re: Parts related and strange values on the output
The AX 1500 has a reasonably higher output when using the 200 ohm resistor. Can that "feature" be used for a more accurate output and be applied to smaller consumers?
Re: Parts related and strange values on the output
You can use whatever value burden resistor you like, subject to the maximum power that the CT can provide. You can estimate that from the graphs: it is in VA and it is the voltage × the secondary current.
As I have written before, if you try to generate too much voltage, you overload the CT and the waveform becomes distorted. You can see that at 5 V with 200 Ω burden the graph is starting to bend, that implies a current of 25 mA - that is 0.125 VA. Therefore, if you want to measure only to 20 A (13.33 mA secondary current), you would have a 124.5 Ω burden resistor, which would give you 1.66 V rms suitable for an Arduino running at 5 V. (You would actually use a 120 Ω resistor.)
The price you pay is increased phase error, as you can see from the data sheet.
Re: Parts related and strange values on the output
I got access to my university's lab with precise equipment and a test load. The load was an 800 W heater with direct link to the socket. I calibrated the assembly as best as I could but the power factor is still a major problem. No matter what I did, it wouldn't get over 0.76. I noticed the current was oscillating constantly. Maybe that's the source of the problem. What is there to do?
Re: Parts related and strange values on the output
Posting a complete circuit diagram and the sketch you're using might help.
Re: Parts related and strange values on the output
Here it is:
Re: Parts related and strange values on the output
Let's be frank here: I've spent a lot of time trying to give you some support. I asked for a circuit diagram and your sketch. You have responded with fuzzy photograph of a prototype board. Do you really expect me to try to figure out what the component values are and how they are connected?