On this page you can change your associated email address, password, or both; to change only one of the items, leave the other field blank.
$def with (email, username) $:{TITLE("Edit Password and Email Address", "Settings", "/control")}
On this page you can change your associated email address, password, or both; to change only one of the items, leave the other field blank.


YamlConfigurationLoader
class YamlConfigurationLoader : ConfigurationLoader
An implementation of ConfigurationLoader that loads configuration from a YAML file.


?6
7
8
9
10
The
New
York
copyright
reserved
botanical
Garden
'J7yx
CO
1&*
do
L.
Catasus
Diciembre
2003
THE-MEWs.YORK
BOTANICAL
GARDEN
EXPLORATION
OF
CUBA
Province
of
Pinar
del
Rio
Lacuna
jovero
to
Las
Martinas
//À>^
DO
New
York
Botanical
Garden
itoMSbi
j,
A.
Shafer,
Collector
December
is,
19lt
1604561
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


NAB files reference against Khawaja Anwar Majeed
by Press ReleaseThe National Accountability Bureau (NAB) on Tuesday filed a reference against Khawaja Anwar Majeed in the fake bank account case which involves misappropriation of sugar cane growers subsidy granted in 2014-15.
The bureau, in the reference, stated that the owners of sugar mills are involved in “corruption and corrupt practices and misappropriation of government subsidy worth millions of rupees.”
“The Government of Sindh through Cane Commissioner Sindh paid an amount of Rs3.9 billion to different sugar mills for onward payment to genuine sugar cane growers as subsidy on account of supply of sugar cane for the season 2014-15,” the press release stated.
An investigation was conducted on the eight sugar mills of Omni Group which is owned by Anwar Majeed and his four sons Khawaja Abdul Ghani Majeed, Khawaja Nimr Majeed, Khawaja Mustafa Zulqarnain Majeed and Khawaja Ali Kamal Majeed.
The investigation revealed that “out of Rs728.18 million subsidy granted to the eight sugar mills of Omni Group, an amount of Rs346 million has been misappropriated,” by the accused of their benefit and enjoyment in connivance with their senior employees by showing their “low paid” staff as sugarcane growers.
NAB gave the approval to file reference against Majeed in October. He is one of the accused in the multi-billion dollar money laundering case that also involves Pakistan Peoples Party top leaders.
The decision was taken in NAB Executive Board Meeting (EBM), chaired by Justice Javed Iqbal. The board approved initiating a total of three references and three inquiries as it referred some inquiries to the relevant forum for further proceedings and action.


{% extends "base.html" %} {% block title %}
Medieval catalogues > BENEDICTINES: THE SHORTER CATALOGUES > Ramsey > Catalogue roll, late 14th cent.
{% endif %}505 identified entries found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


A number of implementations of MPI-1 provide a startup command for MPI programs
that is of the form
mpirun <mpirun arguments> <program> <program arguments>Separating the command to start the program from the program itself provides flexibility, particularly for network and heterogeneous implementations. For example, the startup script need not run on one of the machines that will be executing the MPI program itself.
Having a standard startup mechanism also extends the portability of MPI programs one step further, to the command lines and scripts that manage them. For example, a validation suite script that runs hundreds of programs can be a portable script if it is written using such a standard starup mechanism. In order that the ``standard'' command not be confused with existing practice, which is not standard and not portable among implementations, instead of mpirun MPI specifies mpiexec.
While a standardized startup mechanism improves the usability of MPI, the range of environments is so diverse (e.g., there may not even be a command line interface) that MPI cannot mandate such a mechanism. Instead, MPI specifies an mpiexec startup command and recommends but does not require it, as advice to implementors. However, if an implementation does provide a command called mpiexec, it must be of the form described below.
It is suggested that
mpiexec -n <numprocs> <program>be at least one way to start <program> with an initial MPI_COMM_WORLD whose group contains <numprocs> processes. Other arguments to mpiexec may be implementation-dependent.
This is advice to implementors, rather than a required part of MPI-2. It is not suggested that this be the only way to start MPI programs. If an implementation does provide a command called mpiexec, however, it must be of the form described here.
Advice
to implementors.
Implementors, if they do provide a special startup command for MPI programs, are advised to give it the following form. The syntax is chosen in order that mpiexec be able to be viewed as a command-line version of MPI_COMM_SPAWN (See Section Reserved Keys ).
Analogous to MPI_COMM_SPAWN, we have
mpiexec -n <maxprocs> -soft < > -host < > -arch < > -wdir < > -path < > -file < > ... <command line>for the case where a single command line for the application program and its arguments will suffice. See Section Reserved Keys for the meanings of these arguments. For the case corresponding to MPI_COMM_SPAWN_MULTIPLE there are two possible formats:
Form A:
mpiexec { <above arguments> } : { ... } : { ... } : ... : { ... }As with MPI_COMM_SPAWN, all the arguments are optional. (Even the -n x argument is optional; the default is implementation dependent. It might be 1, it might be taken from an environment variable, or it might be specified at compile time.) The names and meanings of the arguments are taken from the keys in the info argument to MPI_COMM_SPAWN. There may be other, implementation-dependent arguments as well.
Note that Form A, though convenient to type, prevents colons from being program arguments. Therefore an alternate, file-based form is allowed:
Form B:
mpiexec -configfile <filename>where the lines of <filename> are of the form separated by the colons in Form A. Lines beginning with ` #' are comments, and lines may be continued by terminating the partial line with `\'.
Example
Start 16 instances of myprog on the current or default machine:
mpiexec -n 16 myprog
mpiexec -n 10 -host ferrari myprog
mpiexec myprog infile1 : myprog infile2 : myprog infile3
mpiexec -n 5 -arch sun ocean : -n 10 -arch rs6000 atmosIt is assumed that the implementation in this case has a method for choosing hosts of the appropriate type. Their ranks are in the order specified.
mpiexec -configfile myfilewhere myfile contains
-n 5 -arch sun ocean -n 10 -arch rs6000 atmos
( End of advice to implementors.)


LCH Colour Picker [LCH_name(lightness, chroma, hue)]
Advanced
Saved colors
[lightness]
[chroma]
[hue]
[alpha]
[if(isLCH_within_sRGB(lightness, chroma, hue), 'within sRGB', if(isLCH_within_P3(lightness, chroma, hue), 'P3', 'outside P3'))]


Notebooks
Story: Words and sentences: Mkuan at the Breakwater
Words and sentences: Mkuan at the Breakwater
Title
Words and sentences: Mkuan at the Breakwater
Collection
Summary
The prisoner Mkuan provides Lloyd with words and sentences at the Breakwater Convict Station in April 1880, including details of his personal history. He also provides the names for parts of the body, plants and animals, and other objects and elements from daily life.
Comments
1) p.10 293 opp: see At Breakwater, 17 April 1880 and The |xam names of some of Mkuan's relations, 2) p.10 306v: a reference to Mkuan's description of figures in one of J.M. Orpen's copies of rock paintings, 3) p.10 308v: some words from the Sephati-speaking people; some words by |uma, !nanni and Tamme, 4) p.10 312v: some details of poisons 'entered by mistake' and provided by 'the boys from the country to the northeast of Damaraland' (the !kun contributors), 5) This story is found in Book XV-1
Contributors
Date
17 April 1880 (started)
Categories
Words and sentences, History (personal)
Keywords
words and sentences (given by Mkuan at the Breakwater Convict Station) , vocabulary (|xam) , vocabulary (given by Mkuan at the Breakwater Convict Station) , Breakwater Convict Station (words and sentences given by Mkuan there) , Mkuan (his personal history) , Mkuan (at the Breakwater) , personal history (of Mkuan) , personal history (Mkuan at the Breakwater Convict Station)
Story Pages
10 293-10 317


You must provide a name
You must provide a type
You must provide a valid subtype
A address is required


BI on the lookout at airports for OFWs bound for Iraq
by Jun RamirezBureau of Immigration (BI) Commissioner Jaime Morente ordered yesterday immigration officers at the Ninoy Aquino International Airport (NAIA) and other ports to rigidly screen Filipinos traveling to Dubai to stop them from going and working in Iraq which is already the subject of a deployment ban due to the peace and order problem there.
Morente said syndicates are using Dubai as a jump-off point to transport their victims to the war-ravaged Iraq.
The BI chief issued the order after the Department of Foreign Affairs (DFA) alerted the bureau about the new modus operandi of syndicates to circumvent the deployment ban.
Morente said syndicates are using social media to recruit their victims promising them high salaries.
“0nline advertisements are falsely claiming that the deployment ban to Iraq has been lifted,” he said
“Immigration officers are directed to exercise extra vigilance in clearing the departure of Filipino travelers bound for Dubai, particularly those who are departing as tourists, and make sure that they are not going to other destinations in order to work,” Morente added
The BI chief also instructed airport officers to monitor names of several OFWs furnished by the DFA , who were reported to be headed for Baghdad to work as restaurant waiters.
There are also reports that Iraq-bound OFWs have reached their destination via Malaysia and Thailand.


The organization welcomes you, dark child. Here, you can plan and execute your nefarious deeds and earn organization credit that you can use to redeem for tools of destruction. You should first Register if you havent already. After all, this is an organization. I will see you inside, fledgling.


With a kiosk at your workplace, it's like having your own boot store! There's no reason to have limited, expensive shoe trucks come to your business when we can ship you a temporary or permanent kiosk which offers more sizes, limits down time to order, and provides an easy ordering option for all of your employees.
We offer two types of ordering kiosks that you can put at your workplace to have employees place orders: temporary and permanent. Features of these on-site kiosks include:
The first type of on-site kiosk is a temporary solution for those interested in getting employees in protective footwear quickly at once. Later orders can be placed on any computer, phone, or tablet as usual. This solution is available at no additional cost to you You will receive an orange box with the kiosk inside. Take it out, set it up, and have your employees start ordering today. Important: Save the orange box to return the kiosk when you are done using it.
Permanent kiosks offer a permanent on-site ordering solution for your employees to ensure they have a place to order their protective footwear. The permanent kiosks can be provided free of charge to qualifying accounts. Contact us to see if you qualify for a permanent on-site kiosk.
If you think of any other questions you may have with our kiosks please feel free to reach out to us so one of our safety footwear program experts can assist you.
If you think of any other questions you may have with our kiosks please feel free to reach out to us so one of our safety footwear program experts can assist you.


Members
checkForDevSetting
Check for any Dev Settings that are added by developer
- Source:
filterKeys
Filters our keys passed in from loadDevSettings
- Source:
loadDefaultSettings
Loads the default settings and tries to attach any custom dev settings to the process.env object.
- Source:
loadDevConnectionSettings
Attach the config settings defined by the dev to the process object.
- Source:
loadDevSettings
Loads the devSettings onto process.env object if we read the seetings successfully. Rejects with error < Promise >
- Source:


