N,N-diethyl- m-toluamide (DEET) has been registered for commercial use as an insect repellent for over five decades, and is used widely across the world. Concerns over the safety of DEET first emerged during the 1980s after reports of encephalopathy following DEET exposure, particularly in children. However, the role of DEET in either the illness or deaths was and remains purely speculative. In response to these cases a number of reviews and investigations of DEET safety were carried out. Here we examine the methods used and information available to determine the safety of DEET in humans. Animal testing, observational studies and intervention trials have found no evidence of severe adverse events associated with recommended DEET use. Minor adverse effects noted in animal trials were associated with very large doses and were not replicated between different test species. The safety surveillance from extensive humans use reveals no association with severe adverse events. This review compares the toxicity assessment using three different models to define the risk assessment and safety threshold for DEET use in humans and discusses the clinical consequences of the thresholds derived from the models.
The theoretical risks associated with wearing an insect repellent should be weighed against the reduction or prevention of the risk of fatal or debilitating diseases including malaria, dengue, yellow fever and filariasis. With over 48 million European residents travelling to regions where vector borne diseases are a threat in 2009, restricting the concentration of DEET containing repellents to 15% or less, as modelled in the 2010 EU directive, is likely to result in extensive sub-therapeutic activity where repellents are infrequently applied. Future European travellers, as a consequence of inadequate personal protection, could potentially be at increased risk of vector borne diseases. Risk assessments of repellents should take these factors into account when setting safe limits.
N,N-diethyl- m-toluamide (DEET) is amongst the most effective and widely used of insect repellents [ 1]. DEET was one of the first synthetic repellents, initially developed by the United States Department of Agriculture and then used by the military. It was registered for use by the general public in 1957, and remains the most widely used repellent with an estimated 30% of the US population using insect repellent in 2000 [ 2]. In 2011, a sample survey for the EPA, showed that US consumers bought insect repellent on average 2.87 times per year, and 3.49 times if there were children in the family [ 3]. Given the greater awareness of vector borne diseases such as West Nile virus, tick-borne encephalitis and Lyme disease, insect repellent use is likely to increase, and sales reports show that sales of insect repellents increased 28% between 2001 and 2003 [ 4]. There are now a range of synthetic and naturally derived repellent compounds, and of these, Icaridin and PMD have been shown to provide effective protection, however, due to its long history DEET still has the strongest body of evidence for efficacy [ 5]. Another synthetic repellent, IR3535 has shown reduced efficacy against Anopheles mosquitoes and as such is not recommended for travellers to endemic areas [ 5]. In testing of new actives ingredients, 20% DEET is the gold standard for comparison [ 6] and shows efficacy against a wide variety of blood-feeding organisms: from mosquitoes and black flies to ticks, mites and even land leeches [ 7].
Concerns over the safety of DEET first emerged in the 1980s after reports of encephalopathy following DEET exposure, particularly in children [ 8, 9]. Although the role of DEET in these cases was purely speculative, they prompted a number of investigations and a number of reviews of the safety of DEET.
The process of undertaking a comprehensive safety risk assessment of a chemical requires a four stage review [ 10]. The first stage is hazard identification, which identifies the capacity of the chemical to generate adverse effects in humans. The second is a dose–response test to establish a relationship between dose and the incidence of adverse events. The third includes toxicity assessment data from animal or human exposure to define a final safe exposure limit in humans (Figure 1). Much of the data used to assess the safety of DEET relies on animal studies, with only a single observational trial of DEET use in pregnancy so far carried out on humans. The final stage is a risk assessment that combines the safe exposure limits with likely levels and routes of exposure.
The processes involved in creating a safe exposure assessment of any chemical.
Animal toxicity testing provides basic data where human exposure information is inadequate or unavailable. Most tests only collect information on obvious toxicity effects such as changes in body weight, without defining the mechanisms of toxicity. The United States Environmental Protection Agency (USEPA) carried out a series of experiments in 1998 as part of a DEET re-registration process [ 11]. The majority of studies revealed minor effects of DEET and different NOEL, depending on the exposure route (Table 1). The experiments of most interest involve dermal exposures to DEET, including a 90-day dermal toxicity study in rats using exposures up to 1000 mg/kg body weight/day. At the greatest exposure male rats were observed to develop renal lesions and a decreased body weight, and both sexes showed increased liver weights. As renal lesions were observed in all males at every exposure level, the study was unable to establish a no observed effect level (NOEL). Detailed investigations revealed that the renal lesions were unique to male rats and not relevant to human health [ 11]. A similar study using micropigs, found no changes in mortality, body weight, blood biochemistry, gross pathology or organ weights due to DEET exposure up to 1000 mg per kg body weight per day [ 11].
Results of toxicity testing of DEET on animals reported to the USEPA[ 11]
| leftbottomAcute oral toxicity | leftbottomRat | leftbottomOral LD
50 = 2170–3664 mg/kg
|
| leftbottom | leftbottom | leftbottomToxicity category III: Slightly toxic and slightly irritating |
| leftbottomAcute dermal toxicity | leftbottomRabbit | leftbottomDermal LD
50 = 4280 mg/kg
|
| leftbottom | leftbottom | leftbottomToxicity category III: Slightly toxic and slightly irritating |
| leftbottomAcute inhalation toxicity | leftbottomRat | leftbottomInhalation LD50 = 5.95 mg/kg |
| leftbottom | leftbottom | leftbottomToxicity category IV: Practically non-toxic and not an irritant |
| leftbottomSubchronic (90 day) oral toxicity | leftbottomRat | leftbottomRenal effects found in exposed male rats of two of three strains tested so no NOEL established. |
| leftbottomSubchronic (90 day) oral toxicity | leftbottomHamster | leftbottomNOEL: 61 mg/kg/day |
| leftbottom | leftbottom | leftbottomLEL: 305 mg/kg/day |
| leftbottomSubchronic (90 day) dermal toxicity | leftbottomRat | leftbottomRenal lesions in all male rats treated so no NOEL established |
| leftbottomSubchronic (90 day) dermal toxicity | leftbottomMicropigs | leftbottomNOEL: 1000 mg/kg/day |
| leftbottomChronic (2 year) toxicity | leftbottomRats and dogs | leftbottomNOEL: 100 mg/kg/day |
| leftbottom | leftbottom | leftbottomLEL: 400 mg/kg/day |
| leftbottom | leftbottom | leftbottomNo carcinogenic effects |
| leftbottomChronic (78 weeks) toxicity | leftbottomMice | leftbottomNOEL: 500 mg/kg/day |
| leftbottom | leftbottom | leftbottomLEL: 1000 mg/kg/day |
| leftbottom | leftbottom | leftbottomNo carcinogenic effects |
| leftbottomReproductive toxicity | leftbottomRats | leftbottomNOEL: 250 mg/kg/day (highest dose tested) |
| leftbottomDevelopmental and maternal toxicity | leftbottomRats | leftbottomNOEL: 250 mg/kg/day |
| leftbottom | leftbottom | leftbottomLEL: 750 mg/kg/day |
| leftDevelopmental toxicity | leftRabbits | leftNOEL: 325 mg/kg/day (Highest dose tested) |
Studies in humans have clear advantages as they avoid the errors when extrapolating results from animal studies. In humans, secondary risk factors such as smoking and diet can also be considered. Testing involving animals will largely be drawn from homogenous populations with similar susceptibility to the chemical being tested, whereas human populations will mostly contain a wide range of individuals with varying susceptibility. Observational studies and case reports form the basis of most human toxicological studies. Case reports, although highly subjective and sometimes anecdotal, can be useful in identifying rare associated effects such as unique reactions or association with rare diseases. Observational studies, not easily done, do not allow for any control of assignment of study subjects to either group or the levels of exposure and controlling for confounding factors. Randomised trials using human subjects provide the most rigorous data on safety, but for ethical and safety reasons these trials are rare in toxicological investigations.
Although no human studies have been carried out specifically to assess the safety of DEET, a randomised trial of DEET used to prevent malaria transmission amongst pregnant women in Thailand did assess health outcomes in participants [ 12]. The women were all past their first trimester and when recruited to the trial were monitored for the duration of the pregnancy at weekly ante-natal visits. Their babies were then monitored monthly until six months old and then every three months until one year. No significant differences were found between the DEET treatment group and control group in weight, height, head and arm circumferences, and neurologic performance in newborns. Similarly, infants followed to one year showed no significant difference in developmental delay, death, weight, height, head circumference and arm circumference between those whose mothers had used DEET and non-users. Neither were there any differences in the occurrences of neurological or gastrointestinal effects in the women. Skin warming, a heating sensation on the skin, was significantly more common in the DEET group. DEET was not detected in urine, however, it was detected in the cord blood from four (8%) of the women indicating that DEET is able to cross the placenta. The ability of DEET to cross the placenta is confirmed in a survey of pesticides in cord blood amongst mothers in New Jersey [ 13]. DEET was detectable in the blood and cord blood of all women analysed, although no significant effects on birth weight, head circumference or birth length were found, but a borderline association between higher DEET levels in the cord blood and higher abdominal circumference was noted. At present such trials are rare and limited, so there is no data for the safety of DEET in the first trimester, on the effects of ante-natal DEET exposure beyond one year follow up.
During the mid-1980s there were six reported cases of encephalopathy following exposure to DEET, all in girls aged 1–8 years which resulted in three deaths [ 8]. However, it is unclear whether exposure to DEET was the real cause of the seizures or deaths. The first case involved a 3 and a half year old girl who developed seizures, and it was reported that for the two weeks prior to the illness DEET had been applied to her clothes, bedding and skin resulting in an estimated exposure of 0.14 ml per kg body weight per day [ 14]. One of the fatal cases involved a six year old girl [ 15] who had applied DEET ‘extensively’. However, in this case a history of similar episodes without DEET exposure led to the hypothesis that the girl may have had undiagnosed ornithine carbamyl transferase deficiency. In this case medical opinion was that, although DEET may have precipitated the episode, the cause of death may have been one of the medicines administered during her stay in hospital. A further case was of an 8 year old girl who developed a rash on areas where DEET had been ‘copiously’ applied in the previous 4 days [ 16]. She then suffered seizures before making full recovery. The authors reporting the case believed that, in contrast to previous reports, this case was a true hypersensitive reaction to DEET.
Ten years later there had been a further eight cases of nervous system toxicity following DEET exposure. No gender bias was found across all fourteen cases, but all but one involved children under 8 years [ 17]. The prevalence of encephalopathy during this age range is higher as is the use of DEET use and encephalopathy, therefore it is not surprising to find an apparent association in some cases [ 18]. Despite the term ‘DEET-induced encephalopathy’ in some case reports [ 19], no link to dose or mechanistic pathway has been demonstrated between the use of DEET and the occurrence of encephalopathy. Although DEET might be causally associated in these cases, often there is a lack of data on the actual concentrations and exposures involved. A full analysis of these cases is not intended in this review, as the subject has been ably covered by other authors [ 9, 17]. An analysis was made of over 9,000 calls relating to DEET exposure that were placed to American Poison Control Centres from 1985–9 [ 20]. Almost 90% were treated solely at home and 80% of those referred to a health centre were discharged after initial examination suggesting mild or short-lived symptoms. The severity of symptoms was found to be more closely related to the type of exposure with inhalation or contact with eyes causing greater symptoms, than the concentration of DEET or the age or gender of the patient. A second review of over 20,000 calls between 1993–7 found consistent results [ 21].
A DEET Registry was created to collate information on severe adverse neurological or systemic events associated with DEET use in a standardised way in order to evaluate any potential causal relationship [ 9]. Two hundred and forty-two cases that had been referred to the DEET Registry between 1995 and 2001 were assessed by qualified nurses and followed up after one year. It was found that children were not disproportionately represented amongst cases. Children made up 41% of DEET cases in this analysis compared to 65% of any calls to Poisons Centres between 1983 and 2009 [ 22]. However, compared to adults in the analysis, children were more likely to have experienced seizures and 71% of seizure patients were children. This is not a remarkable finding, however, as seizures are more common in children than adults [ 23]. No relationship was evident between DEET concentration and severity of outcome, but as with the case reports of seizures described above, estimating actual DEET exposure is difficult given the variation in self-administered doses.
Even when allowing for a large factor of underreporting, the incidence of 14 reported cases of DEET-associated encephalopathy since 1957 is small when considered against the context of an estimated 200 million applications of DEET worldwide each year [ 2]. Some individuals can develop allergic responses to DEET, which result in serious reactions through even small exposures [ 24]. However, for adult consumers, and based on these observational studies, there is no basis in the observational data for concerns over the safety of DEET.
Results from animals need to be extrapolated to be relevant to human health. It is standard practice to take 10% of NOEL from animal data to account for differences between animal and human metabolism and then a further adjustment to 10% of that dose (100 th the original dose), to create a safe maximum exposure limit [ 10]. However, as this approach can lead to a large correction factor, it is acknowledged that risk assessments resulting in unacceptable exposures should be further examined to ensure the findings are sensible and that a more refined assessment is not required [ 25].
Antwi et al. carried out a risk assessment of DEET [ 26] using both the results of USEPA toxicity testing and those of Schoenig et al. in which DEET was only administered orally [ 11, 27]. To estimate risk to human health NOELs were set at 200 mg/kg body weight/day for acute exposures, 300 mg/kg body weight/day for subchronic exposures and 100 mg/kg body weight/day for chronic exposures. A survey of repellent use by men, women and children found that the dose applied did not vary with age, gender or the actual DEET concentration [ 28]. The average dose applied in a single application was 3.7 g. Antwi et al. then used this to model the level of DEET exposure associated with the use of 5%, 25% and 40% DEET repellent products. None of the estimated exposures were equal or greater than the NOELs. However, a single 3.7 g application of a 40% DEET product is above 1% of the NOEL for all age groups and a single application of 25% is above 1% of the NOEL for children under 17 years old. The 1% of the NOEL, as established from animal testing, is recognised as the safe exposure limit. This therefore means a 40% DEET product is qualified as unsafe for human use but is based on rat experimental data, where animals at higher dose exposures developed non-specific weight loss and male renal abnormalities.
The USEPA committee, however, considered the effects observed in rats at 1000 mg per kg body weight per day as so modest and the dosage so high, that it did not form sufficient grounds for conducting a quantitative risk assessment. They did not ,therefore, define a minimum dose of DEET for daily use.
The 2010 EU directive, using the same data source as the USEPA recommends an acceptable exposure level (AEL) for repeated use of 8.2 mg DEET per kg body weight per day [ 29]. This dose is equivalent to a single application of 3.3 g of a 15% DEET formulation to an adult weighing 60 kg. The directive has used the standard 1% correction shown in Figure 1 as well as an 82% correction for different absorption rates between animals and humans to achieve this final safety margin. This assessment did not reference the different outcomes and findings of the USEPA study.
All three studies have used the same toxicity data to determine safe exposure levels, but only the USEPA considered a full risk assessment was not necessary. Based on the modest effects of DEET shown in the human toxicity data, it is questionable as to whether a risk assessment should be done. The decision about whether a chemical should be given a full risk assessment is an important step as often chemicals with low toxicity do not require this assessment. The different conclusions, based on the same data, demonstrate the difficulties and uncertainties involved in modelling toxicity.
Illnesses reported by service personnel returning from the Gulf War have been linked to synergistic effects of DEET used alongside permethrin (an insecticide impregnated into clothing) and pyridostigmine bromide (a prophylactic agent against the effects of nerve gas). In toxicity studies using animals, rats exposed to combinations of DEET and pyridostigmine bromide had greater than expected mortality, but lower than expected mortality was observed in rats exposed to combinations of DEET and permethrin [ 11]. Pyridostigmine bromide alone has been shown to impair rat behavioural performance, but combined with DEET leads to further loss in performance [ 30]. As an anti-nerve gas agent, few people would be expected to be exposed to pyridostigmine bromide. Therefore, it is possible to control combined exposure in these select group without prohibiting the use of DEET. The combination of DEET and permethrin is a more likely combination in use in the general population with products such as insecticide treated bed nets and clothing. In vitro and animal experiments show that DEET is a cholinesterase inhibitor [ 31], and in combination with permethrin has measurable effects indicating DNA damage and oxidative stress in rats, and also increases the release of rat brain mitochondrial cytochrome C and disrupts the blood–brain barrier (BBB) in rats [ 32]. Further work is required to determine the mechanism that could lead to adverse effects for human health using doses and applications that are relevant to DEET use by travellers.
The use of repellents as personal bite protection is recommended to travellers for protection against arthropod borne diseases in tropical countries. However, mostly due to concerns over cost rather than long term exposure, it is not recommended to people living in vector-borne disease endemic countries. Although there have been relatively few studies that have measured disease outcomes associated with the use of repellents alone, and those that have been published have resulted in variable results in protection, there is evidence that topical repellents can reduce vector borne disease transmission including malaria [ 33, 34] as well as pediculosis, sandfly fever and scrub typhus [ 35]. The efficacy of repellents, in part, relies on the efficacy of the active ingredient, the longevity (how long it lasts) and user compliance. Undoubtedly, DEET is the most effective and long-lasting providing the concentration is high enough and it is well-formulated. In laboratory testing different concentrations have been shown to provide different protection times. For example, in one study, formulations of DEET below 20% provided complete protection for only 20 minutes, whereas in comparable tests, those between 20-50% provided complete protection for 3 hours [ 36]. Bearing in mind the likely effect of sweating and rubbing off on clothes in hot climates, the level of DEET on the skin is likely to reduce rapidly in this environment. In another study, people who exercise after applying a repellent based soap have been found to have 10-30% less protection from bites compared to those who had not exercised [ 37]. Therefore, to achieve high levels of protection and maintain this over a practical time period before having to reapply is essential for any repellents to protect against disease transmission in travellers. The suggested application rate of 8.2 mg DEET per kg body weight per day, equates to a single application of 2.46 g of a 20% DEET product for an adult. The application volume or weight of a DEET product, based on the standard application used in repellency testing of 1.67 ml/mg/cm 2 required to cover 2 arms would be 5.7 ml/g product (18% surface area). A 15% concentration product would contain 855 mg DEET and a 50% product would contain 2850 mg of DEET. These DEET levels are above the Directives maximum 492 mg per day (for a person weighing 60 kg) and would not allow repeated application or application to other parts of the body sufficient to provide long lasting protection against most vectors of disease. In field testing of 20-35% DEET formulations, investigators have used up to 6 ml to protect exposed limbs, usually forearms, lower legs and feet [ 38], but sometimes only the lower legs [ 39, 40].
Risk assessments of chemical exposures rely on exposure and toxicity assessments which both involve a margin of error. Risk assessments use a conservative estimate of exposure to describe the lowest safe estimates of toxicity. To ensure low-risk chemicals are not subjected to lengthy assessments a tiered approach is normally used [ 25]. With DEET assessments, this is the point at which there is a difference in approach between researchers. The standard risk assessment takes the toxicity profile in rats, applies a conversion factor to apply the data to humans and another to establish a safe exposure level. This blind approach finds normal exposure DEET products above 15% leads to excessive exposure. In contrast, other researchers considered the observed adverse effects in rats (reduced food consumption and decreased weight gain) has no relevance to human risk and therefore do not complete any further risk assessment.
Biting arthropods transmit an array of vector-borne pathogens that cause diseases including malaria, dengue, Lyme disease, filariasis, onchocerciasis and West Nile virus. These diseases have a significant human health impact and many have no specific prophylaxis, treatment or vaccines. Therefore, insect repellents are important in reducing or preventing these insect borne infections. DEET is the most effective and widely used insect repellent with an estimated 200 million annual applications worldwide. With over 48 million European residents travelling annually to regions where vector borne diseases are a threat [ 41], restricting the concentration of DEET containing repellents to 15% or less, as modelled in the 2010 EU directive based on toxicity estimates from NOELS in animals, is likely to result in extensive sub-therapeutic activity where repellents are infrequently applied [ 5, 42]. Comparisons between marketed repellents show that formulation as well as DEET concentration will greatly effect longevity of protection [ 43], therefore, although not yet available, low DEET repellents could eventually provide a long-lasting protection. Future European travellers, as a consequence of inadequate personal protection, are likely to be at increased risk of vector borne diseases. It is therefore essential that any risk assessment of the toxicity of DEET needs to be balanced by its benefit in avoiding disease and extensive global data on the widespread use of DEET and reported human toxicity.
Policy recommendation on DEET use needs to balance the available toxicity data, and its historical safety record, against the risks of vector borne diseases. Conventional risk assessment methodology leads to a recommendation to reduce the use of higher concentrations of DEET, but fails to recognise the disease avoiding benefits of DEET. A pragmatic approach along with future research to describe toxicity thresholds in humans are the way forward.
DEET: N,N-diethyl- meta-toluamide; EU: European Union; NOEL: No observed effect Level; USEPA: United States Environmental Protection Agency.
JL is the Director and VCH is a Research Scientist at arctec the Arthropod Control Product Test Centre at the London School of Hygiene & Tropical Medicine. arctec provides impartial commercial testing services on insect repellent efficacy.
VCH carried out the literature review and wrote the initial draft. RB reviewed the manuscript and provided additional sections on traveller health. JL reviewed the manuscript and gave final approval. All authors read and approved the final version of the manuscript.
We would like to thank the Arthropod Control Product Test Centre ( arctec), for commissioning this manuscript. arctec is a Division of Chariot Innovations, a wholly owned subsidiary of the London School of Hygiene and Tropical Medicine.