History · Log · Pageviews (All languages · Redirects) · Reasonator (Wikidata)
General statistics
Authorship
Top editors
Year counts
Month counts
(Semi-)automated edits
Assessments
General statistics [show] [hide]
| ID | 54679407 |
| Wikidata ID | Q34328146 · 27 sitelinks |
| Page size | 28,075 bytes |
| Total edits | 1,580 |
| Editors | 295 |
| Assessment | Start |
| Page watchers | 155 |
| Pageviews (60 days) | 54,650 |
| Minor edits | 257 · (16.3%) |
| IP edits | 163 · (10.3%) |
| Bot edits | 38 · (2.4%) |
| (Semi-)automated edits | 203 |
| Reverted edits | 178 |
| First edit | 2017-07-28 20:38 • Ethanbas • 1,696 |
| Latest edit | 2021-11-17 15:26 • Munmula • 7 |
| Max. text added | 2017-08-05 21:38 • Vipul • 5,755 |
| Max. text deleted | 2017-12-18 12:33 • Ladislav Mecir • -6,799 |
| Edits | |
| Average time between edits (days) | 1 day |
| Average edits per user | 5.4 |
| Average edits per day | 1.3 |
| Average edits per month | 30.6 |
| Average edits per year | 366.9 |
| Edits in the past 24 hours | 1 |
| Edits in the past 7 days | 1 |
| Edits in the past 30 days | 4 |
| Edits in the past 365 days | 104 |
| Edits made by the top 10% of editors | 1,008 · (63.8%) |
| Links | |
| Links to this page | 496 |
| Redirects | 4 |
| Links from this page | 227 |
| External links | 56 |
| Categories | 16 |
| Files | 10 |
| Templates | 119 |
| Prose | |
| Characters | 8,636 |
| Words | 1,418 |
| Sections | 8 |
| References | 65 |
| Unique references | 42 |
Accounts
·
1,417 (89.7%)
IPs
·
163 (10.3%)
Major edits
·
1,323 (83.7%)
Minor edits
·
257 (16.3%)
Top 10%
·
1,008 (63.8%)
Bottom 90%
·
572 (36.2%)
Authorship
[show]
[hide]
Powered by Wikiwho
Loading...
Top editors
[show]
[hide]
Editor statistics over the history of the article.
Top 10 by edits
Ladislav Mecir
·
447 (44.3%)
Jtbobwaysf
·
334 (33.1%)
Retimuko
·
44 (4.4%)
Shiftchange
·
43 (4.3%)
Redgolpe
·
34 (3.4%)
Jytdog
·
28 (2.8%)
Penbat
·
26 (2.6%)
Mesquka
·
18 (1.8%)
Laurencedeclan
·
18 (1.8%)
Smallbones
·
16 (1.6%)
Top 10 by added text
(approximate)
Jtbobwaysf
·
55,999 (37.4%)
Shiftchange
·
31,782 (21.2%)
Ladislav Mecir
·
30,790 (20.6%)
Vipul
·
12,504 (8.4%)
Gandrewstone
·
4,167 (2.8%)
Ethanbas
·
4,021 (2.7%)
Retimuko
·
3,100 (2.1%)
AnomieBOT
·
2,772 (1.9%)
Huckfinne
·
2,489 (1.7%)
Jytdog
·
2,096 (1.4%)
1 Average time between edits (days)
2 Added text is any positive addition that wasn't reverted
2 Added text is any positive addition that wasn't reverted
Bot list
| Rank | Bot | Links | Edits | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 1 | AnomieBOT | Top Edits · Edit Counter | 25 | ||||||
| 2 | Citation bot | Top Edits · Edit Counter | 3 | ||||||
| 3 | Monkbot | Top Edits · Edit Counter | 2 | ||||||
| 4 | Cydebot | Top Edits · Edit Counter | 1 | ||||||
| 5 | DumbBOT | Top Edits · Edit Counter | 1 | ||||||
| 6 | SporkBot | Top Edits · Edit Counter | 1 | ||||||
| 7 | MusikBot | Top Edits · Edit Counter | 1 | ||||||
| 8 | Bender the Bot | Top Edits · Edit Counter | 1 | ||||||
| 9 | MinusBot | Top Edits · Edit Counter | 1 | ||||||
| 10 | KolbertBot | Top Edits · Edit Counter | 1 | ||||||
| 1 other |
All data is approximate.
Year counts [show] [hide]
All edits
Minor edits
IP edits
Size
| Year | Edits | IPs | IPs % | Minor edits | Minor edits % | Log events |
|---|---|---|---|---|---|---|
| 2017 | 338 | 52 | 15.4% | 58 | 17.2% | 1 deletion |
| 2018 | 931 | 111 | 11.9% | 160 | 17.2% | 5 protections, 1 deletion |
| 2019 | 188 | 0 | 0% | 19 | 10.1% | |
| 2020 | 35 | 0 | 0% | 10 | 28.6% | |
| 2021 | 88 | 0 | 0% | 10 | 11.4% |
Month counts [show] [hide]
| Month | Edits | IPs | IPs % | Minor edits | Minor edits % | Edits · Minor edits · IPs |
|---|---|---|---|---|---|---|
| 2017-07 | 39 | 1 | 2.6% | 2 | 5.1% | |
| 2017-08 | 68 | 7 | 10.3% | 10 | 14.7% | |
| 2017-09 | 8 | 3 | 37.5% | 1 | 12.5% | |
| 2017-10 | 17 | 3 | 17.6% | 4 | 23.5% | |
| 2017-11 | 58 | 12 | 20.7% | 11 | 19% | |
| 2017-12 | 148 | 26 | 17.6% | 30 | 20.3% | |
| 2018-01 | 145 | 35 | 24.1% | 20 | 13.8% | |
| 2018-02 | 88 | 18 | 20.5% | 15 | 17% | |
| 2018-03 | 130 | 27 | 20.8% | 20 | 15.4% | |
| 2018-04 | 254 | 27 | 10.6% | 39 | 15.4% | |
| 2018-05 | 91 | 4 | 4.4% | 20 | 22% | |
| 2018-06 | 142 | 0 | 0% | 34 | 23.9% | |
| 2018-07 | 20 | 0 | 0% | 3 | 15% | |
| 2018-08 | 22 | 0 | 0% | 4 | 18.2% | |
| 2018-09 | 4 | 0 | 0% | 2 | 50% | |
| 2018-10 | 1 | 0 | 0% | 1 | 100% | |
| 2018-11 | 20 | 0 | 0% | 0 | 0% | |
| 2018-12 | 14 | 0 | 0% | 2 | 14.3% | |
| 2019-01 | 2 | 0 | 0% | 0 | 0% | |
| 2019-02 | 0 | 0 | 0% | 0 | 0% | |
| 2019-03 | 0 | 0 | 0% | 0 | 0% | |
| 2019-04 | 23 | 0 | 0% | 4 | 17.4% | |
| 2019-05 | 23 | 0 | 0% | 0 | 0% | |
| 2019-06 | 8 | 0 | 0% | 0 | 0% | |
| 2019-07 | 45 | 0 | 0% | 4 | 8.9% | |
| 2019-08 | 37 | 0 | 0% | 7 | 18.9% | |
| 2019-09 | 2 | 0 | 0% | 1 | 50% | |
| 2019-10 | 15 | 0 | 0% | 0 | 0% | |
| 2019-11 | 18 | 0 | 0% | 2 | 11.1% | |
| 2019-12 | 15 | 0 | 0% | 1 | 6.7% | |
| 2020-01 | 3 | 0 | 0% | 0 | 0% | |
| 2020-02 | 2 | 0 | 0% | 0 | 0% | |
| 2020-03 | 2 | 0 | 0% | 2 | 100% | |
| 2020-04 | 2 | 0 | 0% | 0 | 0% | |
| 2020-05 | 0 | 0 | 0% | 0 | 0% | |
| 2020-06 | 0 | 0 | 0% | 0 | 0% | |
| 2020-07 | 0 | 0 | 0% | 0 | 0% | |
| 2020-08 | 5 | 0 | 0% | 5 | 100% | |
| 2020-09 | 1 | 0 | 0% | 0 | 0% | |
| 2020-10 | 3 | 0 | 0% | 0 | 0% | |
| 2020-11 | 16 | 0 | 0% | 2 | 12.5% | |
| 2020-12 | 1 | 0 | 0% | 1 | 100% | |
| 2021-01 | 11 | 0 | 0% | 2 | 18.2% | |
| 2021-02 | 0 | 0 | 0% | 0 | 0% | |
| 2021-03 | 29 | 0 | 0% | 3 | 10.3% | |
| 2021-04 | 4 | 0 | 0% | 0 | 0% | |
| 2021-05 | 19 | 0 | 0% | 2 | 10.5% | |
| 2021-06 | 15 | 0 | 0% | 1 | 6.7% | |
| 2021-07 | 5 | 0 | 0% | 0 | 0% | |
| 2021-08 | 0 | 0 | 0% | 0 | 0% | |
| 2021-09 | 1 | 0 | 0% | 0 | 0% | |
| 2021-10 | 3 | 0 | 0% | 2 | 66.7% | |
| 2021-11 | 1 | 0 | 0% | 0 | 0% |
(Semi-)automated edits [show] [hide]
| Tool | Edits |
|---|---|
| Undo | 157 |
| Huggle | 11 |
| Twinkle | 10 |
| Generic rollback | 7 |
| Admin actions | 5 |
| HotCat | 4 |
| Ohconfucius script | 2 |
| AutoWikiBrowser | 2 |
| Shortdesc helper | 1 |
| ProveIt | 1 |
| Advisor.js | 1 |
| reFill | 1 |
| Dab solver | 1 |
Assessments [show] [hide]
All times are in UTC.


New Collector assumes charge
by Special Correspondent THANJAVURM. Govinda Rao, a 2011 batch IAS officer, assumed charge as the Collector of Thanjavur district on Monday.
The new Collector, a native of Vizianagram district in Andhra Pradesh, had earlier served as Sub-Collector at Kumbakonam during the mahamagam period before being posted as Deputy Commissioner (Works),Greater Chennai Corporation.
On his first day at office in Thanjavur as the District Collector, he received 601 petitions from the general public at the grievance meeting held at the Collectorate. He also distributed assistances to the beneficiaries of various welfare schemes implemented by the State government on the occasion.
His predecessor A. Annadurai has been transferred and posted as Collector, Villupuram district.


Monday-Saturday: 10am - 8pm
Sunday: 11am - 6pm
Stachowski's Market
1425 28th St NW, Washington, DC 20007
(corner of P & 28th)


|
Figure 1
|
Contour map showing sampling locations (circles) of Heteroth ... |
|
Figure 2
|
Morphological overview of Heterotheca brandegeei ( A) in its ... |
|
Figure 3
|
Cumulative proportion of Heterotheca brandegeei seeds germin ... |
|
Figure 4
|
Total biomass responses of Heterotheca brandegeei to warming ... |
|
Figure 5
|
Leaf-level responses to warming and drought treatments inclu ... |
|
Figure 6
|
Total % mortality of Heterotheca brandegeei individuals in e ... |