SHARE TO
HR manage
HR manage
HR manage
ATTACHMENT
code 29384 shanghai editing.inf
Last edit 30 minutes ago
code 29384 shanghai editing.inf
Last edit 30 minutes ago
code 29384 shanghai editing.inf
Last edit 30 minutes ago
Sharon Williams 11:02am 16th Nov
The monkey-rope is found in all whalers; but it was only in the Pequod that the monkey and his holder were ever tied together. This improvement upon the original usage was introduced by no less a man than Stubb, in order to afford the imperilled harpooneer the strongest possible guarantee for the faithfulness and vigilance of his monkey-rope holder.
Sharon Williams 11:02am 16th Nov
The monkey-rope is found in all whalers; but it was only in the Pequod that the monkey and his holder were ever tied together. This improvement upon the original usage was introduced by no less a man than Stubb, in order to afford the imperilled harpooneer the strongest possible guarantee for the faithfulness and vigilance of his monkey-rope holder.


:: NLD
After sending just two speed skaters and five bobsleigh athletes to its first Olympic Winter Games, the Netherlands had to wait until 1952 to win its first medals - three speed skating silvers. Twelve years later at Innsbruck, figure skater Sjoukje Dijkstra won the first Dutch gold medal, having taken home silver at the 1960 Squaw Valley Games.