News story
Blackpool is one of the first 6 areas across the country that will receive additional funding to identify ways of driving social mobility.
Education Secretary Justine Greening visited Blackpool on Thursday 1 December, one of the first 6 opportunity areas aimed at boosting education, skills and opportunity in social mobility ‘coldspots’.
Ms Greening first visited the South Shore Fire Station to meet young people who are benefitting from the Prince’s Trust Team programme, which helps unemployed 16- to 25-year-olds to get into work or training. The 12-week scheme gives young people - many of whom have had mental health issues or been in care - personalised support, including work placements, careers guidance and qualifications in personal development and employment.
The Education Secretary then went on to meet staff and students of Blackpool and The Fylde College ( B&FC ) - one of the UK’s leading further education colleges. The college places strong emphasis on those aspects of education which are needed to secure high-value employment for its students and drive the economy.
More than 1,800 businesses choose B&FC as their training delivery partner including Ford, Morrisons and BAE Systems. B&FC recently won the Queen’s Anniversary Prize for its work with employers to co-create bespoke professional higher and degree apprenticeship skill solutions and is a champion of the social mobility agenda.
The Education Secretary had a tour of the college’s Fleetwood Nautical Campus and was shown the extensive, higher technical facilities on the nautical site, including a professional nautical simulation facility and training pool.
Education Secretary Justine Greening said:
We want to make Britain a country that works for everyone, not just the privileged few. That means widening horizons and creating opportunities for young people across the country who otherwise might not get the chance to make the most of their talents.
Connecting schools and local employers can not only improve social mobility but also has potential benefits to the local economy. Carolyn Fairbairn, Director-General of the Confederation of British Industry ( CBI ), accompanied the Secretary of State at B&FC . The CBI says that improving educational outcomes for young people is a key driver for boosting local productivity.
Carolyn Fairbairn, CBI Director-General, said:
The CBI ’s latest report, ‘Unlocking regional growth’, shows that investing in education and skills is vital if we are to increase productivity and lay the foundations for prosperity and long-term economic growth.
Our education and skills system must equip all young people for their future - regardless of background or where they live.
Alongside Blackpool, the first 6 opportunity areas will be West Somerset, Norwich, Scarborough, Derby and Oldham, with a number of further areas to be announced in the coming months. All areas will benefit from additional funding - a share of £60 million - and from tailored plans to form local partnerships with early years providers, schools, colleges, universities, businesses, charities and local authorities in order to help all children have the opportunity to reach their full potential, no matter what their background.
Published: 5 December 2016


XPathLastFunction Class
Function:
number
last
()
Implements the
last
function.
Definition
Line
250
of
System.XPath/XPathFunction.cm
Inheritance
Constructors & Destructor
public
XPathLastFunction
()
Member Functions
public
override
UniquePtr
<
XPathObject
>
Evaluate
(
XPathContext
& context,
List
<
XPathObject
*>& arguments)
Constructor& Destructor Details
XPathLastFunction Constructor
public
XPathLastFunction()
Definition
Line
252
of
System.XPath/XPathFunction.cm
Member Function Details
Evaluate Member Function
public
override
UniquePtr
<
XPathObject
> Evaluate(
XPathContext
& context,
List
<
XPathObject
*>& arguments)
Definition
Line
256
of
System.XPath/XPathFunction.cm


Thank you! We'll be in touch with you shortly.
Fall Anime 2017
Case Closed
(Detective Conan)
| Number of Viewers |
| Current |
High |
Low |
| 500,000 |
600,000 |
400,000 |
Shinichi Kudo is a brilliant high school detective who is easily able to solve any
case. Things do not stay normal for long, though. While on a date with his girlfriend,
Ran,
Shinichi leaves when he spots some shady figures doing illegal activities. While
investigating them,
he is attacked from behind and force-fed a poison that was supposed to kill him.
However, he wakes up
to find himself shrunk. Will he be able to catch the criminals who did this to him,
given his new situation?
Code: Realize - Guardian of Rebirth
(Code Realize - Sousei No Himegimi)
| Number of Viewers |
| Current |
High |
Low |
| 225,000 |
230,000 |
220,000 |
Cardia is a beautiful girl whose body contains a poison that causes anything and
everything she touches to melt. Because of this, she has always been alone and has
no memories of
her early life. Things take a drastic turn, though, when she meets Arsene Lupin,
a famous thief
who promises to introduce her to a world of warmth, happiness, and answers.
Inuyasha
(Inuyasha)
| Number of Viewers |
| Current |
High |
Low |
| 800,000 |
900,000 |
600,000 |
Kagome is a seemingly average schoolgirl who lives her life normally until her
fifteenth birthday, when she is pulled down her family's well by a great demon and
transported
fifty years into the past. There, she meets the arrogant but strong Inuyasha, a half-demon
who,
like many other demons, seeks the sacred jewel for power. However, when Kagome accidentally
shatters the
Sacred Jewel and causes it's pieces to scatter all over Japan, Inuyasha and Kagome
are forced to
work together to collect all the shards before it gets into the hands of evil.
Spirited Away
(Kamikakushi)
| Number of Viewers |
| Current |
High |
Low |
| 900,000 |
1,000,000 |
600,000 |
10-year-old Chihiro and her family are moving to a new town. During the trip, though,
her father takes a wrong turn, and her family follows a path that leads to another
world. When a
witch turns her parents into pigs, it is up to Chihiro to find a way to save them
before it's too
late. So begins her journey of self-growth and discovery in this classic directed
by Hayao Miyazaki
The Ancient Magus Bride
(Mahoutsukai no Yome)
| Number of Viewers |
| Current |
High |
Low |
| 125,680 |
126,000 |
124,000 |
Chise Hatori is a 16-year-old girl who has lived a life marked by tragedy.
When she finally decides to give up on any hope of happiness, a mysterious magus
appears before her and
decides to take her in as an apprentice. This magus is far from an ordinary human.
Introducing Chise to
the world of magic, Chise is in for an adventure and life that she never dreamed.
The Stigma of the Wind
(Kaze no Stigma)
| Number of Viewers |
| Current |
High |
Low |
| 95,780 |
100,000 |
90,000 |
Kazuma Kannagi was banished from his family for his inability to possess or control
fire powers. Four years later, he returns with a new name: Kazuma Yagami. He is now
more powerful
than ever because he has since developed and perfected wind magic. Unfortunately
for him, though,
many Kannagi family members have been mysteriously murdered by another wind magic
user, and the
blame is falling on him. He now has to work with Ayano Kannagi, a hot-headed fire
user who is
set to be the next head of the Kannagi family, to clear his name. What happens when
fire and
wind collide?
Yona of the Dawn
(Akatsuki no Yona)
| Number of Viewers |
| Current |
High |
Low |
| 280,000 |
300,000 |
250,000 |
Princess Yona is the beautiful and majestic daughter of
King Il, and is next in line for the throne of Kouka Kingdom. She has
and gets everything she wants, and will soon marry Soo Won, the love of her life.
All is well until the night of her sixteenth birthday, when she walks in to find
her father dead, killed by her supposed "lover". Depressed and shocked, she is
chased out of her own castle along with her bodyguard, Hak. Little does she know
that her true journey is about to begin, where she is tasked to fulfill her duty
of becoming the ruler of the four great dragons of Kouka.


library(tidyverse)
library(cowplot)
library(broom)
library(modelr)
library(viridis)
library(lubridate)
library(knitr)
#knitr::opts_knit$set(root.dir = '/Users/scottsaunders/git/labwork/IDA/12_10_18')
knitr::opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE, echo = TRUE, message=FALSE, warning=FALSE, fig.align="center")
theme_1 <- function () {
theme_classic() %+replace%
theme(
axis.text = element_text( size=12),
axis.title=element_text(size=14),
strip.text = element_text(size = 14),
strip.background = element_rect(color='white'),
legend.title=element_text(size=14),
legend.text=element_text(size=12),
legend.text.align=0,
panel.grid.major = element_line(color='grey',size=0.1)
)
}
theme_set(theme_1())
#source("../../tools/echem_processing_tools.R")
Our goal is to understand something about how PYO moves electrons through the biofilm. One way to think abou this electron transfer is how fast PYO effectively transports electrons through the biofilm. This concept can be expressed as the apparent diffusion coefficient. For the IDA, the peak current between the two electrodes is described by eq. 1.
\[I_{gc} = nFSCD_{ap} \tag{eq. 1}\] \(n,F,\text{and } S\) are constants (# of electrons per reaction, Faraday’s constant, and a geometric factor for the IDA). \(C\) is concentration and \(D_{ap}\) is the apparent diffusion coefficient.
Eq. 1 is equivalent to fick’s first law (eq. 2), describing an equilibrium flux driven by a concentration gradient. In this case the concentration gradient is between the two IDA electrodes, where we assume that (at peak current) all of the PYO is instantly reduced at the generator and oxidized at the collector.
\[J = -D \frac{dC}{dx} \tag{eq. 2}\] So, if we want to learn about \(D_{ap}\) it makes sense to vary concentration and monitor current, \(I_{gc}\). Lenny’s original idea was that if PYO mediated electron transfer was an “electron hopping” type mechanism as described for fixed redox molecules, then \(D_{ap}\) would not be a constant, but instead it would vary with concentration. If we were to plot \(I_{gc}\) vs. \(C\) we would expect a curved relationship if \(D_{ap}\) varied.
example_data <- tibble(concentrations = seq(0, 100, 10)) %>%
mutate(constant = concentrations * 2) %>% mutate(electron_hopping = concentrations *
0.04 * concentrations) %>% gather(key = model, value = I_gc,
constant, electron_hopping)
ggplot(example_data, aes(x = concentrations, y = I_gc, color = model)) +
geom_point() + geom_line() + labs(title = "Mock Data")
So we tried to do the actual experiment by incubating an IDA biofilm with increasing concentrations of PYO. The earliest attempt at this was done by Matt with a WT biofilm. We switched to using a \(\Delta phz\) strain to get rid of any residual phenazine signal.
It became clear that we had no idea if the signal was coming from the biofilm or the solution.
We can run these experiments, and quantify GC curves, but we need to try transferring the biofilm to a fresh reactor to be confident we are measuring biofilm associated PYO.


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import views.html.layouts.unifiedLayout @import views.html.helpers.injected.ContinueButton @import uk.gov.hmrc.govukfrontend.views.html.components.FormWithCSRF @import uk.gov.hmrc.govukfrontend.views.html.components.implicits._ @import views.html.components._ @import _root_.implicits.ImplicitDateFormatterImpl @import models.incomeSourceDetails.viewmodels.CheckCeaseBusinessDetailsViewModel @import exceptions.MissingFieldException @this( mainTemplate: unifiedLayout, h1: h1, p: p, formWithCSRF:FormWithCSRF, continueButton: ContinueButton, implicitDateFormatter: ImplicitDateFormatterImpl ) @(sources: CheckCeaseBusinessDetailsViewModel, isAgent: Boolean = false, origin: Option[String] = None)(implicit request: auth.MtdItUser[_], messages: Messages) @getChangeHref = @{ if(isAgent){ controllers.incomeSources.cease.routes.BusinessEndDateController.showAgent(sources.incomeSourceId).url }else{ controllers.incomeSources.cease.routes.BusinessEndDateController.show(sources.incomeSourceId).url } } @getSubmitHref = @{ if(isAgent){ controllers.incomeSources.cease.routes.CheckCeaseBusinessDetailsController.submitAgent() }else{ controllers.incomeSources.cease.routes.CheckCeaseBusinessDetailsController.submit() } } @import implicitDateFormatter.longDate @heading = @{"incomeSources.ceaseBusiness.checkDetails.heading"} @content= { @p(classes = "govuk-caption-l", id = Some("caption")){@messages("incomeSources.ceaseBusiness.checkDetails.soloTrader")} @h1(msg = heading , classes = "govuk-heading-l", id=Some("heading"))


Defines a two-dimensional vector.
More...
#include <Vector2.h>
|
| | Vector2 () |
| | Constructs and initializes a two-dimensional vector instance to (0.0, 0.0). More...
|
| |
| | Vector2 (float x, float y) |
| | Constructs and initializes a two-dimensional vector from the specified xy-coordinates. More...
|
| |
| bool | operator!= (const Vector2 &vector) const |
| | Tests this two-dimensional vector for inequality with the specified two-dimensional vector. More...
|
| |
| float | operator* (const Vector2 &vector) const |
| | Computes the dot product of this two-dimensional vector with the specified two-dimensional vector. More...
|
| |
| Vector2 | operator* (float s) const |
| | Computes the scalar multiplication of this two-dimensional vector with the specified scalar value. More...
|
| |
| Vector2 & | operator*= (float s) |
| | Sets the value of this two-dimensional vector to the scalar multiplication of itself with the specified scalar value. More...
|
| |
| Vector2 | operator+ (const Vector2 &vector) const |
| | Computes the vector sum of this two-dimensional vector with the specified two-dimensional vector. More...
|
| |
| Vector2 & | operator+= (const Vector2 &vector) |
| | Sets the value of this two-dimensional vector to the vector sum of itself with the specified two-dimensional vector. More...
|
| |
| Vector2 | operator- () const |
| | Computes the negation of this two-dimensional vector. More...
|
| |
| Vector2 | operator- (const Vector2 &vector) const |
| | Computes the vector difference of this two-dimensional vector with the specified two-dimensional vector. More...
|
| |
| Vector2 & | operator-= (const Vector2 &vector) |
| | Sets the value of this two-dimensional vector to the vector difference of itself with the specified two-dimensional vector. More...
|
| |
| Vector2 | operator/ (float s) const |
| | Computes the scalar division of this two-dimensional vector with the specified scalar value. More...
|
| |
| Vector2 & | operator/= (float s) |
| | Sets the value of this two-dimensional vector to the scalar division of itself with the specified scalar value. More...
|
| |
| bool | operator== (const Vector2 &vector) const |
| | Tests this two-dimensional vector for equality with the specified two-dimensional vector. More...
|
| |
| float | x () const |
| | Returns the x-coordinate of this two-dimensional vector. More...
|
| |
| float | y () const |
| | Returns the y-coordinate of this two-dimensional vector. More...
|
| |
|
(Note that these are not member functions.)
|
| float | abs (const Vector2 &vector) |
| | Computes the length of a specified two-dimensional vector. More...
|
| |
| float | absSq (const Vector2 &vector) |
| | Computes the squared length of a specified two-dimensional vector. More...
|
| |
| float | det (const Vector2 &vector1, const Vector2 &vector2) |
| | Computes the determinant of a two-dimensional square matrix with rows consisting of the specified two-dimensional vectors. More...
|
| |
| Vector2 | normalize (const Vector2 &vector) |
| | Computes the normalization of the specified two-dimensional vector. More...
|
| |
| Vector2 | operator* (float s, const Vector2 &vector) |
| | Computes the scalar multiplication of the specified two-dimensional vector with the specified scalar value. More...
|
| |
| std::ostream & | operator<< (std::ostream &os, const Vector2 &vector) |
| | Inserts the specified two-dimensional vector into the specified output stream. More...
|
| |
Defines a two-dimensional vector.
| RVO::Vector2::Vector2 |
( |
| ) |
|
|
inline |
Constructs and initializes a two-dimensional vector instance to (0.0, 0.0).
| RVO::Vector2::Vector2 |
( |
float |
x, |
|
|
float |
y |
|
) |
| |
|
inline |
Constructs and initializes a two-dimensional vector from the specified xy-coordinates.
- Parameters
-
| x | The x-coordinate of the two-dimensional vector. |
| y | The y-coordinate of the two-dimensional vector. |
| bool RVO::Vector2::operator!= |
( |
const Vector2 & |
vector | ) |
const |
|
inline |
Tests this two-dimensional vector for inequality with the specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector with which to test for inequality. |
- Returns
- True if the two-dimensional vectors are not equal.
| float RVO::Vector2::operator* |
( |
const Vector2 & |
vector | ) |
const |
|
inline |
Computes the dot product of this two-dimensional vector with the specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector with which the dot product should be computed. |
- Returns
- The dot product of this two-dimensional vector with a specified two-dimensional vector.
| Vector2 RVO::Vector2::operator* |
( |
float |
s | ) |
const |
|
inline |
Computes the scalar multiplication of this two-dimensional vector with the specified scalar value.
- Parameters
-
| s | The scalar value with which the scalar multiplication should be computed. |
- Returns
- The scalar multiplication of this two-dimensional vector with a specified scalar value.
| Vector2& RVO::Vector2::operator*= |
( |
float |
s | ) |
|
|
inline |
Sets the value of this two-dimensional vector to the scalar multiplication of itself with the specified scalar value.
- Parameters
-
| s | The scalar value with which the scalar multiplication should be computed. |
- Returns
- A reference to this two-dimensional vector.
Computes the vector sum of this two-dimensional vector with the specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector with which the vector sum should be computed. |
- Returns
- The vector sum of this two-dimensional vector with a specified two-dimensional vector.
Sets the value of this two-dimensional vector to the vector sum of itself with the specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector with which the vector sum should be computed. |
- Returns
- A reference to this two-dimensional vector.
| Vector2 RVO::Vector2::operator- |
( |
| ) |
const |
|
inline |
Computes the negation of this two-dimensional vector.
- Returns
- The negation of this two-dimensional vector.
Computes the vector difference of this two-dimensional vector with the specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector with which the vector difference should be computed. |
- Returns
- The vector difference of this two-dimensional vector with a specified two-dimensional vector.
Sets the value of this two-dimensional vector to the vector difference of itself with the specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector with which the vector difference should be computed. |
- Returns
- A reference to this two-dimensional vector.
| Vector2 RVO::Vector2::operator/ |
( |
float |
s | ) |
const |
|
inline |
Computes the scalar division of this two-dimensional vector with the specified scalar value.
- Parameters
-
| s | The scalar value with which the scalar division should be computed. |
- Returns
- The scalar division of this two-dimensional vector with a specified scalar value.
| Vector2& RVO::Vector2::operator/= |
( |
float |
s | ) |
|
|
inline |
Sets the value of this two-dimensional vector to the scalar division of itself with the specified scalar value.
- Parameters
-
| s | The scalar value with which the scalar division should be computed. |
- Returns
- A reference to this two-dimensional vector.
| bool RVO::Vector2::operator== |
( |
const Vector2 & |
vector | ) |
const |
|
inline |
Tests this two-dimensional vector for equality with the specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector with which to test for equality. |
- Returns
- True if the two-dimensional vectors are equal.
| float RVO::Vector2::x |
( |
| ) |
const |
|
inline |
Returns the x-coordinate of this two-dimensional vector.
- Returns
- The x-coordinate of the two-dimensional vector.
| float RVO::Vector2::y |
( |
| ) |
const |
|
inline |
Returns the y-coordinate of this two-dimensional vector.
- Returns
- The y-coordinate of the two-dimensional vector.
| float abs |
( |
const Vector2 & |
vector | ) |
|
|
related |
Computes the length of a specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector whose length is to be computed. |
- Returns
- The length of the two-dimensional vector.
| float absSq |
( |
const Vector2 & |
vector | ) |
|
|
related |
Computes the squared length of a specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector whose squared length is to be computed. |
- Returns
- The squared length of the two-dimensional vector.
Computes the determinant of a two-dimensional square matrix with rows consisting of the specified two-dimensional vectors.
- Parameters
-
| vector1 | The top row of the two-dimensional square matrix. |
| vector2 | The bottom row of the two-dimensional square matrix. |
- Returns
- The determinant of the two-dimensional square matrix.
Computes the normalization of the specified two-dimensional vector.
- Parameters
-
| vector | The two-dimensional vector whose normalization is to be computed. |
- Returns
- The normalization of the two-dimensional vector.
Computes the scalar multiplication of the specified two-dimensional vector with the specified scalar value.
- Parameters
-
| s | The scalar value with which the scalar multiplication should be computed. |
| vector | The two-dimensional vector with which the scalar multiplication should be computed. |
- Returns
- The scalar multiplication of the two-dimensional vector with the scalar value.
| std::ostream & operator<< |
( |
std::ostream & |
os, |
|
|
const Vector2 & |
vector |
|
) |
| |
|
related |
Inserts the specified two-dimensional vector into the specified output stream.
- Parameters
-
| os | The output stream into which the two-dimensional vector should be inserted. |
| vector | The two-dimensional vector which to insert into the output stream. |
- Returns
- A reference to the output stream.
The documentation for this class was generated from the following file:


FORM IS TEMPORARY, CLASS IS PERMANENT
- Cricket
Find me here:
Facebook Page:
The Player Prediction Network
{% if not name %}
Provide details for analysis below
{% endif %}
{% if name %}
{{ name }}: {{ format1 }} Analysis
Career Average: {{ career_avg }}
Recent form: {{ avglast5 }}
Recent form against {{ opp }}: {{ avglast5withteam }}
{% if place=="Home" %}
Home average: {{ homeavg }}
{% else %}
Away average: {{ awayavg }}
{% endif %} {% if place=="Away" %}
Recent form in {{ opp }}: {{ avgwithteam }}
{% endif %}
{% else %}
Player Name
Player Country
Australia
England
India
Pakistan
New Zealand
South Africa
Sri Lanka
West Indies
Opposition Country
Australia
England
India
Pakistan
New Zealand
South Africa
Sri Lanka
West Indies
Format
ODI
Test
Home/Away
Home
Away
Last 5 Innings Average in Opposition's Home
{% endif %}


--- layout: page ---
my name is Noah Anderson. I was born in Tacoma, WA and raised in many places around the world including Washington, Germany, Italy, and now Colorado. I was inspired to be an actor in the 6th grade and did my first play in the 7th grade. Since then I have performed in several plays and musicals, auditioned and got into a performing arts high school as a major in Theatre, worked professionally on stage and camera, achieved the critics choice of a main stage performance at the State and National Conference levels, and have been accepted into several Theatre/Acting programs across the nation. I aspire to act and perform because not only do I believe that it can most definitely effect and change the world, but it also makes me happy. Performing entails excitement, adrenaline, experience and connection all of which I strive for in my every day life. I believe that through my craft and artistry I can make a difference.


HELLO WORLD, APPLES ARE BAD
HELLO WORLD, PINEAPPLES ARE Good
old fashioned poor separtion of concerns italic for bold
and
for breaks
better separation of concern emphasis, strong and for underline still
indented paragraph of quotation
| A | D |
| A1 | A2 |
| B1 | B2 |
😀
< > &
Ӻ 𠆥


Username:
START
HOST
JOIN
Wii U
3DS
Brawl
Melee
64
Project M
Give this code to other user.
Copy
HOST
Cancel
Paste hosts room ID here.
JOIN
Cancel
Starters
Counterpicks
Leave Room


Contributing guide#
Thanks for taking the time to contribute! MNE-Python is an open-source project sustained mostly by volunteer effort. We welcome contributions from anyone as long as they abide by our Code of Conduct.
There are lots of ways to contribute, such as:
Use the software, and when you find bugs, tell us about them! We can only fix the bugs we know about.
Answer questions on our user forum.
Tell us about parts of the documentation that you find confusing or unclear.
Tell us about things you wish MNE-Python could do, or things it can do but you wish they were easier.
Improve the accessibility of our website.
Fix bugs.
Fix mistakes in our function documentation strings.
Implement new features.
Improve existing tutorials or write new ones.
Contribute to one of the many Python packages that MNE-Python depends on.
To report bugs, request new features, or ask about confusing documentation, it’s usually best to open a new issue on our user forum first; you’ll probably get help fastest that way, and it helps keep our GitHub issue tracker focused on things that we know will require changes to our software (as opposed to problems that can be fixed in the user’s code). We may ultimately ask you to open an issue on GitHub too, but starting on the forum helps us keep things organized. For fastest results, be sure to include information about your operating system and MNE-Python version, and (if applicable) include a reproducible code sample that is as short as possible and ideally uses one of our example datasets.
If you want to fix bugs, add new features, or improve our docstrings/tutorials/website, those kinds of contributions are made through our GitHub repository. The rest of this page explains how to set up your workflow to make contributing via GitHub as easy as possible.
Want an example to work through?
Feel free to just read through the rest of the page, but if you find it easier to “learn by doing”, take a look at our GitHub issues marked “easy”, pick one that looks interesting, and work through it while reading this guide!
Overview of contribution process#
Note
Reminder: all contributors are expected to follow our code of conduct.
Changes to MNE-Python are typically made by forking the MNE-Python repository, making changes to your fork (usually by cloning it to your personal computer, making the changes locally, and then pushing the local changes up to your fork on GitHub), and finally creating a pull request to incorporate your changes back into the shared “upstream” version of the codebase.
In general you’ll be working with three different copies of the MNE-Python
codebase: the official remote copy at https://github.com/mne-tools/mne-python
(usually called upstream
), your remote fork of the upstream repository
(similar URL, but with your username in place of mne-tools
, and usually
called origin
), and the local copy of the codebase on your computer. The
typical contribution process is to:
synchronize your local copy with
upstream
make changes to your local copy
push your changes to
origin
(your remote fork of the upstream)submit a pull request from your fork into
upstream
The sections Basic git commands and GitHub workflow (below) describe this process in more detail.
Setting up your local development environment#
Configuring git#
To get set up for contributing, make sure you have git installed on your local computer:
On Linux, the command
sudo apt install git
is usually sufficient; see the official Linux instructions for more options.On MacOS, download the .dmg installer; Atlassian also provides more detailed instructions and alternatives such as using MacPorts or Homebrew.
On Windows, download and install git for Windows. With Git BASH it provides its own shell that includes many Linux-equivalent command line programs that are useful for development.
Windows 10 also offers the Windows subsystem for Linux that offers similar functionality to git BASH, but has not been widely tested by MNE-Python developers yet and may still pose problems with graphical output (e.g. building the documentation)
Once git is installed, the only absolutely necessary configuration step is identifying yourself and your contact info:
$ git config --global user.name "Your Name"
$ git config --global user.email<EMAIL_ADDRESS>Make sure that the same email address is associated with your GitHub account and with your local git configuration. It is possible to associate multiple emails with a GitHub account, so if you initially set them up with different emails, you can add the local email to the GitHub account.
Sooner or later, git is going to ask you what text editor you want it to use when writing commit messages, so you might as well configure that now too:
$ git config --global core.editor emacs # or vim, or nano, or subl, or...
There are many other ways to customize git’s behavior; see configuring git for more information.
GNU Make#
We use GNU Make to organize commands or short scripts that are often needed
in development. These are stored in files with the name Makefile
.
MNE-Python has two Makefiles, one in the package’s root directory (containing
mainly testing commands) and one in doc/
(containing recipes for
building our documentation pages in different ways).
To check if make is already installed type
$ make
into a terminal and you should see
make: *** No targets specified and no makefile found. Stop.
If you don’t see this or something similar:
For Linux/MacOS, get GNU Make
For Windows, you can install make for git BASH (which comes with git for Windows):
Download
make-newest.version-without-guile-w32-bin.zip
from ezwinportsExtract zip-folder
Copy the contents into
path_to_git\mingw64\
(e.g. by merging the folders with the equivalent ones already inside)For the first time using git BASH, you need to run once (to be able to activate your mnedev-environment):
$ conda init bash
Forking the MNE-Python repository#
Once you have git installed and configured, and before creating your local copy of the codebase, go to the MNE-Python GitHub page and create a fork into your GitHub user account.
This will create a copy of the MNE-Python codebase inside your GitHub user account (this is called “your fork”). Changes you make to MNE-Python will eventually get “pushed” to your fork, and will be incorporated into the official version of MNE-Python (often called the “upstream version”) through a “pull request”. This process will be described in detail below; a summary of how that structure is set up is given here:
Creating the virtual environment#
These instructions will set up a Python environment that is separated from your
system-level Python and any other managed Python environments on your computer.
This lets you switch between different versions of Python (MNE-Python requires
version 3.7 or higher) and also switch between the stable and development
versions of MNE-Python (so you can, for example, use the same computer to
analyze your data with the stable release, and also work with the latest
development version to fix bugs or add new features). Even if you’ve already
followed the installation instructions for the stable
version of MNE-Python, you should now repeat that process to create a new,
separate environment for MNE-Python development (here we’ll give it the name
mnedev
):
$ curl --remote-name https://raw.githubusercontent.com/mne-tools/mne-python/main/environment.yml
$ conda env create --file environment.yml --name mnedev
$ conda activate mnedev
Now you’ll have two MNE-Python environments: mne
(or whatever custom
name you used when installing the stable version of MNE-Python) and mnedev
that we just created. At this point mnedev
also has the stable version of
MNE-Python (that’s what the environment.yml
file installs), but we’re
about to remove the stable version from mnedev
and replace it with the
development version. To do that, we’ll clone the MNE-Python repository from
your remote fork, and also connect the local copy to the upstream
version
of the codebase, so you can stay up-to-date with changes from other
contributors. First, edit these two variables for your situation:
$ GITHUB_USERNAME="insert_your_actual_GitHub_username_here"
$ # pick where to put your local copy of MNE-Python development version:
$ INSTALL_LOCATION="/opt"
Note
On Windows, add set
before the variable names (set GITHUB_USERNAME=...
, etc.).
Then make a local clone of your remote fork (origin
):
$ cd $INSTALL_LOCATION
$ git clone https://github.com/$GITHUB_USERNAME/mne-python.git
Finally, set up a link between your local clone and the official repository
(upstream
):
$ cd mne-python
$ git remote add upstream https://github.com/mne-tools/mne-python.git
$ git fetch --all
Now we’ll remove the stable version of MNE-Python and replace it with the
development version (the clone we just created with git). Make sure you’re in
the correct environment first (conda activate mnedev
), and then do:
$ cd $INSTALL_LOCATION/mne-python # make sure we're in the right folder
$ conda remove --force mne # the --force avoids dependency checking
$ pip install -e .
The command pip install -e .
installs a python module into the current
environment by creating a link to the source code directory (instead of copying
the code to pip’s site_packages
directory, which is what normally
happens). This means that any edits you make to the MNE-Python source code will
be reflected the next time you open a Python interpreter and import mne
(the -e
flag of pip
stands for an “editable” installation).
Finally, we’ll add a few dependencies that are not needed for running MNE-Python, but are needed for locally running our test suite:
$ pip install -r requirements_testing.txt
And for building our documentation:
$ pip install -r requirements_doc.txt
$ conda install graphviz
Note
On Windows, if you installed graphviz using the conda command above but still get an error like this:
WARNING: dot command 'dot' cannot be run (needed for graphviz output), check the graphviz_dot setting
try adding the graphviz folder to path:
$ PATH=$CONDA_PREFIX\\Library\\bin\\graphviz:$PATH
To build documentation, you will also require optipng:
On Linux, use the command
sudo apt install optipng
.On MacOS, optipng can be installed using Homebrew.
On Windows, unzip
optipng.exe
from the optipng for Windows archive into thedoc/
folder. This step is optional for Windows users.
You can also choose to install some optional linters for reStructuredText:
$ conda install -c conda-forge sphinx-autobuild doc8
Basic git commands#
Learning to work with git can take a long time, because it is a complex and powerful tool for managing versions of files across multiple users, each of whom have multiple copies of the codebase. We’ve already seen in the setup commands above a few of the basic git commands useful to an MNE-Python developer:
git clone <URL_OF_REMOTE_REPO>
(make a local copy of a repository)git remote add <NICKNAME_OF_REMOTE> <URL_OF_REMOTE_REPO>
(connect a local copy to an additional remote)git fetch --all
(get the current state of connected remote repos)
Other commands that you will undoubtedly need relate to branches. Branches
represent multiple copies of the codebase within a local clone or remote
repo. Branches are typically used to experiment with new features while still
keeping a clean, working copy of the original codebase that you can switch back
to at any time. The default branch of any repo is called main
, and
it is recommended that you reserve the main
branch to be that clean copy
of the working upstream
codebase. Therefore, if you want to add a new
feature, you should first synchronize your local main
branch with the
upstream
repository, then create a new branch based off of main
and
check it out so that any changes you make will exist on that new branch
(instead of on main
):
$ git checkout main # switch to local main branch
$ git fetch upstream # get the current state of the remote upstream repo
$ git merge upstream/main # synchronize local main branch with remote upstream main branch
$ git checkout -b new-feature-x # create local branch "new-feature-x" and check it out
Now that you’re on a new branch, you can fix a bug or add a new feature, add a test, update the documentation, etc. When you’re done, it’s time to organize your changes into a series of commits. Commits are like snapshots of the repository — actually, more like a description of what has to change to get from the most recent snapshot to the current snapshot.
Git knows that people often work on multiple changes in multiple files all at once, but that ultimately they should separate those changes into sets of related changes that are grouped together based on common goals (so that it’s easier for their colleagues to understand and review the changes). For example, you might want to group all the code changes together in one commit, put new unit tests in another commit, and changes to the documentation in a third commit. Git makes this possible with something called the stage (or staging area). After you’ve made some changes to the codebase, you’ll have what git calls “unstaged changes”, which will show up with the status command:
$ git status # see what state the local copy of the codebase is in
Those unstaged changes can be added to the stage one by one, by either adding a whole file’s worth of changes, or by adding only certain lines interactively:
$ git add mne/some_file.py # add all the changes you made to this file
$ git add mne/some_new_file.py # add a completely new file in its entirety
$ # enter interactive staging mode, to add only portions of a file:
$ git add -p mne/viz/some_other_file.py
Once you’ve collected all the related changes together on the stage, the git
status
command will now refer to them as “changes staged for commit”. You can
commit them to the current branch with the commit command. If you just type
git commit
by itself, git will open the text editor you configured it to
use so that you can write a commit message — a short description of the
changes you’ve grouped together in this commit. You can bypass the text editor
by passing a commit message on the command line with the -m
flag. For
example, if your first commit adds a new feature, your commit message might be:
$ git commit -m 'ENH: adds feature X to the Epochs class'
Once you’ve made the commit, the stage is now empty, and you can repeat the cycle, adding the unit tests and documentation changes:
$ git add mne/tests/some_testing_file.py
$ git commit -m 'add test of new feature X of the Epochs class'
$ git add -p mne/some_file.py mne/viz/some_other_file.py
$ git commit -m 'DOC: update Epochs and BaseEpochs docstrings'
$ git add tutorials/new_tutorial_file.py
$ git commit -m 'DOC: adds new tutorial about feature X'
When you’re done, it’s time to run the test suite to make sure your changes haven’t broken any existing functionality, and to make sure your new test covers the lines of code you’ve added (see Running Tests and Building the documentation, below). Once everything looks good, it’s time to push your changes to your fork:
$ # push local changes to remote branch origin/new-feature-x
$ # (this will create the remote branch if it doesn't already exist)
$ git push origin new-feature-x
Finally, go to the MNE-Python GitHub page, click on the pull requests tab,
click the “new pull request” button, and choose “compare across forks” to
select your new branch (new-feature-x
) as the “head repository”. See the
GitHub help page on creating a PR from a fork for more information about
opening pull requests.
If any of the tests failed before you pushed your changes, try to fix them, then add and commit the changes that fixed the tests, and push to your fork. If you’re stuck and can’t figure out how to fix the tests, go ahead and push your commits to your fork anyway and open a pull request (as described above), then in the pull request you should describe how the tests are failing and ask for advice about how to fix them.
To learn more about git, check out the GitHub help website, the GitHub Learning Lab tutorial series, and the pro git book.
Connecting to GitHub with SSH (optional)#
One easy way to speed up development is to reduce the number of times you have to type your password. SSH (secure shell) allows authentication with pre-shared key pairs. The private half of your key pair is kept secret on your computer, while the public half of your key pair is added to your GitHub account; when you connect to GitHub from your computer, the local git client checks the remote (public) key against your local (private) key, and grants access your account only if the keys fit. GitHub has several help pages that guide you through the process.
Once you have set up GitHub to use SSH authentication, you should change the
addresses of your MNE-Python GitHub remotes, from https://
addresses to
git@
addresses, so that git knows to connect via SSH instead of HTTPS. For
example:
$ git remote -v # show existing remote addresses
$ git remote set-url origin git@github.com:$GITHUB_USERNAME/mne-python.git
$ git remote set-url upstream git@github.com:mne-tools/mne-python.git
MNE-Python coding conventions#
General requirements#
All new functionality must have test coverage#
For example, a new mne.Evoked
method in mne/evoked.py
should
have a corresponding test in mne/tests/test_evoked.py
.
All new functionality must be documented#
This includes thorough docstring descriptions for all public API changes, as well as how-to examples or longer tutorials for major contributions. Docstrings for private functions may be more sparse, but should usually not be omitted.
Avoid API changes when possible#
Changes to the public API (e.g., class/function/method names and signatures)
should not be made lightly, as they can break existing user scripts. Changes to
the API require a deprecation cycle (with warnings) so that users have time to
adapt their code before API changes become default behavior. See the
deprecation section and mne.utils.deprecated
for
instructions. Bug fixes (when something isn’t doing what it says it will do) do
not require a deprecation cycle.
Note that any new API elements should be added to the main reference;
classes, functions, methods, and attributes cannot be cross-referenced unless
they are included in the Python API Reference
(doc/python_reference.rst
).
Deprecate with a decorator or a warning#
MNE-Python has a deprecated()
decorator for classes and
functions that will be removed in a future version:
from mne.utils import deprecated
@deprecated('my_function is deprecated and will be removed in 0.XX; please '
'use my_new_function instead.')
def my_function():
return 'foo'
If you need to deprecate a parameter, use mne.utils.warn()
. For example,
to rename a parameter from old_param
to new_param
you can do something
like this:
from mne.utils import warn
def my_other_function(new_param=None, old_param=None):
if old_param is not None:
depr_message = ('old_param is deprecated and will be replaced by '
'new_param in 0.XX.')
if new_param is None:
new_param = old_param
warn(depr_message, DeprecationWarning)
else:
warn(depr_message + ' Since you passed values for both '
'old_param and new_param, old_param will be ignored.',
DeprecationWarning)
# Do whatever you have to do with new_param
return 'foo'
When deprecating, you should also add corresponding test(s) to the relevant test file(s), to make sure that the warning(s) are being issued in the conditions you expect:
# test deprecation warning for function
with pytest.warns(DeprecationWarning, match='my_function is deprecated'):
my_function()
# test deprecation warning for parameter
with pytest.warns(DeprecationWarning, match='values for both old_param'):
my_other_function(new_param=1, old_param=2)
with pytest.warns(DeprecationWarning, match='old_param is deprecated and'):
my_other_function(old_param=2)
You should also search the codebase for any cases where the deprecated function or parameter are being used internally, and update them immediately (don’t wait to the end of the deprecation cycle to do this). Later, at the end of the deprecation period when the stated release is being prepared:
delete the deprecated functions
remove the deprecated parameters (along with the conditional branches of
my_other_function
that handle the presence ofold_param
)remove the deprecation tests
double-check for any other tests that relied on the deprecated test or parameter, and (if found) update them to use the new function / parameter.
Describe your changes in the changelog#
Include in your changeset a brief description of the change in the
changelog (doc/changes/latest.inc
; this can be
skipped for very minor changes like correcting typos in the documentation).
There are different sections of the changelog for each release, and separate subsections for bugfixes, new features, and changes to the public API. Please be sure to add your entry to the appropriate subsection.
The styling and positioning of the entry depends on whether you are a first-time contributor or have been mentioned in the changelog before.
First-time contributors#
Welcome to MNE-Python! We’re very happy to have you here. 🤗 And to ensure you get proper credit for your work, please add a changelog entry with the following pattern at the top of the respective subsection (bugs, enhancements, etc.):
Bugs
----
- Short description of the changes (:gh:`0000` by :newcontrib:`Firstname Lastname`)
- ...
where 0000
must be replaced with the respective GitHub pull request (PR)
number, and Firstname Lastname
must be replaced with your full name.
It is usually best to wait to add a line to the changelog until your PR is finalized, to avoid merge conflicts (since the changelog is updated with almost every PR).
Lastly, make sure that your name is included in the list of authors in
doc/changes/names.inc
, otherwise the documentation build will fail.
To add an author name, append a line with the following pattern (note
how the syntax is different from that used in the changelog):
.. _Your Name: https://www.your-website.com/
Many contributors opt to link to their GitHub profile that way. Have a look at the existing entries in the file to get some inspiration.
Recurring contributors#
The changelog entry should follow the following patterns:
- Short description of the changes from one contributor (:gh:`0000` by `Contributor Name`_)
- Short description of the changes from several contributors (:gh:`0000` by `Contributor Name`_, `Second Contributor`_, and `Third Contributor`_)
where 0000
must be replaced with the respective GitHub pull request (PR)
number. Mind the Oxford comma in the case of multiple contributors.
Sometimes, changes that shall appear as a single changelog entry are spread out across multiple PRs. In this case, name all relevant PRs, separated by commas:
- Short description of the changes from one contributor in multiple PRs (:gh:`0000`, :gh:`1111` by `Contributor Name`_)
- Short description of the changes from several contributors in multiple PRs (:gh:`0000`, :gh:`1111` by `Contributor Name`_, `Second Contributor`_, and `Third Contributor`_)
Test locally before opening pull requests (PRs)#
MNE-Python uses continuous integration (CI) to ensure code quality and test across multiple installation targets. However, the CIs are often slower than testing locally, especially when other contributors also have open PRs (which is basically always the case). Therefore, do not rely on the CIs to catch bugs and style errors for you; run the tests locally instead before opening a new PR and before each time you push additional changes to an already-open PR.
Make tests fast and thorough#
Whenever possible, use the testing dataset rather than one of the sample
datasets when writing tests; it includes small versions of most MNE-Python
objects (e.g., Raw
objects with short durations and few
channels). You can also check which lines are missed by the tests, then modify
existing tests (or write new ones) to target the missed lines. Here’s an
example that reports which lines within mne.viz
are missed when running
test_evoked.py
and test_topo.py
:
$ pytest --cov=mne.viz --cov-report=term-missing mne/viz/tests/test_evoked.py mne/viz/tests/test_topo.py
You can also use pytest --durations=5
to ensure new or modified tests will
not slow down the test suite too much.
Code style#
Adhere to standard Python style guidelines#
All contributions to MNE-Python are checked against style guidelines described
in PEP 8. We also check for common coding errors (such as variables that are
defined but never used). We allow very few exceptions to these guidelines, and
use tools such as pep8, pyflakes, and flake8 to check code style
automatically. From the mne-python
root directory, you can check for
style violations by running:
$ make flake
in the shell. Several text editors or IDEs also have Python style checking,
which can highlight style errors while you code (and train you to make those
errors less frequently). This functionality is built-in to the Spyder IDE, but
most editors have plug-ins that provide similar functionality. Search for
python linter <name of your favorite editor>
to learn more.
Use consistent variable naming#
Classes should be named using CamelCase
. Functions and instances/variables
should use snake_case
(n_samples
rather than nsamples
). Avoid
single-character variable names, unless inside a comprehension or generator.
We (mostly) follow NumPy style for docstrings#
In most cases you can look at existing MNE-Python docstrings to figure out how yours should be formatted. If you can’t find a relevant example, consult the Numpy docstring style guidelines for examples of more complicated formatting such as embedding example code, citing references, or including rendered mathematics. Note that we diverge from the NumPy docstring standard in a few ways:
We use a module called
sphinxcontrib-bibtex
to render citations. Search our source code (git grep footcite
andgit grep footbibliography
) to see examples of how to add in-text citations and formatted references to your docstrings, examples, or tutorials. The structured bibliographic data lives indoc/references.bib
; please follow the existing key scheme when adding new references (e.g.,Singleauthor2019
,AuthoroneAuthortwo2020
,FirstauthorEtAl2021a
,FirstauthorEtAl2021b
).We don’t explicitly say “optional” for optional keyword parameters (because it’s clear from the function or method signature which parameters have default values).
For parameters that may take multiple types, we use pipe characters instead of the word “or”, like this:
param_name : str | None
.We don’t include a
Raises
orWarns
section describing errors/warnings that might occur.
Private function/method docstrings may be brief for simple functions/methods, but complete docstrings are appropriate when private functions/methods are relatively complex. To run some basic tests on documentation, you can use:
$ pytest mne/tests/test_docstring_parameters.py
$ make docstyle
Cross-reference everywhere#
Both the docstrings and dedicated documentation pages (tutorials, how-to
examples, discussions, and glossary) should include cross-references to any
mentioned module, class, function, method, attribute, or documentation page.
There are sphinx roles for all of these (:mod:
, :class:
,
:func:
, :meth:
, :attr:
, :doc:
) as well as a generic
cross-reference directive (:ref:
) for linking to specific sections of a
documentation page.
Warning
Some API elements have multiple exposure points (for example,
mne.set_config
and mne.utils.set_config
). For cross-references to
work, they must match an entry in doc/python_reference.rst
(thus
:func:`mne.set_config`
will work but :func:`mne.utils.set_config`
will not).
MNE-Python also uses Intersphinx, so you can (and should)
cross-reference to Python built-in classes and functions as well as API
elements in NumPy
, SciPy
, etc. See the Sphinx
configuration file (doc/conf.py
) for the list of Intersphinx projects
we link to. Their inventories can be examined using a tool like sphobjinv or
dumped to file with commands like:
$ python -m sphinx.ext.intersphinx https://docs.python.org/3/objects.inv > python.txt
Note that anything surrounded by single backticks that is not preceded by one
of the API roles (:class:
, :func:
, etc) will be assumed to be
in the MNE-Python namespace. This can save some typing especially in
tutorials; instead of see :func:`mne.io.Raw.plot_psd` for details
you can
instead type see `mne.io.Raw.plot_psd` for details
.
Other style guidance#
Use single quotes whenever possible.
Prefer generators or comprehensions over
filter()
,map()
and other functional idioms.Use explicit functional constructors for builtin containers to improve readability (e.g., list(), dict(), set()).
Avoid nested functions or class methods if possible — use private functions instead.
Avoid
*args
and**kwargs
in function/method signatures.
Code organization#
Importing#
Import modules in this order, preferably alphabetized within each subsection:
Python built-in (
copy
,functools
,os
, etc.)NumPy (
numpy as np
) and, in test files, pytest (pytest
)MNE-Python imports (e.g.,
from .pick import pick_types
)
When importing from other parts of MNE-Python, use relative imports in the main
codebase and absolute imports in tests, tutorials, and how-to examples. Imports
for matplotlib
, scipy
, and optional modules (sklearn
, pandas
,
etc.) should be nested (i.e., within a function or method, not at the top of a
file). This helps reduce import time and limit hard requirements for using MNE.
Return types#
Methods should modify inplace and return self
, functions should return
copies (where applicable). Docstrings should always give an informative name
for the return value, even if the function or method’s return value is never
stored under that name in the code.
Visualization#
Visualization capabilities should be made available in both function and method
forms. Add public visualization functions to the mne.viz
submodule, and
call those functions from the corresponding object methods. For example, the
method mne.Epochs.plot()
internally calls the function
mne.viz.plot_epochs()
.
All visualization functions must accept a boolean show
parameter and
typically return a matplotlib.figure.Figure
(or a list of
Figure
objects). 3D visualization functions return
a mne.viz.Figure3D
, mne.viz.Brain
, or other return type
as appropriate.
Visualization functions should default to the colormap RdBu_r
for signed
data with a meaningful middle (zero-point) and Reds
otherwise. This applies
to both visualization functions and tutorials/examples.
Running the test suite#
The full test suite can be run by calling make test
from the
mne-python
root folder. Testing the entire module can be quite
slow, however, so to run individual tests while working on a new feature, you
can run the following line:
$ pytest mne/tests/test_evoked.py::test_io_evoked --verbose
Or alternatively:
$ pytest mne/tests/test_evoked.py -k test_io_evoked --verbose
Make sure you have the testing dataset, which you can get by running this in a Python interpreter:
>>> mne.datasets.testing.data_path(verbose=True)
Building the documentation#
Our documentation (including docstrings in code files) is in reStructuredText format and is built using Sphinx and Sphinx-Gallery. The easiest way to ensure that your contributions to the documentation are properly formatted is to follow the style guidelines on this page, imitate existing documentation examples, refer to the Sphinx and Sphinx-Gallery reference materials when unsure how to format your contributions, and build the docs locally to confirm that everything looks correct before submitting the changes in a pull request.
You can build the documentation locally using GNU Make with
doc/Makefile
. From within the doc
directory, you can test
formatting and linking by running:
$ make html_dev-noplot
This will build the documentation except it will format (but not execute) the
tutorial and example files. If you have created or modified an example or
tutorial, you should instead run
PATTERN=<REGEX_TO_SELECT_MY_TUTORIAL> make html_dev-pattern
to render
all the documentation and additionally execute just your example or tutorial
(so you can make sure it runs successfully and generates the output / figures
you expect).
Note
On Windows, to use the pattern approach, use the following two lines:
set PATTERN={<REGEX_TO_SELECT_MY_TUTORIAL>}
make html_dev-pattern
After either of these commands completes, make show
will open the
locally-rendered documentation site in your browser. Additional make
recipes are available; run make help
from the doc
directory or
consult the Sphinx-Gallery documentation for additional details.
Modifying command-line tools#
MNE-Python provides support for a limited set of Command line tools using Python. These are typically used with a call like:
$ mne browse_raw ~/mne_data/MNE-sample-data/MEG/sample/sample_audvis_raw.fif
These are generally available for convenience, and can be useful for quick
debugging (in this case, for mne.io.Raw.plot
).
If a given command-line function fails, they can also be executed as part of
the mne
module with python -m
. For example:
$ python -i -m mne browse_raw ...
Because this was launched with python -i
, once the script completes
it will drop to a Python terminal. This is useful when there are errors,
because then you can drop into a post-mortem debugger
:
>>> import pdb; pdb.pm()
GitHub workflow#
Nearly everyone in the community of MNE-Python contributors and maintainers is a working scientist, engineer, or student who contributes to MNE-Python in their spare time. For that reason, a set of best practices have been adopted to streamline the collaboration and review process. Most of these practices are common to many open-source software projects, so learning to follow them while working on MNE-Python will bear fruit when you contribute to other projects down the road. Here are the guidelines:
Search the MNE-Python issues page (both open and closed issues) in case someone else has already started work on the same bugfix or feature. If you don’t find anything, open a new issue to discuss changes with maintainers before starting work on your proposed changes.
Implement only one new feature or bugfix per pull request (PR). Occasionally it may make sense to fix a few related bugs at once, but this makes PRs harder to review and test, so check with MNE-Python maintainers first before doing this. Avoid purely cosmetic changes to the code; they make PRs harder to review.
It is usually better to make PRs from branches other than your main branch, so that you can use your main branch to easily get back to a working state of the code if needed (e.g., if you’re working on multiple changes at once, or need to pull in recent changes from someone else to get your new feature to work properly).
In most cases you should make PRs into the upstream’s main branch, unless you are specifically asked by a maintainer to PR into another branch (e.g., for backports or maintenance bugfixes to the current stable version).
Don’t forget to include in your PR a brief description of the change in the changelog (
doc/whats_new.rst
).Our community uses the following commit tags and conventions:
Work-in-progress PRs should be created as draft PRs and the PR title should begin with
WIP
.When you believe a PR is ready to be reviewed and merged, convert it from a draft PR to a normal PR, change its title to begin with
MRG
, and add a comment to the PR asking for reviews (changing the title does not automatically notify maintainers).PRs that only affect documentation should additionally be labelled
DOC
, bugfixes should be labelledFIX
, and new features should be labelledENH
(for “enhancement”).STY
is used for style changes (i.e., improving docstring consistency or formatting without changing its content).the following commit tags are used to interact with our continuous integration (CI) providers. Use them judiciously; do not skip tests simply because they are failing:
[skip circle]
Skip CircleCI, which tests successful building of our documentation.[skip actions]
Skip our GitHub Actions, which test installation and execution on Linux and macOS systems.[skip azp]
Skip azure which tests installation and execution on Windows systems.[ci skip]
is an alias for[skip actions][skip azp][skip circle]
. Notice that[skip ci]
is not a valid tag.[circle full]
triggers a “full” documentation build, i.e., all code in tutorials and how-to examples will be executed (instead of just nicely formatted) and the resulting output and figures will be rendered as part of the tutorial/example.
This sample pull request exemplifies many of the conventions listed above:
it addresses only one problem; it started with an issue to discuss the problem
and some possible solutions; it is a PR from the user’s non-main branch into
the upstream main branch; it separates different kinds of changes into
separate commits and uses labels like DOC
, FIX
, and STY
to make it
easier for maintainers to review the changeset; etc. If you are new to GitHub
it can serve as a useful example of what to expect from the PR review process.


Tools and methods to simulate populations for surveys based on auxiliary data. The tools include model-based methods, calibration and combinatorial optimization algorithms. The package was developed with support of the International Household Survey Network, DFID Trust Fund TF011722 and funds from the World bank.
| Version: | 1.1.1 |
| Depends: | R (≥ 3.0.0), lattice, vcd, data.table |
| Imports: | laeken, plyr, MASS, Rcpp (≥ 0.11.0), RcppArmadillo, e1071, parallel, nnet, doParallel, foreach, colorspace, VIM, methods, party, EnvStats, fitdistrplus, ranger, wrswoR |
| LinkingTo: | Rcpp, RcppArmadillo |
| Suggests: | haven, microbenchmark, stringr, testthat, reshape2 |
| Published: | 2018-05-29 |
| Author: | Bernhard Meindl, Matthias Templ, Andreas Alfons, Alexander Kowarik and with contributions from Mathieu Ribatet, Johannes Gussenbauer and Gregor De Cillia |
| Maintainer: | Matthias Templ <matthias.templ at gmail.com> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: | https://github.com/statistikat/simPop |
| NeedsCompilation: | yes |
| Citation: | simPop citation info |
| Materials: | README NEWS |
| In views: | OfficialStatistics |
| CRAN checks: | simPop results |
| Reference manual: | simPop.pdf |
| Package source: | simPop_1.1.1.tar.gz |
| Windows binaries: | r-devel: simPop_1.1.1.zip, r-release: simPop_1.1.1.zip, r-oldrel: simPop_1.1.1.zip |
| OS X binaries: | r-release: simPop_1.1.1.tgz, r-oldrel: simPop_1.1.1.tgz |
| Old sources: | simPop archive |
Please use the canonical form https://CRAN.R-project.org/package=simPop to link to this page.


---
layout: post
title: From Ruby to Excel
date: '2008-03-04T16:17:00.000-08:00'
author: Naren Salem
tags:
modified_time: '2008-03-04T16:31:05.496-08:00'
blogger_id: tag:blogger.com,1999:blog-360727496473333342.post-7295100130255161532
blogger_orig_url: https://frigments.blogspot.com/2008/03/from-ruby-to-excel.html
---
Here is a little snippet showing how you can open up an Excel document in Ruby to read or update data in the spreadsheet.
# Require the WIN32OLE library
require 'win32ole'
# Create an instance of the Excel application object
xl = WIN32OLE.new('Excel.Application')
# Make Excel visible if you want to see a little live action
#xl.Visible = 1
xl.workbooks.open("C:\\Documents and Settings\\MyName\\Desktop\\MyFile.xlsx")
for row in 2..148
url = xl.Cells(row, 2).Value
xl.Cells(row, 3).Value = Version
end
# Quit Excel
xl.Quit


--- layout: default date: 21/10/2019 ---
We are aware that a significant number of riders were affected by Zwift dropping out for day 1 of the Thunder Bolt Stage Race. As a contingency, we will be giving all riders who continue the stage race the pack time plus 15 seconds for day 1, to allow riders the opportunity to complete the event.
Welcome to the Five Day Thunder Bolt Stage Race, running from October 18th to October 23rd. The stage race uses a time-based General Classification, as well as having a sprinter and climber classification. The sprinter and climber classifications will award the first 6 of each grade points (10, 7, 5, 3, 2, 1) for all sprint and KOM segments in each race. Racers will need to complete at least four events to be counted in the classifications.
Last updated: {{ page.date | date: "%A, %B %e" }}
{% include standings.html riders=site.data.thunderbolt.2019.october.individuals sprints=site.data.thunderbolt.2019.october.sprints climbs=site.data.thunderbolt.2019.october.climbs %} {% include datetime.html %}


- Location Share Key: {{.LocationKey}}
This is the information you will need to give to your operator to be invited on to the op team. Once you are invited onto the team, you will need to enable the team (below). You can disable a team at any time.
Request a new LocKey (because Frank didn't like his)
- Display Name: {{.IngressName}}
This is how you are shown on the maps. This information should only be trusted for agents who are verified at V or .rocks
{{if VEnlOne}}
{{if .VVerified}}
- V Status: Verified
- Checking RAID for location data: {{.RAID}}
RAID is an ENL Android/iPhone app which can share location data. We are still researching the exact configuration to make this work. If you are a RAID user and do not want to use OwnTracks, we can get RAID data. OwnTracks will give more up-to-date information to the operator since there is a lag in our polling the RAID servers. If a single polling cycle returns an error for you, this value will revert to disabled. Enable
{{else}}
- V Status: Not Verified
-
{{end}}
{{end}}
{{if EnlRocks}}
- .Rocks Verified: {{.RocksVerified}}
.Rocks verification typically only takes place in relationship to anomolies. Lack of verification does not mean you don't have a .rocks account, it just means you've not been verified at an anomoly event
{{end}}
- Waypoints/Markers Near Me
- OwnTracks Mode: Private HTTP
MQTT is not currently supported.
- OwnTracks Username: {{.LocationKey}}
Use this value in the OwnTracks app.
- OwnTracks Password:
{{if eq .OwnTracksPW "" }}
Not yet configured
: You will need to configure a password in order to use OwnTracks
{{else}}
Configured
{{end}}
-
- OwnTracks URL: {{ Webroot }}/OwnTracks
Use this URL in the OneTracks app. Device ID can be anything. Tracker ID can be any two-letter code. Ask you operator if she has any preference.
{{if (TGRunning)}}
{{if (.Telegram.ID) }}
- ID: {{.Telegram.UserName}} ({{.Telegram.ID}})
{{end}}
{{if (.Telegram.Verified) }}
- Status: Verified.
{{else}}
- Status: Not Verified.
- Instructions:
{{if (.Telegram.Authtoken) }}
Tell the bot (@{{ TGGetBotName }}) {{.Telegram.Authtoken}} to get verified.
{{else}}
Tell the bot (@{{ TGGetBotName }}) {{.LocationKey}} to start the verification process.
{{end}}
{{end}}
{{end}}
Disable inactive teams. It is good opsec and reduces data transfer. If you use OneTracks and want to submit waypoints, you must set a primary team.
Disable inactive teams to hide operations.
{{range .Ops}}
- {{.Name}} ({{.TeamName}})
{{end}}
{{range .OwnedOps}}
- {{.Name}} ({{.TeamName}}) (owner)
{{end}}


warning To connect accounts, click the button to authorize account administration Authorize Account Administration


| Class | Description |
|---|---|
| CN1KeyRateDuration |
CN1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the CN1 Treasury Futures.
|
| DU1KeyRateDuration |
DU1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the DU1 Treasury Futures.
|
| FBB1KeyRateDuration |
FBB1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the FBB1 Treasury Futures.
|
| FV1KeyRateDuration |
FV1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the FV1 Treasury Futures.
|
| IK1KeyRateDuration |
IK1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the IK1 Treasury Futures.
|
| JB1KeyRateDuration |
JB1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the JB1 Treasury Futures.
|
| OAT1KeyRateDuration |
OAT1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the OAT1 Treasury Futures.
|
| OE1KeyRateDuration |
OE1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the OE1 Treasury Futures.
|
| RX1KeyRateDuration |
RX1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the RX1 Treasury Futures.
|
| TU1KeyRateDuration |
TU1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the TU1 Treasury Futures.
|
| TY1KeyRateDuration |
TY1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the TY1 Treasury Futures.
|
| UB1KeyRateDuration |
UB1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the UB1 Treasury Futures.
|
| US1KeyRateDuration |
US1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the US1 Treasury Futures.
|
| WN1KeyRateDuration |
WN1KeyRateDuration demonstrates the Computation of the Key Rate Duration for the WN1 Treasury Futures.
|


Hi! My name is Ike Esquivel-Pilloud, and I am a junior programmer. I focus on back-end programming. I really enjoy pursuing creativity, and I see web development as an exciting new medium to explore.
I grew up in Portland Oregon, and graduated from Metropolitan Learning Center, with awards in academic achievement for taking part in student government, operating the student store, and having some of my writing published. One of my poems received an award for outstanding creativity, and I did a reading of it at Powell's. I studied acting at The Evergreen State College for one year. After some time working in a manufacturing plant, I am now attending Epicodus, in hopes of expanding my programming skillset.


The Fishbowl – Not Your Normal Discussion
As a science teacher, we don’t get many opportunities to discuss difficult topics. Sure, content discussion happen, but I envy the english and philosophy teachers who get to discuss the deep thinking questions. True debate is hard to come by with some of the other more “empirical” contents.
My AP Chemistry class was debating a particular concept (what is the pH of water) in class and I decided to see what we could do with it. I knew the “answer,” but a lot of students were struggling with the idea that water’s pH could be lower than 7 (neutral) at different temperatures. I decided we would fishbowl this question to try and come up with an answer.
In a fishbowl, there are two groups…the outside observers and the fish
http://www.flickr.com/photos/loungerie/4099464004/
inside the bowl. The inside group is having a “traditional” discussion…oral debate and conversation. The outside group, on the other hand, is in a chat room (or public document) and they are having their own discussion about the inside group. Many times, these lead to two completely different discussions.
Some tips if you’re interested in trying out a fishbowl discussion:
- Your questions has to be open ended. Discussions are no fun if everyone agrees. Try having an open-ended discussion in which there is no one “right” answer. I also have found that controversial questions lead to good discussion. Some I’ve heard of: “Was Kierkegaard really an existentialist?,” “What is the most significant development of the 20th century?,” “How did the end of WWII change European and Asian history?”
- Be okay with arguments and disagreements. Students don’t always need to agree to find meaning in discussion. Obviously, keep it civil, but if minds aren’t made up, that’s fine.
- Pre-assign groups (if necessary). This is not a come-in-and-start sort of discussion. There needs to be some preparation by students. Some teachers have half the students students blog the information and the other half reads the blogs and then becomes the inner discussion group. This works well with particular concepts, but might not always be necessary.
- Have follow-up questions ready. Not all discussion will reach an adequate depth when they start. Be ready to have some probing follow-up questions to push students to deeper levels. Be willing to play devil’s advocate to get them thinking about topics form a different perspective. Questions or statements that catch them off guard are always good, too.
- Pick an outside discussion medium before starting. In other words, make sure the chat room works. One good one is Chatzy. Totally free, instant chat rooms. One problem is that if you have a large group on a school network, Chatzy will filter the chat because the same IP address is sending information and it is marked as spam. The way around this is to have students log in with their Facebook accounts…the IP marking is overridden then because it recognizes individual users instead of “guests.” Another good option is TypeWithMe. Not a huge fan because it isn’t as quick as Chatzy, but there are no IP limitations. You can export chats from both to distribute to students after the discussion.
- Consider recording the chat. With free recording software readily available, it isn’t hard to record a discussion for later reference. Audacity is probably the most popular freeware for recording audio.
Discussion can lead to some of the most meaningful learning. Consider taking a day to step away from cramming in content to give students an opportunity to find true meaning through debate. Enjoy the struggle of learning first-hand.
Written on
April
21st
,
2011
by
Brian Bennett
Categorized in:
All
Projects
Tagged:
Feel free to share!
Leave a comment


Hot Numbers
A complaint to Ofcom about the misrepresentation of randomness:
I have been watching televised roulette on Channel 5, and have come to the conclusion that it is in violation of Section 5.7 of the Ofcom Broadcasting Code.
The Hot Numbers section of the screen shows the last 9 results of the wheel spin. These numbers are clearly facts about past performance, but they are not balanced by a statement about future performance. On their own they suggest to the viewer that a pattern can be detected which could allow the next result to be predicted. Of course the outcome of the next spin is entirely random, and not influenced by past results in any way.
The Hot Numbers should carry a warning to make future performance clear; something like "the outcome of the next spin is not affected by previous results"


How to make egg whites fluffy without a hand-mixer?
What are some good egg free recipes?
How to cook pasta.
Is it safe to cook chicken in a slow cooker?
Does anyone have a vegetarian jambalaya recipe?
Darren T.
There are some knives I would consider "classics" of the hobby. Off the top of my head...
Sebenza (or some other CRK folder): generally considered the "best built" production folder and the first of the modern titanium frame-locks
Opinel No. 8 or 9 in carbon steel
Victorinox SAK: pick your favorite
Sodbuster of some sort
Microtech LCC: was generally considered the best "custom collaboration" of its era, which was a huge trend in the '90s. It would be called a mid-tech today. One of the better implementations of the Walker liner lock. Incredibly smooth action and tight lockup.
Spyderco Delica: a modern classic
Emerson CQC-7: defined the "tactical folder" with titanium liners, liner lock, ATS-34 steel, G10 scales, thumb disc, pocket clip, and lanyard hole. Pretty much every knife manufacturer in the '90s followed that pattern. It also popularized chisel grinds and the "American tanto" blade profile.
Benchmade AFO: proved that the was more to automatic opening knives than just Italian stilettos. An auto could be a robust, practical tool.
Microtech Halo: the most badass OTF auto
sort
Mora: pick one. Experience the Scandinavian grind.
Tom W.
This is awesome! Thanks for the list man!
Me


I was diagnosed with severe ADHD when I was 8, since that time I have been regularly taking any one of several amphetamine medications for my 'condition' and I feel I should let you know that when you get these things prescribed to you for a reason, you don't really enjoy them. It isn't that the side effects are really so bad, the one I have always disliked the most is the loss of appetite, which for some reason no one has ever explained to me occurs across the board with all ADD medications.
I have a fast metabolism naturally, if I don't take my medicine and I eat as much as I want of whatever I want I don't gain a pound. When I do take my medicine which is usually, I have to force myself to eat, and the adderall takes all the fun out of eating. I am a cook, and I LOVE food, so this is especially hard on me. Aside from that there is the insomnia, which I believe I suffer when not medicated as well as when on adderall so I am not sure about how much of the blame for that which I can proscribe to medication.
Here is the part that will come as a surprise to you if you think you know what these drugs do, and I don't claim to understand why it works differently for people with ADD. When I am NOT on these drugs my brain performs BETTER. By this I mean that comprehension, problem solving, learning and retention are all reduced by this drug when I take it, however what is increased is focus. When I am un-medicated my mind jumps from one thought to another with such rapidity that almost nothing gets accomplished without a supreme effort of will.
I also find that on adderall, my mood is less enthusiastic and that my personality is somewhat blunted. I never feel any kind of euphoria or crash from this medicine, I currently take 60 mg a day at two intervals, usually finding that the effects wear off after about 4 hours.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.