About Me
I am currently pursuing a Bachelor's of Science at Northwestern Univeristy in both Computer Engineering and Computer Science.
I enjoy playing video games such as Overwatch and Skyrim, but the I venture to the outdoors as well.
Currently on the frisbee team and I love playing college intramural sports!
What I do
I do freelance work such as creating websites or help catalyze new startup ideas
During the school year, I work within the Roger's Lab within NU in visualizing real time data.
I also serve as a peer mentor in the NU community, helping peers learn what they can't outside of class.
Social Me-dia!


The documentation for Gradle can be found at the following locations:
These are uploaded by the latest successful nightly build


North Korea says no interest in Trump summit until 'hostile policy' removed
North Korea has also called for an end to joint military drills with South Korea, as well as sanctions that crippled its economy.
A senior North Korean official said on Wednesday that the United States must drop its "hostile policy" towards Pyongyang in order to restart stalled denuclearisation talks, South Korea's Yonhap news agency reported.
Vice Foreign Minister Choe Son Hui told reporters after meeting Russian officials in Moscow it would be "impossible" to hold another summit between North Korean leader Kim Jong Un and US President Donald Trump if he maintains his current stance towards the North.
"To negotiate with the United States going forward, we would be able to discuss nuclear issues again when it withdraws all of its hostile policy against us," Choe said, according to Yonhap.
"In that sense, I think a summit should not really be an issue of our interest."
She did not specify what constituted such a policy, but North Korea's foreign ministry said on Sunday that a recent United Nations resolution on its human rights was a US-led "political provocation".
North Korea has also called for an end to joint military drills with South Korea, as well as sanctions that crippled its economy.
When asked what US action was needed to restart the talks, Choe said the Americans "know very well".
"The US side will have to lift all measures with which they treat us as an enemy and then inform us of such a strategic decision," she said.
Kim and Trump held a first, landmark summit in Singapore in June last year and agreed to improve relations and negotiate an end to North Korea's nuclear and missile programmes.
The efforts have made no substantial progress and their second summit collapsed in Vietnam in February.
The two leaders agreed in June, at a third meeting at the inter-Korean border, to re-open negotiations. But working-level talks in October between officials in Sweden ended with the North Korean envoy accusing the Americans of coming to the table empty-handed.
Choe, one of North Korea's key nuclear negotiators, met Russian officials including Russian Foreign Minister Sergei Lavrov in Moscow on Wednesday, Yonhap said.
Her remarks were the latest in a series of statements in recent weeks by senior Pyongyang officials calling for US action, as a year-end deadline set by Kim for Washington to show more flexibility draws near.


| Constants |
| NEVER |
never update links
|
| MANUAL |
update links when confirmed on request during loading the
document
|
| AUTO |
automatic update on load
|
| GLOBAL_SETTING |
use the setting that is configured in your installed
application. This may be one of the above behaviours.
|
| Constants' Details |
NEVER
const long NEVER = 0;
- Description
- never update links
|
|
MANUAL
const long MANUAL = 1;
- Description
- update links when confirmed on request during loading the
document
|
|
AUTO
const long AUTO = 2;
- Description
- automatic update on load
|
|
GLOBAL_SETTING
const long GLOBAL_SETTING = 3;
- Description
- use the setting that is configured in your installed
application. This may be one of the above behaviours.
|
|
Top of Page
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


Generates an RandomUnsigned Integer Limit to be used by the RandomUnsignedInteger to generate Random Values in the limit specified by this object.
More...
#include <limits.hpp>
|
| | RandomUnsignedIntegerLimit (std::initializer_list< unsigned long long > llmt) |
| | Construct a new Random Unsigned Integer Limit object. More...
|
| |
| | RandomUnsignedIntegerLimit (unsigned long long upper, unsigned long long lower) |
| | Construct a new Random Unsigned Integer Limit object. More...
|
| |
| void | add_interval_exception (std::pair< unsigned long long, unsigned long long > interval) |
| | Adds a interval exception in between the limit say. Original Limit are [a, b) and you want to skip some intervals in between say [c,d) such that c >= a and d < b then you would call this method with std::pair<c,d> More...
|
| |
| unsigned long long | actual_limit_size () |
| | The limit size after excluding all the exceptions in between them. More...
|
| |
| bool | valid_output (unsigned long long out) const |
| | checks if the a unsigned long long is a valid as per the limit constraints with exception internals in mind. More...
|
| |
|
| const unsigned long long | UpperLimit |
| | UpperLimit the upper limit of the character as ASCII int. More...
|
| |
| const unsigned long long | LowerLimit |
| | LowerLimit the lower limit of the character as ASCII int. More...
|
| |
Generates an RandomUnsigned Integer Limit to be used by the RandomUnsignedInteger to generate Random Values in the limit specified by this object.
◆ RandomUnsignedIntegerLimit() [1/2]
| testcaser::maker::RandomUnsignedIntegerLimit::RandomUnsignedIntegerLimit |
( |
std::initializer_list< unsigned long long > |
llmt | ) |
|
|
inline |
Construct a new Random Unsigned Integer Limit object.
- Parameters
-
| llmt | the limit as initializer list |
◆ RandomUnsignedIntegerLimit() [2/2]
| testcaser::maker::RandomUnsignedIntegerLimit::RandomUnsignedIntegerLimit |
( |
unsigned long long |
upper, |
|
|
unsigned long long |
lower |
|
) |
| |
|
inlineexplicit |
Construct a new Random Unsigned Integer Limit object.
- Parameters
-
| upper | the upper bound of the limit (not included) |
| lower | the lower bound of the limit (included) |
◆ actual_limit_size()
| unsigned long long testcaser::maker::RandomUnsignedIntegerLimit::actual_limit_size |
( |
| ) |
|
|
inline |
The limit size after excluding all the exceptions in between them.
- Returns
- unsigned long long the value of the limit size
◆ add_interval_exception()
| void testcaser::maker::RandomUnsignedIntegerLimit::add_interval_exception |
( |
std::pair< unsigned long long, unsigned long long > |
interval | ) |
|
|
inline |
Adds a interval exception in between the limit say. Original Limit are [a, b) and you want to skip some intervals in between say [c,d) such that c >= a and d < b then you would call this method with std::pair<c,d>
- Parameters
-
| interval | the std::pair object holding an interval in between the original limit. |
◆ valid_output()
| bool testcaser::maker::RandomUnsignedIntegerLimit::valid_output |
( |
unsigned long long |
out | ) |
const |
|
inline |
checks if the a unsigned long long is a valid as per the limit constraints with exception internals in mind.
- Parameters
-
| out | the value to check for |
- Returns
- true if doesn't violates the limit rules
-
false if violates any rule or is out of limit
◆ LowerLimit
| const unsigned long long testcaser::maker::RandomUnsignedIntegerLimit::LowerLimit |
LowerLimit the lower limit of the character as ASCII int.
◆ UpperLimit
| const unsigned long long testcaser::maker::RandomUnsignedIntegerLimit::UpperLimit |
UpperLimit the upper limit of the character as ASCII int.
The documentation for this class was generated from the following file:


|
CS130_Team13
|
The robot class handles all of the movement of the robot on the board. More...
Public Member Functions | |
| void | Init (BoardManager bm) |
| Allows the BoardManager to pass a reference to itself so the Robot can get data from it. More... | |
| void | Recharge () |
| Resets the battery of the robot to full charge. More... | |
| void | OutOfBattery () |
| Plays an animation when there is no more battery. More... | |
| void | PowerupBatteryBoost () |
| Adds to the capacity of the battery for a few turns. More... | |
| void | PowerupMoveCostReduction () |
| Reduces movement cost for a few turns. More... | |
| void | PowerupMineBoost () |
| Reduces the cost of mining for a few turns. More... | |
| IEnumerator | Rotate90 (Direction dir) |
| Rotates 90 degrees. More... | |
| IEnumerator | Move (Direction dir) |
| Move in the given direction. More... | |
| IEnumerator | Mine () |
| Mines the tile in front of the robot. More... | |
| IEnumerator | Place () |
| Places a rock in front of the robot. More... | |
Public Attributes | |
| ParticleSystem | outOfBatteryEffect |
The robot class handles all of the movement of the robot on the board.
| void Robot.Init | ( | BoardManager | bm | ) |
Allows the BoardManager to pass a reference to itself so the Robot can get data from it.
| IEnumerator Robot.Mine | ( | ) |
Mines the tile in front of the robot.
| IEnumerator Robot.Move | ( | Direction | dir | ) |
Move in the given direction.
If the tile space is occupied or inaccessable, play an animation and stay in the same spot.
| void Robot.OutOfBattery | ( | ) |
Plays an animation when there is no more battery.
| IEnumerator Robot.Place | ( | ) |
Places a rock in front of the robot.
| void Robot.PowerupBatteryBoost | ( | ) |
Adds to the capacity of the battery for a few turns.
| void Robot.PowerupMineBoost | ( | ) |
Reduces the cost of mining for a few turns.
| void Robot.PowerupMoveCostReduction | ( | ) |
Reduces movement cost for a few turns.
| void Robot.Recharge | ( | ) |
Resets the battery of the robot to full charge.
| IEnumerator Robot.Rotate90 | ( | Direction | dir | ) |
Rotates 90 degrees.
Direction.Left is counterclockwise, Direction.Right is clockwise.
| ParticleSystem Robot.outOfBatteryEffect |


Conflict
This week @devbootcamp
28 Mar 15
1. Discuss a time you had a conflict. What was it about? What happened?
When I moved out to Montana I made a concerted effort to stay in close touch with my friends and family back east. This involved calling and texting people regularly. My sister in particular didn't like this and started ignoring my calls. This upset me.
2. What was the source of the conflict?
I wanted to fell connected to what was going on in her life but she wanted to check in less frequently. My calls became a burden that were to be avoided and I felt increasingly out of touch and frustrated.
3. What basic emotions did you feel upon analyzing the conflict?
I felt a sense of disconnection from where I had grown up and that was driving some behavior that was unusual for me. I guess you could say I was feeling lonely.
4. What actions did you take to resolve your conflict?
I tried bringing it up with my sister but she got defensive, so I went back and analyzed why I was feeling frustrated with her and found that much of the fault lay with me. I apologized and now I call my sister much less but talk to her much more.
5. If you could go back, what would you do differently, if anything?
I would probably be more understanding of her emotions and what she wanted than I was at the time.
6. What did you learn from this experience?
Patience is important and frustration and anger are not productive emotions in most circumstances.


ABOUT THIS WEBSITE
________________________________________________________________________________
An explanation for why Dylan chose what he did for this site.
This is not your run-of-the-mill website. It is not generated from something
like Markdown, nor is it written in HTML. Each page is simply a .txt file which
is inserted into <pre> tags that reside in a tiny template.
The template contains the CSS, favicon, sidebar and the few HTML elements needed
to house the content. Each resulting HTML file is fully self-contained.
Everything listed above is embedded into each file.
Thanks to this "static" model, each page on this website takes up a single HTTP
request. One can simply use curl to grab a page and it'll render in the browser
offline and as intended.
This remains quick despite the loss in caching as each page is no larger than
3-10 kilobytes. See: https://tools.pingdom.com/#5ca38087eb000000
[1.0] Index
________________________________________________________________________________
- Favicon [2.0]
- Why provide a favicon at all? [2.1]
- References [3.0]
[2.0] Favicon
________________________________________________________________________________
The favicon is a base64 encoded gif file which was handmade in GRAFX2. [0]
The gif contains an indexed (and tiny) palette which contributes largely to
its small size.
Many years ago I worked creating pixel art (assets) for an MMORPG called
Graal Online [1].  Here's the
favicon in full (to get an idea as to how small it is).
<link href='data:image/gif;base64,R0lGODlhEAAQAPH/AAAAAP8AAP8AN////yH5BAUAAAQ
ALAAAAAAQABAAAAM2SLrc/jA+QBUFM2iqA2bAMHSktwCCWJIYEIyvKLOuJt+wV69ry5cfwu7WCVp2RSP
oUpE4n4sEADs=' rel=icon>
Something of this size is negligible compared to the rest of the page. Hell, if
I continue to ramble on, this paragraph will surpass it in size.
[2.1] Why provide a favicon at all?
____________________________________________________________________________
The funny thing about web browsers is that they'll assume a favicon exists
despite this possibly being false. Browsers will try to load it and you'll
end up with 404 and a wasted request.
Providing some kind of inline favicon is the only way to quiet the browser
and prevent it from trying to load something non-existent. Prior to creating
the above favicon, this website used the following snippet.
<link href=data:, rel=icon>
Through a lot of tinkering I found that this is the smallest possible
(inline) favicon. This successfully shushes the web request in all tested
browsers.
[3.0] References
________________________________________________________________________________
[0] http://grafx2.chez.com/
[1] https://graalonline.com/
________________________________________________________________________________
Dylan Araps (C) 2019-2020
kiss-community (C) 2020-2021
Dilyn Corner (C) 2021
Linux(R) is the registered trademark of Linus Torvalds in the U.S. and
other countries.


WITNESS LIST Finance Committee May 17, 1997-9:00A HB 137 Registering, but not testifying: For: Johnson, Owen Randy (SMRS), Abilene Sprinkle, G.K. (TACDC), Austin HB 1384 On: Hensley, Stephen R. (TX A&M - Texarkana), Texarkana HB 2617 Registering, but not testifying: For: Ott, Patricia (JOPCATI), West Williams, Gerald L. (BBLEMIT), Huntsville Williams, John H. (JOPCATI), West HB 2681 Registering, but not testifying: For: Johnson, Karen (Keep TX Beautiful), Austin HB 3513 Registering, but not testifying: On: Dan, Kelli (State Auditor's Office), Austin HCR 118 Registering, but not testifying: For: Howard, Ed (Dick Enterprises), Pittsburg, PA HCR 211 Registering, but not testifying: For: Shelley, Dan (CTFPM), Austin


An angular directive for formatting and selecting elements from JSON objects.
Install via Bower
bower install json-selector --save
Add jsonSelector
to your app dependencies
angular.module('myApp', ['jsonSelector'])
Use <json-selector>
directive
<json-selector open="1" json="{my: 'json'} selectable="true" allow-root-select="false" model="mymodel"></json-selector>
open
attribute accepts a number that indicated how many levels JSON should be open
json
attribute sets the JSON which needs to be rendered.
selectable
sets whether the nodes are selectable via checkboxes.
allow-root-select
allows/denies selecting of root element.
model
is an array of expressions which are selected.
{{mymodel | json}}
ng-repeat
If you are iterating in an array of objects, make sure you are using track by $index
to avoid
adding extra $$hashKey
to your objects.
track by $index
track by $index
To use dark theme add json-selector-dark
class this directive. Note that json-selector-dark
class make text and other elements lighter so they look good on a dark background.
(for performance testing)


We're trying to understand customers better by studying preferences and habits.We would be grateful if you helped!
⛰ 🍷 🏖 🏛
🚗 🚂 🏍 🚶
💵 💸 💰 🤑
😊 😍 😐 😠


pandas.
Series
One-dimensional ndarray with axis labels (including time series).
Labels need not be unique but must be a hashable type. The object supports both integer- and label-based indexing and provides a host of methods for performing operations involving the index. Statistical methods from ndarray have been overridden to automatically exclude missing data (currently represented as NaN).
Operations between Series (+, -, /, , *) align values based on their associated index values– they need not be the same length. The result index will be the sorted union of the two indexes.
Contains data stored in Series.
Changed in version 0.23.0: If data is a dict, argument order is maintained for Python 3.6 and later.
Values must be hashable and have the same length as data. Non-unique index values are allowed. Will default to RangeIndex (0, 1, 2, …, n) if not provided. If both a dict and index sequence are used, the index will override the keys found in the dict.
Data type for the output Series. If not specified, this will be inferred from data. See the user guide for more usages.
The name to give to the Series.
Copy input data.
Attributes
T
Return the transpose, which is by definition self.
array
The ExtensionArray of the data backing this Series or Index.
at
Access a single value for a row/column label pair.
attrs
Dictionary of global attributes on this object.
axes
Return a list of the row axis labels.
dtype
Return the dtype object of the underlying data.
dtypes
hasnans
Return if I have any nans; enables various perf speedups.
iat
Access a single value for a row/column pair by integer position.
iloc
Purely integer-location based indexing for selection by position.
index
The index (axis labels) of the Series.
is_monotonic
Return boolean if values in the object are monotonic_increasing.
is_monotonic_decreasing
Return boolean if values in the object are monotonic_decreasing.
is_monotonic_increasing
is_unique
Return boolean if values in the object are unique.
loc
Access a group of rows and columns by label(s) or a boolean array.
nbytes
Return the number of bytes in the underlying data.
ndim
Number of dimensions of the underlying data, by definition 1.
shape
Return a tuple of the shape of the underlying data.
size
Return the number of elements in the underlying data.
values
Return Series as ndarray or ndarray-like depending on the dtype.
empty
name
Methods
abs(self)
abs
Return a Series/DataFrame with absolute numeric value of each element.
add(self, other[, level, fill_value, axis])
add
Return Addition of series and other, element-wise (binary operator add).
add_prefix(self, prefix)
add_prefix
Prefix labels with string prefix.
add_suffix(self, suffix)
add_suffix
Suffix labels with string suffix.
agg(self, func[, axis])
agg
Aggregate using one or more operations over the specified axis.
aggregate(self, func[, axis])
aggregate
align(self, other[, join, axis, level, …])
align
Align two objects on their axes with the specified join method.
all(self[, axis, bool_only, skipna, level])
all
Return whether all elements are True, potentially over an axis.
any(self[, axis, bool_only, skipna, level])
any
Return whether any element is True, potentially over an axis.
append(self, to_append[, ignore_index, …])
append
Concatenate two or more Series.
apply(self, func[, convert_dtype, args])
apply
Invoke function on values of Series.
argmax(self[, axis, skipna])
argmax
Return an ndarray of the maximum argument indexer.
argmin(self[, axis, skipna])
argmin
Return a ndarray of the minimum argument indexer.
argsort(self[, axis, kind, order])
argsort
Override ndarray.argsort.
asfreq(self, freq[, method, fill_value])
asfreq
Convert TimeSeries to specified frequency.
asof(self, where[, subset])
asof
Return the last row(s) without any NaNs before where.
astype(self, dtype, copy, errors)
astype
Cast a pandas object to a specified dtype dtype.
at_time(self, time, asof[, axis])
at_time
Select values at particular time of day (e.g.
autocorr(self[, lag])
autocorr
Compute the lag-N autocorrelation.
between(self, left, right[, inclusive])
between
Return boolean Series equivalent to left <= series <= right.
between_time(self, start_time, end_time, …)
between_time
Select values between particular times of the day (e.g., 9:00-9:30 AM).
bfill(self[, axis, limit, downcast])
bfill
Synonym for DataFrame.fillna() with method='bfill'.
DataFrame.fillna()
method='bfill'
bool(self)
bool
Return the bool of a single element PandasObject.
cat
alias of pandas.core.arrays.categorical.CategoricalAccessor
pandas.core.arrays.categorical.CategoricalAccessor
clip(self[, lower, upper, axis])
clip
Trim values at input threshold(s).
combine(self, other, func[, fill_value])
combine
Combine the Series with a Series or scalar according to func.
combine_first(self, other)
combine_first
Combine Series values, choosing the calling Series’s values first.
copy(self, deep)
copy
Make a copy of this object’s indices and data.
corr(self, other[, method, min_periods])
corr
Compute correlation with other Series, excluding missing values.
count(self[, level])
count
Return number of non-NA/null observations in the Series.
cov(self, other[, min_periods])
cov
Compute covariance with Series, excluding missing values.
cummax(self[, axis, skipna])
cummax
Return cumulative maximum over a DataFrame or Series axis.
cummin(self[, axis, skipna])
cummin
Return cumulative minimum over a DataFrame or Series axis.
cumprod(self[, axis, skipna])
cumprod
Return cumulative product over a DataFrame or Series axis.
cumsum(self[, axis, skipna])
cumsum
Return cumulative sum over a DataFrame or Series axis.
describe(self[, percentiles, include, exclude])
describe
Generate descriptive statistics.
diff(self[, periods])
diff
First discrete difference of element.
div(self, other[, level, fill_value, axis])
div
Return Floating division of series and other, element-wise (binary operator truediv).
divide(self, other[, level, fill_value, axis])
divide
divmod(self, other[, level, fill_value, axis])
divmod
Return Integer division and modulo of series and other, element-wise (binary operator divmod).
dot(self, other)
dot
Compute the dot product between the Series and the columns of other.
drop(self[, labels, axis, index, columns, …])
drop
Return Series with specified index labels removed.
drop_duplicates(self[, keep, inplace])
drop_duplicates
Return Series with duplicate values removed.
droplevel(self, level[, axis])
droplevel
Return DataFrame with requested index / column level(s) removed.
dropna(self[, axis, inplace, how])
dropna
Return a new Series with missing values removed.
dt
alias of pandas.core.indexes.accessors.CombinedDatetimelikeProperties
pandas.core.indexes.accessors.CombinedDatetimelikeProperties
duplicated(self[, keep])
duplicated
Indicate duplicate Series values.
eq(self, other[, level, fill_value, axis])
eq
Return Equal to of series and other, element-wise (binary operator eq).
equals(self, other)
equals
Test whether two objects contain the same elements.
ewm(self[, com, span, halflife, alpha, …])
ewm
Provide exponential weighted functions.
expanding(self[, min_periods, center, axis])
expanding
Provide expanding transformations.
explode(self)
explode
Transform each element of a list-like to a row, replicating the index values.
factorize(self[, sort, na_sentinel])
factorize
Encode the object as an enumerated type or categorical variable.
ffill(self[, axis, limit, downcast])
ffill
Synonym for DataFrame.fillna() with method='ffill'.
method='ffill'
fillna(self[, value, method, axis, inplace, …])
fillna
Fill NA/NaN values using the specified method.
filter(self[, items, axis])
filter
Subset the dataframe rows or columns according to the specified index labels.
first(self, offset)
first
Method to subset initial periods of time series data based on a date offset.
first_valid_index(self)
first_valid_index
Return index for first non-NA/null value.
floordiv(self, other[, level, fill_value, axis])
floordiv
Return Integer division of series and other, element-wise (binary operator floordiv).
ge(self, other[, level, fill_value, axis])
ge
Return Greater than or equal to of series and other, element-wise (binary operator ge).
get(self, key[, default])
get
Get item from object for given key (ex: DataFrame column).
groupby(self[, by, axis, level])
groupby
Group Series using a mapper or by a Series of columns.
gt(self, other[, level, fill_value, axis])
gt
Return Greater than of series and other, element-wise (binary operator gt).
head(self, n)
head
Return the first n rows.
hist(self[, by, ax, grid, xlabelsize, xrot, …])
hist
Draw histogram of the input series using matplotlib.
idxmax(self[, axis, skipna])
idxmax
Return the row label of the maximum value.
idxmin(self[, axis, skipna])
idxmin
Return the row label of the minimum value.
infer_objects(self)
infer_objects
Attempt to infer better dtypes for object columns.
interpolate(self[, method, axis, limit, …])
interpolate
Interpolate values according to different methods.
isin(self, values)
isin
Check whether values are contained in Series.
isna(self)
isna
Detect missing values.
isnull(self)
isnull
item(self)
item
Return the first element of the underlying data as a python scalar.
items(self)
items
Lazily iterate over (index, value) tuples.
iteritems(self)
iteritems
keys(self)
keys
Return alias for index.
kurt(self[, axis, skipna, level, numeric_only])
kurt
Return unbiased kurtosis over requested axis.
kurtosis(self[, axis, skipna, level, …])
kurtosis
last(self, offset)
last
Method to subset final periods of time series data based on a date offset.
last_valid_index(self)
last_valid_index
Return index for last non-NA/null value.
le(self, other[, level, fill_value, axis])
le
Return Less than or equal to of series and other, element-wise (binary operator le).
lt(self, other[, level, fill_value, axis])
lt
Return Less than of series and other, element-wise (binary operator lt).
mad(self[, axis, skipna, level])
mad
Return the mean absolute deviation of the values for the requested axis.
map(self, arg[, na_action])
map
Map values of Series according to input correspondence.
mask(self, cond[, other, inplace, axis, …])
mask
Replace values where the condition is True.
max(self[, axis, skipna, level, numeric_only])
max
Return the maximum of the values for the requested axis.
mean(self[, axis, skipna, level, numeric_only])
mean
Return the mean of the values for the requested axis.
median(self[, axis, skipna, level, numeric_only])
median
Return the median of the values for the requested axis.
memory_usage(self[, index, deep])
memory_usage
Return the memory usage of the Series.
min(self[, axis, skipna, level, numeric_only])
min
Return the minimum of the values for the requested axis.
mod(self, other[, level, fill_value, axis])
mod
Return Modulo of series and other, element-wise (binary operator mod).
mode(self[, dropna])
mode
Return the mode(s) of the dataset.
mul(self, other[, level, fill_value, axis])
mul
Return Multiplication of series and other, element-wise (binary operator mul).
multiply(self, other[, level, fill_value, axis])
multiply
ne(self, other[, level, fill_value, axis])
ne
Return Not equal to of series and other, element-wise (binary operator ne).
nlargest(self[, n, keep])
nlargest
Return the largest n elements.
notna(self)
notna
Detect existing (non-missing) values.
notnull(self)
notnull
nsmallest(self[, n, keep])
nsmallest
Return the smallest n elements.
nunique(self[, dropna])
nunique
Return number of unique elements in the object.
pct_change(self[, periods, fill_method, …])
pct_change
Percentage change between the current and a prior element.
pipe(self, func, \*args, \*\*kwargs)
pipe
Apply func(self, *args, **kwargs).
plot
alias of pandas.plotting._core.PlotAccessor
pandas.plotting._core.PlotAccessor
pop(self, item)
pop
Return item and drop from frame.
pow(self, other[, level, fill_value, axis])
pow
Return Exponential power of series and other, element-wise (binary operator pow).
prod(self[, axis, skipna, level, …])
prod
Return the product of the values for the requested axis.
product(self[, axis, skipna, level, …])
product
quantile(self[, q, interpolation])
quantile
Return value at the given quantile.
radd(self, other[, level, fill_value, axis])
radd
Return Addition of series and other, element-wise (binary operator radd).
rank(self[, axis])
rank
Compute numerical data ranks (1 through n) along axis.
ravel(self[, order])
ravel
Return the flattened underlying data as an ndarray.
rdiv(self, other[, level, fill_value, axis])
rdiv
Return Floating division of series and other, element-wise (binary operator rtruediv).
rdivmod(self, other[, level, fill_value, axis])
rdivmod
Return Integer division and modulo of series and other, element-wise (binary operator rdivmod).
reindex(self[, index])
reindex
Conform Series to new index with optional filling logic.
reindex_like(self, other, method, …[, …])
reindex_like
Return an object with matching indices as other object.
rename(self[, index, axis, copy, inplace, …])
rename
Alter Series index labels or name.
rename_axis(self[, mapper, index, columns, …])
rename_axis
Set the name of the axis for the index or columns.
reorder_levels(self, order)
reorder_levels
Rearrange index levels using input order.
repeat(self, repeats[, axis])
repeat
Repeat elements of a Series.
replace(self[, to_replace, value, inplace, …])
replace
Replace values given in to_replace with value.
resample(self, rule[, axis, loffset, on, level])
resample
Resample time-series data.
reset_index(self[, level, drop, name, inplace])
reset_index
Generate a new DataFrame or Series with the index reset.
rfloordiv(self, other[, level, fill_value, axis])
rfloordiv
Return Integer division of series and other, element-wise (binary operator rfloordiv).
rmod(self, other[, level, fill_value, axis])
rmod
Return Modulo of series and other, element-wise (binary operator rmod).
rmul(self, other[, level, fill_value, axis])
rmul
Return Multiplication of series and other, element-wise (binary operator rmul).
rolling(self, window[, min_periods, center, …])
rolling
Provide rolling window calculations.
round(self[, decimals])
round
Round each value in a Series to the given number of decimals.
rpow(self, other[, level, fill_value, axis])
rpow
Return Exponential power of series and other, element-wise (binary operator rpow).
rsub(self, other[, level, fill_value, axis])
rsub
Return Subtraction of series and other, element-wise (binary operator rsub).
rtruediv(self, other[, level, fill_value, axis])
rtruediv
sample(self[, n, frac, replace, weights, …])
sample
Return a random sample of items from an axis of object.
searchsorted(self, value[, side, sorter])
searchsorted
Find indices where elements should be inserted to maintain order.
sem(self[, axis, skipna, level, ddof, …])
sem
Return unbiased standard error of the mean over requested axis.
set_axis(self, labels[, axis, inplace])
set_axis
Assign desired index to given axis.
shift(self[, periods, freq, axis, fill_value])
shift
Shift index by desired number of periods with an optional time freq.
skew(self[, axis, skipna, level, numeric_only])
skew
Return unbiased skew over requested axis.
slice_shift(self, periods[, axis])
slice_shift
Equivalent to shift without copying data.
sort_index(self[, axis, level, ascending, …])
sort_index
Sort Series by index labels.
sort_values(self[, axis, ascending])
sort_values
Sort by the values.
sparse
alias of pandas.core.arrays.sparse.accessor.SparseAccessor
pandas.core.arrays.sparse.accessor.SparseAccessor
squeeze(self[, axis])
squeeze
Squeeze 1 dimensional axis objects into scalars.
std(self[, axis, skipna, level, ddof, …])
std
Return sample standard deviation over requested axis.
str
alias of pandas.core.strings.StringMethods
pandas.core.strings.StringMethods
sub(self, other[, level, fill_value, axis])
sub
Return Subtraction of series and other, element-wise (binary operator sub).
subtract(self, other[, level, fill_value, axis])
subtract
sum(self[, axis, skipna, level, …])
sum
Return the sum of the values for the requested axis.
swapaxes(self, axis1, axis2[, copy])
swapaxes
Interchange axes and swap values axes appropriately.
swaplevel(self[, i, j, copy])
swaplevel
Swap levels i and j in a MultiIndex.
MultiIndex
tail(self, n)
tail
Return the last n rows.
take(self, indices[, axis, is_copy])
take
Return the elements in the given positional indices along an axis.
to_clipboard(self, excel, sep, …)
to_clipboard
Copy object to the system clipboard.
to_csv(self, path_or_buf, pathlib.Path, …)
to_csv
Write object to a comma-separated values (csv) file.
to_dict(self[, into])
to_dict
Convert Series to {label -> value} dict or dict-like object.
to_excel(self, excel_writer[, sheet_name, …])
to_excel
Write object to an Excel sheet.
to_frame(self[, name])
to_frame
Convert Series to DataFrame.
to_hdf(self, path_or_buf, key, mode, …[, …])
to_hdf
Write the contained data to an HDF5 file using HDFStore.
to_json(self, path_or_buf, pathlib.Path, …)
to_json
Convert the object to a JSON string.
to_latex(self[, buf, columns, col_space, …])
to_latex
Render object to a LaTeX tabular, longtable, or nested table/tabular.
to_list(self)
to_list
Return a list of the values.
to_markdown(self, buf, NoneType] = None, …)
to_markdown
Print Series in Markdown-friendly format.
to_numpy(self[, dtype, copy, na_value])
to_numpy
A NumPy ndarray representing the values in this Series or Index.
to_period(self[, freq, copy])
to_period
Convert Series from DatetimeIndex to PeriodIndex with desired frequency (inferred from index if not passed).
to_pickle(self, path, compression, …)
to_pickle
Pickle (serialize) object to file.
to_sql(self, name, con[, schema, …])
to_sql
Write records stored in a DataFrame to a SQL database.
to_string(self[, buf, na_rep, float_format, …])
to_string
Render a string representation of the Series.
to_timestamp(self[, freq, how, copy])
to_timestamp
Cast to DatetimeIndex of Timestamps, at beginning of period.
to_xarray(self)
to_xarray
Return an xarray object from the pandas object.
tolist(self)
tolist
transform(self, func[, axis])
transform
Call func on self producing a Series with transformed values.
func
transpose(self, \*args, \*\*kwargs)
transpose
truediv(self, other[, level, fill_value, axis])
truediv
truncate(self[, before, after, axis])
truncate
Truncate a Series or DataFrame before and after some index value.
tshift(self, periods[, freq, axis])
tshift
Shift the time index, using the index’s frequency if available.
tz_convert(self, tz[, axis, level])
tz_convert
Convert tz-aware axis to target time zone.
tz_localize(self, tz[, axis, level, ambiguous])
tz_localize
Localize tz-naive index of a Series or DataFrame to target time zone.
unique(self)
unique
Return unique values of Series object.
unstack(self[, level, fill_value])
unstack
Unstack, a.k.a.
update(self, other)
update
Modify Series in place using non-NA values from passed Series.
value_counts(self[, normalize, sort, …])
value_counts
Return a Series containing counts of unique values.
var(self[, axis, skipna, level, ddof, …])
var
Return unbiased variance over requested axis.
view(self[, dtype])
view
Create a new view of the Series.
where(self, cond[, other, inplace, axis, …])
where
Replace values where the condition is False.
xs(self, key[, axis, level])
xs
Return cross-section from the Series/DataFrame.


MBServiceManager Class Reference
| Inherits from | NSObject |
| Conforms to | MBSingleton |
| Declared in | MBServiceManager.h |
Overview
This class manages the lifecycle of various runtime services that adopt the
MBService
protocol.
Services are shared resources that need to be available any time at least one client is using the service.
Attaching & detaching services
Rather than starting and stopping services directly, clients coordinate
through the MBServiceManager
singleton, which provides an interface allowing
users to attach to and detach from various services.
Attaching a service signals that a client of that service wishes to keep it
running. The first time a client attaches a service, the MBServiceManager
will start the service. As long as there is at least one client attached to
a service, the service will remain running.
Once a client no longer requires the use of a service, it should detach. When
the last remaining client detaches, the MBServiceManager
will stop the
service.
Note that some services do not support being stopped, in which case detaching has no effect.
Services within MBML
Within MBML, the <AttachService>
and <DetachService>
listener
actions can be used. See MBAttachServiceAction
and MBDetachServiceAction
for additional information.
Warning: You must not create instances of this class yourself; this class
is a singleton. Call the instance
class method (declared by the
MBSingleton
protocol) to acquire the singleton instance.
Tasks
Acquiring service instances
Attaching to services
Detaching from services
Querying the status of services
Instance Methods
attachCountForService:
Determines the current attach count of a service.
- (NSUInteger)attachCountForService:(MBService *)service
Parameters
- service
The service whose attach count is sought.
Return Value
The service’s current attach count.
Declared In
MBServiceManager.h
attachToService:
Attaches to the specified service, incrementing its attach count by one.
- (void)attachToService:(MBService *)service
Parameters
- service
The service being attached.
Discussion
Services with an attach count greater than zero will be kept running by the
MBServiceManager
.
Note: When the service is no longer needed, the caller should be sure to detach the service.
Declared In
MBServiceManager.h
attachToServiceClass:
Attaches to the service with the given class name, incrementing its attach count by one.
- (id)attachToServiceClass:(Class)serviceClass
Parameters
- serviceClass
The implementing class of the service class to attach.
Return Value
If successful, the MBService
instance that was attached. Will
return nil
on failure.
Discussion
Services with an attach count greater than zero will be kept running by the
MBServiceManager
.
Note: When the service is no longer needed, the caller should be sure to detach the service.
Declared In
MBServiceManager.h
attachToServiceClassNamed:
Attaches to the service with the given class name, incrementing its attach count by one.
- (id)attachToServiceClassNamed:(NSString *)serviceClassName
Parameters
- serviceClassName
The name of the service class to attach.
Return Value
If successful, the MBService
instance that was attached. Will
return nil
on failure.
Discussion
Services with an attach count greater than zero will be kept running by the
MBServiceManager
.
Note: When the service is no longer needed, the caller should be sure to detach the service.
Declared In
MBServiceManager.h
detachFromService:
Detaches from the specified service, decrementing its attach count by one.
- (void)detachFromService:(MBService *)service
Parameters
- service
The service being attached.
Discussion
Services are stopped by the MBServiceManager
when their attach count
decreases to zero.
Note: Code should only detach from a service if it previously attached to the same service.
Declared In
MBServiceManager.h
detachFromServiceClass:
Detaches from the service with the given class name, decrementing its attach count by one.
- (void)detachFromServiceClass:(Class)serviceClass
Parameters
- serviceClass
The implementing class of the service class to detach.
Return Value
If successful, the MBService
instance that was attached. Will
return nil
on failure.
Discussion
Services are stopped by the MBServiceManager
when their attach count
decreases to zero.
Note: Code should only detach from a service if it previously attached to the same service. Detach requests are ignored if the service isn’t already running.
Declared In
MBServiceManager.h
detachFromServiceClassNamed:
Detaches from the service with the given class name, decrementing its attach count by one.
- (void)detachFromServiceClassNamed:(NSString *)serviceClassName
Parameters
- serviceClassName
The name of the service class to attach.
Return Value
If successful, the MBService
instance that was attached. Will
return nil
on failure.
Discussion
Services are stopped by the MBServiceManager
when their attach count
decreases to zero.
Note: Code should only detach from a service if it previously attached to the same service. Detach requests are ignored if the service isn’t already running.
Declared In
MBServiceManager.h
isServiceRunning:
Determines whether the specified service is running.
- (BOOL)isServiceRunning:(MBService *)service
Parameters
- service
The service whose status is sought.
Return Value
YES
if the service is running; NO
if it is not.
Discussion
A service will remain running as long as its attach count is greater than zero.
Declared In
MBServiceManager.h
serviceForClass:
Returns the singleton instance of the service implemented the specified class.
- (id)serviceForClass:(Class)serviceClass
Parameters
- serviceClass
The
Class
implementing theMBService
protocol.
Return Value
A pointer to the singleton MBService
of the specified class,
or nil
if there isn’t one.
Declared In
MBServiceManager.h
serviceForClassName:
Returns the singleton instance of the service implemented by the class with the specified name.
- (id)serviceForClassName:(NSString *)serviceClassName
Parameters
- serviceClassName
The name of the class implementing the
MBService
protocol.
Return Value
A pointer to the singleton MBService
with the specified class
name, or nil
if there isn’t one.
Declared In
MBServiceManager.h


WeatherApp
WeatherApp
YOUR CURRENT LOCAL WEATHER IN
{{location.city}}, {{location.state}}
{{weather.description}}
{{weather.temp}} ° F


We define emotional intelligence as the ability to Recognise , understand and manage our own emotions whilst being able to recognise, understand and influence the emotions of those around you. Basically the skill of being aware of how our emotions influence and drive our behavioural traits.
After taking a quick EQ test I can se that I have an above average EQ at the starting point here but have some serious room for growth in some areas. My test results show that I have I high EQ when it comes to dealing with others, and being able to interpret others feelings and how my actions will impact on them. But, this shows that my own emotions and thoughts can be a big roadblock and that how I handle pressured situations needs to be worked on.
It has been proven that emotions trump thoughts. So the ability to stay calm and collected under pressure and not letting your emotions cloud your judgement is a huge skill to have, and one that I need to work on.
For points 1, 4 and 5 I feel like I’m well equipped and adaptable in these situations and skills. I have struggled with number 2 as after identifying my emotions and thoughts I’ve found it hard to get them inline and to a point where I can do my best work and at the maximum output level. I often get up in my own head and become self deprecating when I think I’m failing or not at a high enough standard of work. And motivation is something that I need lots and lots of work on. I often find it hard to self motivate for personal reasons ie making something that I’m proud of and makes me feel like I’ve accomplished something. Most of the time when I’ve put my best work out is because there have been external rewards like praise and money, I really want to get to a place where I’m doing things for myself and push myself to be the best I can for me and not because I think it needs to be done to please others.
The difference between IQ and EQ is that your IQ is just a standardised test use to measure what they believe your base intelligence rate is. This measures what your supposed intelligence is and relates to how well you can learn new things, pass tests and assignments etc without taking into account any emotions or feelings, so in short your base intelligence. Where as your EQ is the ability to understand yours and the people around youse emotions and thoughts and the ability to use that knowledge to drive the behavioural traits that we use everyday.
This is important to know the difference as I’m sure most people, including myself, before learning what EQ is would place your IQ and ability to actually learn and complete work at the highest regard and the most important thing that employers look for in a candidate. But through this research Ive learnt that’s not the case at all, which was very surprising and new information to me. Research shows that EQ is worth up to 80% of how well we can manage ourselves and work to the best of our ability . IQ can help us resolve issues or make calculations as to how we would approach and complete the work , but your EQ takes it once step further and allows us to be more openly creative as it is touching on your emotions and thoughts as well, and not just your standard ability to attack something.
I believe that EQ is more important by a landline then IQ as it expands on what your base intelligence is and allows us to really dissect and understand the problems we are having not only with the work we are doing, but with how this work is affecting our mentality. Also once you have reach adolescence its rare, if not non existent, that our IQs will change, whereas our EQ can be developed and increased over time and has no limit to what you can achieve.


| Path: | README |
| Last Update: | Mon Jan 10 23:51:14 -0800 2011 |
Supporting Rake version: 0.8.6
This package contains Rake, a simple ruby build program with capabilities similar to make.
Rake has the following features:
Download and install rake with the following.
gem install rake
You can download the source tarball of the latest version of Rake from
Extract the tarball and run
% ruby install.rb
from its distribution directory.
First, you must write a "Rakefile" file which contains the build rules. Here‘s a simple example:
task :default => [:test] task :test do ruby "test/unittest.rb" end
This Rakefile has two tasks:
Running the "rake" command without any options will cause it to run the "default" task in the Rakefile:
% ls Rakefile test/ % rake (in /home/some_user/Projects/rake) ruby test/unittest.rb ....unit test output here...
Type "rake —help" for all available options.
Rake is currently hosted at github. The github web page is github.com/jimweirich/rake. The public git clone URL is
If you wish to run the unit and functional tests that come with Rake:
rake # If you have a version of rake installed ruby -Ilib bin/rake # If you do not have a version of rake installed.
Bugs, features requests and other issues can be logged at
You will need an account to before you can post issues. Register at onestepback.org/redmine/account/register. Or you can send me an email (at jim dot weirich at gmail dot com)
Rake is a late entry in the make replacement field. Here are links to other projects with similar (and not so similar) goals.
Rake is available under an MIT-style license.
Copyright (c) 2003, 2004 Jim Weirich
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The Rake homepage is rake.rubyforge.org. You can find the Rake RubyForge page at rubyforge.org/projects/rake.
Feel free to submit commits or feature requests. If you send a patch, remember to update the corresponding unit tests. If fact, I prefer new feature to be submitted in the form of new unit tests.
For other information, feel free to ask on the ruby-talk mailing list (which is mirrored to comp.lang.ruby) or contact jim dot weirich at gmail.com.


Open mHealth Web Visualizations
This library renders visualizations of Open mHealth structured data in a web browser. It currently generates line charts and bar charts, with default settings included for the following measures:
- body weight (
body_weight
) - heart rate (
heart_rate
) - blood pressure (
systolic_blood_pressure
,diastolic_blood_pressure
) - physical activity (
step_count
,minutes_moderate_activity
)
The charting functions of the library are built on top of Plottable.js, which is built on top of D3. You can play with a live demo here.
You can learn more about the design principles behind these visualisations on our website, and learn about how design became implementation on our blog.
Installation
If you'd like to use the charts in your own project, simply pull the library into your project as a Bower dependency using
bower install omh-web-visualizations
If you don't have Bower, install it using
npm install -g bower
. If you don't have npm, you'll need to install Node.js.
If you'd like to experiment with the library using a demonstration page,
- Clone this repository
git clone https://github.com/openmhealth/web-visualizations.git
- Navigate to the cloned repository and install the project's dependencies with Bower
bower install
- Install the development dependencies using npm
npm install
- Make your changes
- To publish your changes to the
dist
directory, run gulpgulp
- To see the results on the example page
gulp watch
and open http://localhost:8080/examples/charts.html in your browser
- If you leave it running, gulp will watch for changes in the background and update
dist
as needed
Building a chart
You can create a chart by calling:
chart = new OMHWebVisualizations.Chart( data, element, measureList, settings );
The arguments passed to the constructor are:
| Argument | Description |
|---|---|
| data | An array of Open mHealth structured data points. |
| element | A dom element, such as a <div> containing an <svg> node. This can also be a D3 selection. For backward compatibility, it can also be a jQuery object, however this functionality is deprecated and may be removed in a future release. |
| measureList | A string containing a comma-separated list of Open mHealth measures to display. |
| settings | An object with settings for the chart. If this is omitted or if an empty object is passed in, the function uses the default settings explained below. |
The easiest way to create data points to pass to the data
parameter is to use our sample data generator. You can either use a pre-generated data set, or download the generator itself to create data that fits your needs.
A chart is considered initialized if the constructor OMHWebVisualizations.Chart(...);
completes. If, for example, no measures specified in the measureList
argument can be found in the data
argument, the constructor will not complete, and the chart will not be initialized. Initialization state is tracked by the Chart.initialized
property, which can be used as a condition for rendering a chart or requesting its components after construction.
Configuring a chart
The settings
parameter of the OMHWebVisualization.Chart(...)
function is divided into two sections. The interface
section controls the UI of the chart as a whole. The measures
section contains settings that customize charts for specific measures.
The following object is the default settings object used by the OMHWebVisualization.Chart(...)
function when its settings
parameter is empty. You can specify any subset of these settings to override them:
{
'interface': {
'toolbar': {
'visible': true,
'timespanButtons': { 'visible': true },
'zoomButtons': { 'visible': true },
'navigationButtons': { 'visible': true }
},
'tooltips': {
'visible': true,
'timeFormat': 'M/D/YY, h:mma',
'decimalPlaces': 0,
'contentFormatter': OMHWebVisualizations.ChartStyles.formatters.defaultTooltip.bind( this ),
'grouped': true
},
'panZoomUsingMouse': {
'enabled': true,
'hint':{
'visible': true
}
},
'axes': {
'yAxis': {
'visible': true
},
'xAxis': {
'visible': true
}
}
},
'measures': {
'body_weight': {
'data': {
'yValuePath': 'body.body_weight.value',
},
'yAxis': {
'range': { 'min': 0, 'max': 100 },
'label': 'kg'
}
},
'heart_rate': {
'data':{
'yValuePath': 'body.heart_rate.value'
},
'yAxis': {
'range': { 'min': 30, 'max': 150 },
'label': 'bpm'
}
},
'step_count': {
'data': {
'yValuePath': 'body.step_count',
'xValueQuantization': {
'period': OMHWebVisualizations.DataParser.QUANTIZE_DAY,
'aggregator': parent.DataParser.aggregators.sum
}
},
'chart': {
'type': 'clustered_bar',
'daysShownOnTimeline': { 'min': 7, 'max': 90 }
},
'legend': {
'seriesName': 'Steps',
'seriesColor': '#eeeeee'
},
'yAxis': {
'range': { 'min': 0, 'max': 1500 },
'label': 'Steps'
}
},
'minutes_moderate_activity': {
'data':{
'yValuePath': 'body.minutes_moderate_activity.value',
'xValueQuantization': {
'period': OMHWebVisualizations.DataParser.QUANTIZE_DAY,
'aggregator': parent.DataParser.aggregators.sum
}
},
'chart': {
'type': 'clustered_bar',
'daysShownOnTimeline': { 'min': 7, 'max': 90 }
},
'legend': {
'seriesName': 'Minutes of moderate activity',
'seriesColor': '#4a90e2'
},
'yAxis':{
'range': { 'min': 0, 'max': 300 },
'label': 'Minutes'
}
},
'systolic_blood_pressure': {
'data': {
'yValuePath': 'body.systolic_blood_pressure.value'
},
'yAxis': {
'range': { 'min': 30, 'max': 200 },
'label': 'mmHg'
}
},
'diastolic_blood_pressure': {
'data': {
'yValuePath': 'body.diastolic_blood_pressure.value'
},
'yAxis':{
'range': { 'min': 30, 'max': 200 },
'label': 'mmHg'
}
}
}
}
For example, using these default settings to graph heart_rate
data will generate a chart that looks like this:
If you look carefully at the default settings object, you'll also notice that some measure settings have more properties than others. When a property is missing, the following default settings are assumed.
{
'yAxis': {
'range': { 'min': 0, 'max': 100 },
'label': 'Units',
},
'data':{
'xValueQuantization': {
'period': OMHWebVisualizations.DataParser.QUANTIZE_NONE,
'aggregator': OMHWebVisualizations.DataParser.aggregators.mean,
}
},
'chart': {
'type': 'line',
'daysShownOnTimeline': { 'min': 1, 'max': 1000 },
},
'legend': {
'seriesName': 'Series',
'seriesColor': '#4a90e2'
}
}
Additionally, default styles are provided for rendering each measure's plot.
To override the defaults, specify the new interface settings and styles in the settings
object passed to OMHWebVisualization.Chart(...)
.
For example, if you would like to graph heart_rate
data with a blue line and no tooltips, you'd use the following settings
object:
{
'interface': {
'tooltips': {
'visible': false,
}
},
'measures': {
'heart_rate': {
'chart': {
'styles': [
{
'name': 'blue-lines',
'plotType': 'Line',
'attributes': {
'stroke': '#4a90e2'
}
}
]
}
}
}
}
This will produce a chart that looks something like the following screenshot:
Automatic Y Axis Ranging
The Y axis range can be set to adapt to the data by setting the yAxis.range
property of a measure's settings to undefined
e.g. settings.measures.heart_rate.yAxis.range = undefined
_
Quantization
Quantization reduces the dataset's size by summarizing each group of points that fall into a common time range, or "bucket," with a single point that represents their bucket's range.
Currently, quantized data point values within each subsequent quantization bucket are averaged (mean) for most measures and summed for step_count
and minutes_moderate_activity
.
If you wish to configure the timeQuantizationLevel
for a measure, you will need the following constants:
OMHWebVisualizations.DataParser.QUANTIZE_YEAR
OMHWebVisualizations.DataParser.QUANTIZE_MONTH
OMHWebVisualizations.DataParser.QUANTIZE_DAY
OMHWebVisualizations.DataParser.QUANTIZE_HOUR
OMHWebVisualizations.DataParser.QUANTIZE_MINUTE
OMHWebVisualizations.DataParser.QUANTIZE_SECOND
OMHWebVisualizations.DataParser.QUANTIZE_MILLISECOND
OMHWebVisualizations.DataParser.QUANTIZE_NONE
These can be used in an settings
object as follows:
// an example of some settings for a distance chart
var settings = {
'measures': {
'distance': {
'seriesName': 'Distance',
'yAxis':{
'range': { 'min': 0, 'max': 200000 },
'label': 'm'
},
'data': {
'yValuePath': 'body.distance.value',
'xValueQuantization': {
'period': OMHWebVisualizations.DataParser.QUANTIZE_MONTH,
'aggregator': OMHWebVisualizations.DataParser.aggregators.sum
}
},
'chart': {
'type': 'clustered_bar',
'daysShownOnTimeline': { 'min': 90, 'max': 365 }
}
}
}
};
Here is a chart of some unquantized data:
As an example, the data will be quantized by hour using OMHWebVisualizations.DataParser.QUANTIZE_HOUR
. Thus all points in the hour from 04:00 to 05:00 will be summed into a single point. The unquantized points in this hour are shown below in a zoomed-in view of the minutes just before 05:00:
And here is a chart of the same data quantized by hour. The points before 05:00 in the zoomed-in view above have been accumulated into a single point, shown in dark blue:
Gridlines
Horizontal lines (e.g. representing safe thresholds) can be drawn on charts. Each line is labelled with a custom label or its y
value, unless that label will overlap another gridline's label. Here are two maximum gridlines with default appearance:
Gridlines can be specified as gridlines
in the chart
property of a measure in the measures
section of the configuration settings
object, eg: settings.measures.heart_rate.chart.gridlines
. It should be an array of gridline objects, as detailed below:
| Property | Description |
|---|---|
| value | The y value of the horizontal line. |
| label | The label to show above the line (optional). If no label is specified, the value property is used. |
| visible | Whether to show the gridline (optional). |
On a chart of type line
, a labeled horizontal rule is drawn all the way across the chart for each gridline. Gridlines are not drawn on bar charts.
To create a new gridline without using the settings
object, you can alternatively call chart.addGridline()
before the chart is rendered.
Extending default appearances with ChartStyles
To change the colors and other visual attributes of points on the chart, you can specify a chart.styles
section in each measure in the measures
block of the configuration settings
object.
You can alternatively customize the chart's ChartStyles
object before rendering the chart by calling chart.getStylesForPlot()
and chart.setStylesForPlot()
. The Plottable plot you wish to affect must be passed into these functions.
Below is an example of what can be done. See examples/charts.html
for code samples.
var dangerValue = 120;
// these filter functions are used to determine which
// points will be rendered with the style's attributes
var dangerFilter = function ( d ) {
// a filter function takes a datum and returns a boolean
return d.y >= dangerValue;
};
var dangerSettings = {
'measures': {
'systolic_blood_pressure':{
'chart':{
'styles': {
'name': 'danger',
'plotType': 'Scatter',
'filters': [ dangerFilter ],
'attributes': {
'fill': 'red'
'stroke': 'red'
}
}
}
}
}
}
//builds a new plottable chart with the danger settings
chart = new OMHWebVisualizations.Chart( data, element, measureList, dangerSettings );
if ( chart.initialized ) {
chart.renderTo( element.select( "svg" ).node() );
}
The code above changes the color of points above the gridline:
You could also add a range in the chart that is colored differently:
Tooltips
Tooltips can be enabled, disabled, and configured using the userInterface.tooltips
property of the settings
object passed into the constructor (see 'Configuring a Chart'). The properties of userInterface.tooltips
are explained in the following table:
| Property | Description |
|---|---|
| enabled | Whether to show tooltips when the user hovers on a point. |
| timeFormat | A string representing the time format for the time field in the tooltip. |
| decimalPlaces | The number of decimal places to show the datum's y value with by default when rendering a data point value in the tooltip. |
| contentFormatter | A function that takes a D3 datum and returns a string. Used to render the datum in the tooltip. If undefined, the datum's y value will be truncated by a default formatter to the number of decimal places specified in the decimalPlaces parameter and converted to a string. |
| grouped | Whether to show a single common tooltip for data points of different measure types that are found together in the body of a single data point. |
In the following chart, we see a tooltip that has been colored light orange to match its point in the diastolic blood pressure series:
And here is the CSS used for the tooltip:
.omh-tooltip.above .value {
color: #e8ac4e;
}
You can restrict the tooltip colors to only diastolic_blood_pressure
as follows:
.omh-tooltip.diastolic_blood_pressure.b .value {
color: #e8ac4e;
}
In the same chart, we see a tooltip that has been colored red to match its point below the gridline in the systolic blood pressure series:
Here is the CSS used for the systolic tooltip:
.omh-tooltip.systolic_blood_pressure.below .value {
color:#ce5050;
}
And again, in the same chart, we see a tooltip that has been colored light orange to match its point in the first measure:
The point shown above has matched a chart style named warning
:
In order for this to work, the corresponding chart style's name
property is set to warning
as follows:
{
'name': 'warning',
'filters': chartStyles.filters.above( 120 ),
'attributes':{ 'fill': '#e8ac4e', 'stroke': '#745628' }
}
(where chartStyles is an instance of OMHWebVisualizations.ChartStyles)
And here is the CSS used to style tooltip
.omh-tooltip.warning .value {
color:#e8ac4e;
}
See examples/charts.html
for js and css code samples.
Rendering a chart
Once a chart has been constructed, it must be rendered to an <svg>
element. Render the chart by calling:
chart.renderTo( svgElement );
Further customizations
After a chart has been constructed, but before it is rendered, you may choose to get the Plottable components and make further modifications that are not afforded by the constructor's settings
parameter. Get the Plottable components, modify them, and render the chart as follows:
// construct chart here...
if (chart.initialized) {
var components = chart.getComponents();
// modify plottable components here...
chart.renderTo( svgElement );
}
To see an example of component modification, check out the examples/charts.html
file in this repository.
Destroying a chart
In order to free up resources or re-use an element for a new chart, the chart and all of its interactive features can be destroyed with:
chart.destroy();
Contributing
To contribute to this repository
- Open an issue to let us know what you're going to work on.
- This lets us give you feedback early and lets us put you in touch with people who can help.
- Fork this repository.
- Create your feature branch from the
develop
branch. - Commit and push your changes to your fork.
- Create a pull request.


Enter Enhancement Details
| RequestId | RequestNumber | CONumber | Status | Action | Description | Track | Category | Priority | Impact | Change Type | Assignee | Open Date | Functional Tester |
|---|
| RequestId | RequestNumber | CONumber | Status | Action | Description | Track | Category | Priority | Impact | Change Type | Assignee | Open Date | Functional Tester |
|---|


8:00am Issue bot circuits online. Wakes up lonely. Please explain love to issue bot. Needs input...
9:15am Issue bot breaks door handle oh no! Issue bot does not know its own strength. Issue bot ashamed.
10:00am Issue bot scheduled oil change.
3:15pm Rewire Electrical Outlets in High School Classroom.
4:30pm Issue Bot Lithium-Ion Battery charge, initiate nap sequence on quad couches.


The Best App for Truckers, Designed by Truckers
Breaker Breaker One Nine (BB19) was born out of a keen interest among truckers to improve the information and tools available to professionals on the road. Travis Pope, a professional trucker for 23 years, led a team of dedicated truckers in determining the best set of tools to address the needs of the average trucking professional. What resulted is our target for BB19. While Travis directs the professional trucking team, others work in the back office to get the technology, customer service and marketing to fall into place. All in all, Breaker Breaker 1-9, Inc. is dedicated to making the best app for all truckers
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut optio velit inventore, expedita quo laboriosam possimus ea consequatur vitae, doloribus consequuntur ex. Nemo assumenda laborum vel, labore ut velit dignissimos.
Sir Robert
Sir Robert's background includes more than a decade of tech entrepreneurship and software design and development. An experienced CEO and CTO, he has co-founded several tech startups, focusing on data, analytics, and consumer services.
Travis Pope
Our Lead professional Trucker, Travis is a no-nonsense manager and leads the Professional Team for BB19. Travis has been on the road as an OTR trucker for over 25 years.
Name Goes Here
Sir Robert's background includes more than a decade of tech entrepreneurship and software design and development. An experienced CEO and CTO, he has co-founded several tech startups, focusing on data, analytics, and consumer services.


JavaScriptGenerator generates blocks of JavaScript code that allow you to change the content and presentation of multiple DOM elements. Use this in your Ajax response bodies, either in a


{% extends "base.html" %} {% block content %}
A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.