Translate a search query between Ovid MEDLINE and PubMed syntax
How MEDLINE Transpose works
First, Transpose looks for all of the boolean operators in your strategy. It assumes that all of the text which are not boolean operators are search terms, and makes a list of all of these.
Transpose then looks at each item in the list in turn. It uses simple pattern matching to identify standard search syntax, and uses these to decide what type of term it is. For instance, if it sees exp something/, it decides that this is a MeSH term.
Once Transpose has decided what type of term it is looking at, it sends the term to be processed accordingly. If you specified Ovid to PubMed, it will take the term and convert it to PubMed syntax, or vice versa if you specified PubMed to Ovid. The process used is similar to Find and Replace.
Some terms require additional processing. For instance, if your term is a MeSH term, Transpose will check to see if it has any subheadings and send the subheading for additional processing before it finishes the conversion. Also, Transpose checks for specific situations in which a warning might be needed, for instance if an exact translation is not available.
We decided to make the conversion as accurate as possible. Thus, if there is not an exact match between the two databases, we have chosen the translation which will provide the search which is as close as possible to the original strategy. In some cases, this may result in a longer strategy than expected.
After Transpose has translated each item in the list, it puts the boolean operators back in between each of the items, and displays the new strategy on the website. It also displays any warnings or suggestions which were relevant.
What MEDLINE Transpose doesn't do
Transpose only looks at the syntax of the search, not the MeSH terms and keywords which you used. If you enter something which is not a MeSH term using MeSH syntax, the programme will translate it as if it were a real MeSH term. That is, if you enter exp Deliberately Silly Example/, Transpose will return "Deliberately Silly Example"[Mesh]. This includes former MeSH terms which have been changed or deleted - Transpose will translate them just as if they were still valid. Likewise, Transpose will not evaluate the quality of your search strategy.
Transpose is only intended for translating between these two versions of MEDLINE. It is not intended for translating to any other Ovid databases, e.g. EMBASE. That being said, if you enter a keyword-only search, and the PubMed tags which you use happen to correspond to search fields in the other Ovid database, it is possible that you could get a usable search strategy. However, if you attempt this, please check over the search strategy carefully, and be aware that it is quite likely that there will be incorrect translations, since you are using Transpose in a way that it was not intended to be used.
The PubMed interface will accept a keyword or phrase without any syntax or tags, and usually will make an attempt to map it to MeSH headings, and otherwise process the request. Transpose does not have the capability to replicate what PubMed does, and simply translates this as an "all fields" search in Ovid MEDLINE, which is PubMed's default output if it can't map the keyword/phrase. If you wish to replicate PubMed's exact translation of a term without syntax, enter your term into PubMed. Look on the right-hand side of your search results for the Search Details box. Then, copy and paste the contents of the Search Details box into Transpose.
Currently Transpose doesn't translate any strategies which involve dates. That is next on our to-do list (as soon as we fix all of the bugs…)
Currently Transpose doesn't translate PubMed Filters nor Ovid limits. So, you can enter something like english[lang] OR english.lg., but not Filters: english or "limit search x to english language". We plan to make those available in future (just as soon as we figure out how!)
Table of Ovid Field Codes and PubMed Tags
Warning! Trying to understand Ovid Field Codes and PubMed Tags, especially which ones correspond, may induce nightmares. We're not joking! Ye be warned.
Certain field codes do not currently have an index. As such, we were unable to perform any analysis, we were not able to obtain any examples. We will attempt further analysis at a later date, but for now, will focus on the field code / tag combinations for which there is a known conversion.
| Name | Ovid Field Code | PubMed Tag | Notes and explanations | Implemented? |
|---|---|---|---|---|
| MeSH Term | exp Mesh Term/ | "Mesh Term"[Mesh] | PubMed autoexplodes | Yes |
| Unexploded MeSH Term | Mesh Term/ | "Mesh Term"[Mesh:NoExp] | Yes | |
| Focussed MeSH Term | exp *Mesh Term/ | "Mesh Term"[Majr] | Works with and without explode - have shown with explode here | Yes |
| MeSH Term with subheading | exp Mesh Term/dt | "Mesh Term/drug therapy"[Mesh] | PubMed automatically explodes subheadings, Ovid does not. In an Ovid-to-PubMed conversion, Transpose provides a warning - in a PubMed-to-Ovid conversion, it includes all exploded subheadings. | Yes |
| MeSH Heading, Exploded | .xm. | [mh] | Yes | |
| MeSH Heading, Unexploded | .sh. | [mh:noexp] | Yes | |
| MeSH Heading Word | .hw. | N/A | Yes - a warning is given. | |
| Name of Substance Word | .nm. | [nm] or [supplementary concept] | Yes | |
| Pharmacological Action | n/a | [pa] or [pharmacological action] | Closest equivalent is Ovid is to search as if it were a MeSH term | Yes |
| Protocol Supplementary Concept | .ps. | [supplementary concept] | Yes | |
| Protocol Supplementary Concept Word | .px. | This will work for a supplementary concept which is only one word long, but not for part of a phrase. | Yes - a warning is given. | |
| Rare Disease Supplementary Concept | .rs. | [supplementary concept] | Yes | |
| Rare Disease Supplementary Concept Word | .rx. | This will work for a supplementary concept which is only one word long, but not for part of a phrase. | Yes | |
| Subheading, Exploded | .xs. | [sh] or [subheading] | Ovid version will only accept 2-letter code | Yes |
| Subheading, Floating | .fs. | [sh:noexp] or [subheading:noexp] | Yes. |
| Name | Ovid Field Code | PubMed Tag | Notes and explanations | Implemented? |
|---|---|---|---|---|
| Abstract | .ab. | N/A | No equivalent in PubMed - closest equivalent is [tiab] | Yes - a warning is given |
| All fields | .af. | [All Fields] or [All] | Yes | |
| Keyword Heading / Other Term | .kw. | [ot] | Yes | |
| Keyword Heading Word | .kf. | N/A | Yes | |
| Other abstract | .oa. | This is one of the many fields searched by the [tiab] and [tw] searches in PubMed, but it cannot be searched separately. | ||
| Personal Name as Subject | .pn. | [ps] or [subject - personal name] | Yes | |
| Text Word (Ovid) | .tw. | Searches in the title and abstract fields in Ovid. Is equivalent to .ti,ab. | Yes | |
| Text Words (PubMed) | .ti,ab,oa,sh,fs,pt,rn,pn. | [tw] | Includes all words and numbers in the title, abstract, other abstract, MeSH terms, MeSH subheadings, Publication Types, Substance Names, Personal Name as Subject, Corporate Author, Secondary Source, Comment/Correction Notes, and Other Terms (see Other Term [OT] above) typically non-MeSH subject terms (keywords), including NASA Space Flight Mission, assigned by an organization other than NLM. | Yes |
| Title | .ti. | [ti] or [title] | PubMed [ti] additionally searches for collection title. | Yes |
| Title/Abstract | .ti,ab,cl,oa,kw. | [tiab] or [title/abstract] | Words and numbers included in a citation's title, collection title, abstract, other abstract, and keywords | Yes |
| Name | Ovid Field Code | PubMed Tag | Notes and explanations | Implemented? |
|---|---|---|---|---|
| Affiliation/Institution | .in. | [ad] | Yes | |
| EC/RN Number | .rn. | [rn] or [ec/rn number] | Yes | |
| Original/Transliterated Title | .ot. | [tt] | Yes |
| Name | Ovid Field Code | PubMed Tag | Notes and explanations | Implemented? |
|---|---|---|---|---|
| Author | .au. | [au] or [author] | Ovid requires format: last name, space, first initial, optional truncation, e.g. smith a$. Ovid field .ax. accepts a last name without a first initial. | Yes |
| Author, Corporate | .fa. | [cn] or [author - corporate] | For best results, search it in .fa. You can also search the first word of the corporate author in .au. if you truncate, e.g. cochrane*.au. | Yes |
| Author, First | .pa. | [1au] or [author - first] | Yes | |
| Author Full Name | .fa. | [fau] or [author - full] | Yes | |
| Author, Last | n/a | [lastau] or [author - last] | ||
| Author Last Name | .ax. | [au] or [author] accepts a last name without a first initial. | Yes | |
| Issue/Part | .ip. | [ip] or [issue] | Yes | |
| Journal | .jn. | [journal] | Phrase indexed - must have correct version of journal name. | Yes |
| Page/Pagination | .pg. | [pg] or [pagination] | Yes | |
| PMID/Unique Identifier | .ui. | [pmid] or [uid] | Yes | |
| Source | .so. | This is broken up into several tags in PubMed. Investigation of format required before implementation. | ||
| Volume | .vo. | [vi] | Yes | |
| Year of Publication | .yr. | This can be searched as the first 4 digits if the [dp] field in PubMed. | Yes |
| Name | Ovid Field Code | PubMed Tag | Notes and explanations | Implemented? |
|---|---|---|---|---|
| Country/Place of Publication | .cp. | [pl] | Yes | |
| ISSN Electronic | .es. | [ta] or [journal] | Yes | |
| ISSN Linking | .il. | [ta] or [journal] | Yes | |
| ISSN Print | .is. | [ta] or [journal] | Yes | |
| Journal ISO/Title Abbreviation | .io. | [ta] | Yes | |
| Journal Subset | .sb. | [sb] | Yes | |
| Journal Word | .jw. | n/a | Yes - a warning is given. | |
| NLM Journal Code | .jc. | [jid] | Yes | |
| NLM Journal Name | .nj. | [journal] | .nj. contains the full name of the journal - equivalent to [journal]? Must try more examples. | |
| NLM Journal Word | .nw. | n/a | Yes - a warning is given. |
| Name | Ovid Field Code | PubMed Tag | Notes and explanations | Implemented? |
|---|---|---|---|---|
| Date, Beginning | .bd. | N/A | No definition nor index provided in Ovid. | |
| Date, Completion/Entry | .ed. | [dcom] or [Date - Completion] | In Ovid, format = YYYYMMDD, truncate with * if needed. In PubMed, format = YYYY/MM/DD, truncation is assumed (no symbol needed). | Yes |
| Date, Contribution | .cb. | N/A | No definition nor index provided in Ovid. | |
| Date, Create | .ez. | [crdt] OR [Date - Create] | In Ovid, format = YYYY MM DD*, mandatory truncation with *. In PubMed, format = YYYY/MM/DD, truncation is assumed (no symbol needed).The Ovid field called Create Date appears to correspond to the value of Entrez Date in PubMed - have contacted Ovid for clarification. | Yes |
| Date, Ending | .et. | N/A | No definition nor index provided in Ovid. | |
| Date, Entrez | .dt. | [edat] or | In Ovid, format = YYYY MM DD, mandatory truncation with *. In PubMed, format = YYYY/MM/DD, truncation is assumed (no symbol needed). The Ovid field called Entrez Date appears to correspond to the value of Create Date in PubMed - have contacted Ovid for clarification. | Yes |
| Date, Mesh | .da. | [mhda] or [Date - Mesh] | In Ovid, format = YYYY MM DD, truncate with * if needed. In PubMed, format = YYYY/MM/DD, truncation is assumed (no symbol needed). | Yes |
| Date, Modification/Revision | .rd. | [lr] OR [Date - Modification] | In Ovid, format = YYYYMMDD, truncate with * if needed. In PubMed, format = YYYY/MM/DD, truncation is assumed (no symbol needed). | Yes |
| Date of Publication | .dp. | [dp] OR [pdat] OR [DAte - Publication] | In Ovid, format = YYYY MM DD, truncate with * if needed. In PubMed, format = YYYY/MM/DD, truncation is assumed (no symbol needed). In addition to regular date format, pubmed allows the following format: “last X days”[dp]; “last X months”[dp]; “last X year”[dp] and also records date exactly as published in some cases (e.g. winter 2007). | Yes |
| Date of Publication, Electronic | .ep. | [dep] | Yes | |
| Date, Update | .up. | N/A | ||
| Date, Version | .vd. | N/A | ||
| Filter | .sb. | [sb] or [filter] | This may sometimes correspond to .sb. in Ovid. Further investigation required before implementation. | .sb. and [sb] are working - more investigation required for [filter] |
| Language | .lg. | [la] or [lang] | Yes | |
| Publication Type, Exploded | exp Publication Type/ | [pt] or [ptyp] or [publication type] | E.g. exp Review/ | Yes |
| Publication Type, Unexploded | .pt. | [pt:noexp] or [ptyp:noexp] or [publication type:noexp] | Yes | |
| Status | .st. | [sb] | .st. is one of the searches corresponding to [sb]. | Yes |
| Name | Ovid Field Code | PubMed Tag | Notes and explanations | Implemented? |
|---|---|---|---|---|
| Article Identifier | .id. | [aid] | In Ovid, replace any punctuation with spaces. | Yes |
| Author Name ID | .ai. | [auid] | Yes | |
| DOI/Location ID/Publisher Item Identifier | .do,di. | [lid] | In Ovid, replace any punctuation with spaces. | Yes |
| Grant Information | .gr,gc,gi,no,go. | [gr] or [grant number] | Yes | |
| Object ID | .oj. | N/A; | No definition nor index provided in Ovid. | |
| Other ID | .oi. | There is a field for this in PubMed, but it is not searchable as a tag. Field = OID | ||
| PMC Identifier | .pm. | You can search these without tags in PubMed, they're unique enough to just appear. There is a field for this as well, but it is not searchable as a tag. Field = PMC. |
| Name | Ovid Field Code | PubMed Tag | Notes and explanations | Implemented? |
|---|---|---|---|---|
| Citation String | .cs. | N/A | No definition nor index provided in Ovid. | |
| Comments | .cm. | There are two fields for this in PubMed, but they are not searchable as tags. Fields = CON, CIN | ||
| Conflict of Interest | .ci. | [coi] or [cois] | Yes | |
| Copyright Index | .cr. | No equivalent identifiable in PubMed. | ||
| Gene Symbol | .gs. | N/A | There is a field for this in PubMed, but it is not searchable as a tag. Field = GS. Data was only entered into this field between 1991 and 1995. | |
| Gene Symbol Word | .gw. | N/A | There is a field for this in PubMed, but it is not searchable as a tag. Field = GS. Data was only entered into this field between 1991 and 1995. | |
| Indexing Method | .ig. | N/A; | No definition nor index provided in Ovid. | |
| Investigator | .ir. | [ir] or [investigator] | Yes | |
| Investigator Affiliation | .ia. | There is a field for this in PubMed, but it is not searchable as a tag. Field = IRAD. | ||
| Investigator Full Name | [fir] | No exact equivalent in Ovid, but you could chop the end off the given names and then search it in .ir. (Format Surname I). | ||
| Investigator Name ID | .ix. | I think this might be a mashup of the [fir] field and another piece of data only available in the XML data in PubMed, which is Idenftifier Source. More investigation required. | ||
| Note, General | .nt. | This no longer appears in the list of Ovid Search Fields. Has it been retired? | ||
| Publication History Status | .ph. | There is a field for this in PubMed, but it is not searchable as a tag. Field = PHST. | ||
| Publication Status | .pp. | There is a field for this in PubMed, but it is not searchable as a tag. Field = PST. | ||
| Publisher | .pb. | [pubn] | Yes | |
| Publishing Model | .pi. | This no longer appears in the list of Ovid Search Fields. Has it been retired? | ||
| Record Owner | .ro. | This is listed under OWN in PubMed's Medline format display but there doesn't seem to be a searchable tag. PubMed provides the following suggestion: "The owner search field includes the acronym that identifies the organization that supplied the citation data. Search using owner + the owner acronym, e.g. ownernasa." | ||
| Report Number | .rr. | No index provided in Ovid. | ||
| Season | .se. | This is for the month or season in which the article was published. Might be searchable as part of the [dp] field - must experiment. | ||
| Secondary Source AN | .sa. | This is equivalent of a "word" search in Ovid - searches for part of the Secondary Source ID. No equivalent - [si] requires full ID number. | ||
| Secondary Source ID | .si. | [si] or [secondary source id] | Yes | |
| Secondary Source Link | .sl. | N/A | Link possibly related to clinicaltrials.org? | |
| Space Flight Mission | .sm. | There is a field for this in PubMed, but it is not searchable as a tag. Field = SFM. | ||
| Synonyms | .sy. | N/A | ||
| Title Comment | .tc. | This no longer appears in the list of Ovid Search Fields. Has it been retired? | ||
| Version ID | .vi. |
| Name | Ovid Field Code | PubMed Tag | Notes and explanations | Implemented? |
|---|---|---|---|---|
| Book Accession | .bk. | N/A; | No definition nor index provided in Ovid. | |
| Book Authors | .ba. | Format: smith jc or smith j. No index provided in Ovid. Part of .au. - might be searched in [author]? | ||
| Book Authors Full Name | .bf. | No index provided in Ovid. Part of .da. - might be searched in [author -full]? | ||
| Book Edition | .bn. | No index provided in Ovid. | ||
| Book Editors | .be. | Format: smith jc or smith j. No index provided in Ovid. | ||
| Book Part | .pr. | This refers to the chapter of the book being cited. No index provided in Ovid. | ||
| Book Title | .bt. | No index provided in Ovid. Part of .so. | ||
| Book Volume | .bv. | No index provided in Ovid. Part of .so. | ||
| Collection Title | .cl. | No index provided in Ovid. | ||
| Editor | .ee. | [ed] or [editor] | No index provided in Ovid. | Yes |
| Editor Full Name | .fe. | No index provided in Ovid. | ||
| Editor Last Name | .ex. | No index provided in Ovid. Part of ee and fe fields. | ||
| Equal Contributor | .ec. | N/A | No definition nor index provided in Ovid. | |
| ISBN | .ib. | [is] or [isbn] | Yes | |
| Media Type | .mt. | Identifies the physical medium of the book citation. No index provided in Ovid. | ||
| Section | .sn. | This is a section of the book (a section that is not a chapter). No index provided in Ovid. | ||
| Volume Book Title | .vb. | No index provided in Ovid. Part of .so. |
| Name | Ovid Syntax | PubMed Syntax | Notes and explanations | Implemented? |
|---|---|---|---|---|
| All Citations Search | docz.dz | all[sb] | To find all citations in the database. | Yes |
| AIDS Subset | aids hiv journals.sb. or limit [previous search] to AIDS | aids[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. | Yes |
| Bioethics Subset | bioethicsjournals.sb. or limit [previous search] to bioethics | bioethics[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. | Yes |
| Cancer Subset | limit [previous search] to cancer | cancer[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. | Yes |
| Complementary and Alternative Medicine Subset | limit [previous search] to Complementary Medicine | cam[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. | Yes |
| Dietary Supplements Subset | limit [previous search] to Dietary Supplements | dietsuppl[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. | Yes |
| History of Medicine Journals Subset | "history of medicine journals".sb. or limit [previous search] to History of Medicine | history[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. For Ovid field tag version, quotes are necessary because of the "of". | Yes |
| Space Life Sciences Subset | "national aeronautics and space administration nasa journals".sb. or limit [previous search] to Space Life Sciences. | space[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. For Ovid field tag version, quotes are necessary because of the "and". | Yes |
| Systematic Reviews | limit [previous search] to Systematic Reviews | systematic[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. | Yes |
| Toxicology Subset | limit [previous search] to Toxicology | tox[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. | Yes |
| Veterinary Science Subset | limit [previous search] to Veterinary Science | veterinary[sb] | To use the Ovid limit version, substitute the search number of interest instead of [previous search]. | Yes |
| Free Full Text Subset | free full text[sb] | No equivalent in Ovid. You might be able to find a few of the same results with limit [previous search] to full text, but that would miss many of the free ones and also include any of your institution's subscriptions, so the results would be quite different. | Yes - a warning is given. | |
| Full Text Subset | full text[sb] | This finds any articles where full text is available online, including those that are for purchase. No equivalent in Ovid. | Yes - warning is given. | |
| Local Full text Subset | limit [previous search] to full text | [check with your library to see if a filter has been set up] | Check with your library to see if a filter has been set up to limit a PubMed search to only the articles in journals to which the library subscribes. However, please note that the Ovid local full text filter and the PubMed one may return very different results. The Ovid interface appears to have a great deal of difficulty in making their full text filter accurate. | No - this search is too dependent on local variables. |
| PubMed Central Subset | pubmed pmc[sb] | No equivalent in Ovid. | Yes - a warning is given. | |
| Publisher Subset | publisher[sb] | In theory, Ovid has limit [previous search] to publisher, but this limit returns zero results. | Yes - a warning is given. | |
| In Process Articles Subset | in process.st. | inprocess[sb] | Yes | |
| Medline (Indexed) Articles Subset | medline.st. | medline[sb] | Yes | |
| Old Medline Articles Subset | om.sb. or oldmedline citations.st. | oldmedline[sb] | Yes | |
| PubMed Not Medline Articles Subset | "pubmed not medline".st. | pubmednotmedline[sb] | The Ovid version requires quotes because of the "not" | Yes |
| In Data Review Articles Subset | in data review.st. | indatareview[sb] | Quotes are not necessary for the Ovid one - I checked! | Yes |
| Core Clinical Journals (AIM) Subset | aim.sb. | jsubsetaim[text] | The PubMed version may also be entered without the [text] part. | Yes |
| Biotechnology Journals Subset (non-Index Medicus) | b.sb. | jsubsetb[text] | The PubMed version may also be entered without the [text] part. This subset is not currently used. | Yes |
| Communication Disorders Journals Subset (non-Index Medicus) | c.sb. or limit [previous search] to communication disorders journals | jsubsetc[text] | The PubMed version may also be entered without the [text] part. This subset is not currently used. | Yes |
| Dental Journals Subset (non-Index Medicus) | d.sb. | jsubsetd[text] | The PubMed version may also be entered without the [text] part. | Yes |
| Bioethics Subset | e.sb. | jsubsete[text] | The PubMed version may also be entered without the [text] part. Includes records from former Bioethicsline database. | Yes |
| Foreign Journals Subset (non-Index Medicus) | f.sb. | jsubsetf[text] | The PubMed version may also be entered without the [text] part. This subset is not currently used, and seemed to only contain one journal anyway. | Yes |
| Health Administration Subset (non-Index Medicus) | h.sb. | jsubseth[text] | The PubMed version may also be entered without the [text] part. Includes records from former HealthStar Database. | Yes |
| Index Medicus Journals Subset | im.sb. | jsubsetim[text] | The PubMed version may also be entered without the [text] part. | Yes |
| Population Information Citations Subset (non-Index Medicus) | j.sb. | jsubsetj[text] | The PubMed version may also be entered without the [text] part. This subset is not currently used. Includes records from former(?) Popline database? | Yes |
| Consumer Health Journals Subset (non-Index Medicus) | k.sb. | jsubsetk[text] | The PubMed version may also be entered without the [text] part. | Yes |
| Nursing Journals Subset (non-Index Medicus) | n.sb. | jsubsetn[text] | The PubMed version may also be entered without the [text] part. | Yes |
| History of Medicine Subset | q.sb. | jsubsetq[text] | The PubMed version may also be entered without the [text] part. Includes records from former Histline database. | Yes |
| History of Medicine Subset (non-Index Medicus) | qis.sb. | jsubsetqis[text] | The PubMed version may also be entered without the [text] part. | Yes |
| Older History of Medicine Subset | qo.sb. | jsubsetqo[text] | The PubMed version may also be entered without the [text] part. | Yes |
| Reproduction Journals Subset (non-Index Medicus) | r.sb. | jsubsetr[text] | The PubMed version may also be entered without the [text] part. | Yes |
| National Aeronautics and Space Administration (NASA) Journals Subset | s.sb. | jsubsets[text] | The PubMed version may also be entered without the [text] part. Includes records from former Spaceline database. | Yes |
| Health Technology Assessment Journals Subset (non-Index Medicus) | t.sb. | jsubsett[text] | The PubMed version may also be entered without the [text] part. Includes records from former Healthstar database. | Yes |
| AIDS/HIV Journals Subset | x.sb. | jsubsetx[text] | The PubMed version may also be entered without the [text] part. Includes records from teh former Aidsline database. | Yes |
Disclaimer
Transpose is a simple javascript application with no artificial intelligence system. It is intended to provide a basic conversion between the syntax of two MEDLINE interfaces for the sake of convenience only. It is possible that a mistake or inaccuracy may occur. We make no guarantees, and are not liable if any translations are inaccurate (but if you find a bug, please let us know!). Please check over the translations carefully before using them. Transpose is not a substitute for the judgement of someone trained in the use of Ovid MEDLINE or PubMed.
An understanding of how Transpose works and its limitations - as well as an understanding of the MEDLINE database - will help you in obtaining an accurate and usable translation.


User #{{user.id}}
Balance ${{user.balance}}
Products
{{product.name || 'a' }}
{{product.stock}} in stock
Buy — ${{product.price}}


I'm a gruaduated computer science student from the University of Victoria. I have experience working as DevOps and a Full Stack Developer on Agile teams. I am always looking for new oportunities to learn and to build on my current skills.
Python, C, C++, Java, Typescript, Angular 2, HTML, CSS, JavaScript


{% extends "transactions/base.html" %} {% load crispy_forms_tags %} {% block ctt %}
{{ user.email }}
Simply select the account you wish to remove and click delete!


Windows 10 x64 (18363.657)
ReplacesCorHdrNumericDefines
COMIMAGE_FLAGS_ILONLY = 0n1
COMIMAGE_FLAGS_32BITREQUIRED = 0n2
COMIMAGE_FLAGS_IL_LIBRARY = 0n4
COMIMAGE_FLAGS_STRONGNAMESIGNED = 0n8
COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0n16
COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x10000
COMIMAGE_FLAGS_32BITPREFERRED = 0x20000
COR_VERSION_MAJOR_V2 = 0n2
COR_VERSION_MAJOR = 0n2
COR_VERSION_MINOR = 0n5
COR_DELETED_NAME_LENGTH = 0n8
COR_VTABLEGAP_NAME_LENGTH = 0n8
NATIVE_TYPE_MAX_CB = 0n1
COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0n255
IMAGE_COR_MIH_METHODRVA = 0n1
IMAGE_COR_MIH_EHRVA = 0n2
IMAGE_COR_MIH_BASICBLOCK = 0n8
COR_VTABLE_32BIT = 0n1
COR_VTABLE_64BIT = 0n2
COR_VTABLE_FROM_UNMANAGED = 0n4
COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN = 0n8
COR_VTABLE_CALL_MOST_DERIVED = 0n16
IMAGE_COR_EATJ_THUNK_SIZE = 0n32
MAX_CLASS_NAME = 0n1024
MAX_PACKAGE_NAME = 0n1024


David Beckham’s Inter Miami line up ambitious transfer by preparing huge salary offer to Real Madrid star
by Mark BrusDavid Beckham’s new club Inter Miami are reportedly preparing to make a huge offer to Real Madrid attacking midfielder James Rodriguez as they line up this ambitious transfer raid.
The MLS club will no doubt be looking to start with a bang with some big-name signings, and it looks like Rodriguez is one of their main targets.
MORE: Gareth Bale given surprise praise for Wales flag mocking Real Madrid
According to Don Balon, Inter Miami could try offering the Colombia international close to double his current wages, upping his salary to around £10.7million a year, up from £6m.
This kind of money is sure to turn plenty of heads, even if a talent like Rodriguez might also feel he still has something to offer in a more competitive league.
The 28-year-old has looked a world class performer at various points in his career, though it’s fair to say he’s not looked too close to that level for some time now.
It’s been a difficult spell for Rodriguez at the Bernabeu, though he showed some signs of improvement during a loan spell with Bayern Munich, even if it wasn’t enough to result in the transfer being made permanent.
At this point, it might well be the best move for Rodriguez to accept the big money and move to the MLS for the latter stages of his career.


% var entityDate = new Date(); %>
<% var monthNames = ["January", "February", "March","April", "May", "June", "July","August", "September", "October","November", "December"]; %>
<% var day = entityDate.getDate(); %>
<% var monthIndex = entityDate.getMonth(); %>
<% var year = entityDate.getFullYear(); %>
|
CrowdVoice.by
<%= monthNames[monthIndex] + ' ' + day +', ' + year %>
|
Reset Password
We’ve got a request from you to reset your password. Click on the button below for instuctions on how to reset your password. If this request was a mistake, ignore this email.
|
|
|
|
|


@(message: String) @Main("Home") {
Information
Alumni and Friends
Welcome Castle High School Alumni and Friends! Transcript Request Form Wish List from Faculty and Staff Castle Alumni T-Shirts Please use this page to find out about upcoming class reunions. If you would like to add or update information on this page, please email the Webmaster. Thank-you!


3 changes Pakistan need to make to win second Australia Test
by Abdul MajidIt was a chastening defeat for Pakistan on Sunday when Australia finished the first Test with an innings and five-run win in the first Test of the two-match series.
Azhar Ali and co made a few strategic and a few selection mistakes going into the first match against the in-form Aussies, but the thing that hurt them the most was the erroneous selection of a final playing XI.
A few tweaks are the need of the occasion which will give Pakistan some hope that they just might be able to compete with the Tim Paine-led Baggy Greens.
1. Bring back Abbas
This one is a no-brainer. Every cricket expert and most importantly the opposition captain Paine also was surprised and also thankful that the right-arm seamer was not a part of the final XI for Pakistan in the first Test.
The line and length bowler boasts exceptional record in Tests for Pakistan and leaving him out for Imran Khan, just because the latter had a good tour match was as bad a call as it can be.
Abbas gives Pakistan the edge with his immaculate precision and probing line and length, one thing Pakistan missed during the first Test against the Aussies.
2. Play two openers
Since the arrival of Misbahul Haq, the Pakistan team has made it a habit of playing their captain up front. Babar, from one-down position in T20Is, jumped to the opening spot during the Australia T20Is. Owing to his form, he did make a case for the spot, but his move from his usual position was quite unusual.
Likewise, Azhar’s jump from a one-down or a two-down batsman to an opener was uncalled for.
Pakistan have brought with him three specialist openers for the job in the form of Abid Ali, Imamul Haq and Shan Masood. While Masood proved that he can be handy in Australia but needs to learn to build up on good starts, Imam or Abid can help Pakistan consolidate their batting against the Aussie pace storm.
With two specialist openers in the line-up, Azhar can then hold the all-important one-down spot, with Asad Shafiq, Babar Azam, Muhammad Rizwan and eventually Haris Sohail to follow.
3. Change of mindset
Apart from the selection headache, Pakistan need to look at their mindset too.
In the first Test, opting to bat first may have seemed like a perfect decision if it were the UAE, but against the Aussie pacers, on a fresh pitch and new ball, and also a weak batting line-up, the decision spelled disaster from ball one.
Also, the fight shown by Babar and Rizwan in the second innings and before that by Shafiq, shows that Pakistani batsmen can survive on the Australia pitches, but they have to be patient and smart to bat in those conditions.
As we saw in both innings in the first Test, Pakistani batsmen, on occasions, gifted their wickets to the hosts by playing rash shots. The gameplan needs to be clear that survival is a priority because you can’t score if you are not out there.


Stock Calculator
Mark14 ReactJS, React-Router, Axios, Material-UI
Find out the current price of your investments in any stock worldwide.
Just choose the stock and enter purchase date and quantity in which you bought it.
Then you will came to know the current value of the investments in that stock giving Profit/Loss statements with Absolute Returns too.


Welcome in servlet 3 api demo
Following links should work:
[/index.html] - this page = default toplevel welcome page
[/browse.jsp] - resource browser as a toplevel JSP page
[/dog] - welcome page defined in the web-dog.xml
[/dog/main.html] - dog's welcome page explicitly
[/main.html] - just to remind that dog can add resources anywhere, including toplevel (it does not have any dedicated subcontext)
[/dog/hello] - servlet from dog mapped by annotation
[/dog/oldway] - servlet from dog mapped by the old way declaration in web-fragment.xml
Following links should NOT work:
[/WEB-INF/hidden.txt] - toplevel's protected area
[/META-INF/hidden.txt] - dog's protected area


3 Lab - Continuous Probability
You can download the original R notebook document HERE
3.1 Question 1
The number of points scored by each team in a tournament is normally distributed, with mean μ = 32 and standard deviation σ = 7. What is the probability of:
3.1.1 1a
A team scoring 20 points or fewer? Plot the density function and shade the area. (5 pt.)
pnorm(20,mean = 32,sd = 7)
## [1] 0.04323813
curve(dnorm(x,32,7),from = 10,to = 54)
cord.x <- c(10,seq(10,20,0.01),20)
cord.y <- c(0,dnorm(seq(10,20,0.01),mean = 32,sd = 7),0)
polygon(cord.x,cord.y,density = 10)
3.1.2 1b
A team scoring more than 35 points? Plot the density function and shade the area. (5 pt.)
pnorm(35,mean = 32,sd = 7,lower.tail = FALSE)
## [1] 0.3341176
curve(dnorm(x,32,7),from = 10,to = 54)
cord.x <- c(35,seq(35,54,0.01),54)
cord.y <- c(0,dnorm(seq(35,54,0.01),mean = 32,sd = 7),0)
polygon(cord.x,cord.y,density = 10)
3.1.3 1c
A team scoring between 20 and 40 points? Plot the density function and shade the area. (5 pt.)
pnorm(40,mean = 32,sd = 7) - pnorm(20,mean = 32,sd = 7)
## [1] 0.8302129
diff(pnorm(c(20,40),mean = 32,sd = 7))
## [1] 0.8302129
curve(dnorm(x,32,7),from = 10,to = 54)
cord.x <- c(20,seq(20,40,0.01),40)
cord.y <- c(0,dnorm(seq(20,40,0.01),mean = 32,sd = 7),0)
polygon(cord.x,cord.y,density = 10)
3.2 Question 2
The number of comments per post on a social media site is exponentially distributed, with the average post receiving ten comments. What percentage of posts get:
3.2.1 2a
Fewer than three comments? Plot the density function and shade the area. (5 pt.)
pexp(3,rate = 1/10)
## [1] 0.2591818
curve(dexp(x,rate = 1/10),from = 0,to = 100)
cord.x <- c(0,seq(0,3,0.01),3)
cord.y <- c(0,dexp(seq(0,3,0.01),rate = 1/10),0)
polygon(cord.x,cord.y,density = 10)
3.2.2 2b
More than 20 comments? Plot the density function and shade the area. (5 pt.)
pexp(20,rate = 1/10,lower.tail = FALSE)
## [1] 0.1353353
curve(dexp(x,rate = 1/10),from = 0,to = 100)
cord.x <- c(20,seq(20,100,0.01),100)
cord.y <- c(0,dexp(seq(20,100,0.01),rate = 1/10),0)
polygon(cord.x,cord.y,density = 10)
3.2.3 2c
Between five and ten comments? Plot the density function and shade the area. (5 pt.)
diff(pexp(c(5,10),rate = 1/10))
## [1] 0.2386512
curve(dexp(x,rate = 1/10),from = 0,to = 100)
cord.x <- c(5,seq(5,10,0.01),10)
cord.y <- c(0,dexp(seq(5,10,0.01),rate = 1/10),0)
polygon(cord.x,cord.y,density = 10)
3.3 Question 3
Basic raster creation and calculation:
3.3.1 3a
Create a first raster (30 rows × 30 columns) and assign values to the raster based on random values from a uniform distribution. Plot the raster and the histogram. (5 pt.)
library(raster)
ras1 <- raster(nrows=30,ncols=30,xmn=0,xmx=30,ymn=0,ymx=30)
ras1[] = runif(ncell(ras1))
plot(ras1)
hist(ras1)
3.3.2 3b
Create a second raster (30 rows × 30 columns) and assign values to the raster based on random values from a normal distribution. Plot the raster and the histogram. (5 pt.)
ras2 <- raster(nrows=30,ncols=30,xmn=0,xmx=30,ymn=0,ymx=30)
ras2[] = rnorm(ncell(ras2))
plot(ras2)
hist(ras2)
3.3.3 3c
Create a third raster (30 rows × 30 columns) and assign values to the raster based on cell-by-cell addition of the first raster and the second raster. Plot the raster and the histogram. (5 pt.)
ras3 <- ras1 + ras2
plot(ras3)
hist(ras3)
3.3.4 3d
Calculate the mean value of the third raster. Reclassify the third raster into a binary image: 1 (cell value > mean value) and 0 (cell value <= mean value). Save the reclassified image to your working directory as a TIFF image. (5 pt.)
mean(ras3)
## class : RasterLayer
## dimensions : 30, 30, 900 (nrow, ncol, ncell)
## resolution : 1, 1 (x, y)
## extent : 0, 30, 0, 30 (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
## data source : in memory
## names : layer
## values : -2.690102, 3.762328 (min, max)
m <- cellStats(ras3,mean)
ras3[ras3 < m] <- 0
ras3[ras3 >= m] <- 1
plot(ras3)
hist(ras3)
writeRaster(ras3,filename = "output/test.tif",overwrite=TRUE)
r <- raster("output/test.tif")
plot(r)
hist(r)


People Picker - Regular
Click on the search input below and type in something. Then click on "Search organization people" button.
This demo simply returns all persons by searching, you can implement filtering\searching function by your own.
Add person to people picker by clicking on search result.
Code:
People Picker - Compact
Create compact people picker by supplying uif-type="compact" type.
You can also prefill your model with selected persons like in this demo.
Code:
People Picker - searching as you type
It's possible to run search automatically when you are typing.
By providing uif-search-delay="500" people picker will run search automatically after specified delay.
Type in something into the input below, after 500ms search will be trigged.
Code:
People Picker - compact, async data, searching as you type
This demo combines compact people picker and search as you type feature.
It also adds async data source. You can provide uif-people function to return array of persons OR promise resolving
array of persons.
People picker below simulates ajax request by using $timeout service.
Code:
People Picker - disconnected
You can provide uif-disconnected attribute for <uif-people-search-more> to render disconnected
UI.
Click on element below to toggle disconnected state.
Code:
People Picker - disabled
Control disabled state by using ng-disabled attribute.
Code:
People Picker - members List:
Renders members list by supplying uif-type="memberList".
Code:
People Picker - faceile
uif-type="facePile" for facepile mode.
Code:


Bonjour! This project was inspired by the famous iron architectural structure in Paris - better known as the Eiffel Tower. The Eiffel Tower is placed in front of a sunset backdrop that can be controlled to set below the horizon. A twinkling lightshow follows the sunsetting to complete the experience.
Before:
After:
The Eiffel Tower was implemented with lathe, box, sphere, cylinder, and wireframe geometries. To build the tower, programming was completed in stages corresponding with the upper, middle, and lower components of the landmark. The iconic structure of the Eiffel Tower was challenging to replicate because of its smooth curves yet rigid composition. A balance was achieved by combining traditional geometries with curved and unique polygons. The upper parts of the tower include a rectangular spire, segmented sphere dome, hexagonal platform, and central lathe wireframe. Code for the lathe geometries was adapted from our in-class example. These materials were positioned and sized accordingly to mimic the dimensions of the tower. The lathe wireframe at the center of focus is created from two different Bezier curves each with four control points. As there is some repetition in the shape of the curved supports, this pattern was used throughout the design as seen in the shape of the legs. The center of the tower is made up of four legs and two supports – one wireframe and one solid box geometry. The legs are also lathe geometries, however, made with one Bezier curve and segmented by four to create the curving rectangular shape. The lower portion of the tower mimics the middle’s legs and supports with minor changes. The legs of the base had to be rotated in the x and z axis directions. Additionally, an arch support had be added between the gaps of every base support. This arch is a modified trapezoid with a quadratic curve base. In the final stage of the scene, after the sun sets, a lightshow on the tower occurs as is tradition in Paris. This animation is made from blocks of randomly positioned points that will either change their y position up or down in periods corresponding to the clock. Once their position of y reaches a certain threshold the animation stops, and the tower is left with its lights shining bright. The design of this animation was inspired by and adapted from our snow globe class example.
The background of the scene is mainly composed of the sky and a sun which sits to the left of the Eiffel Tower. This sky is adapted from the three.js example found here: Sky Shader and Sky Shader Code. Adapting this code was quite difficult as we had to make sure that we had all the features that came in the code and also make sure the code is compatible with the rest of our code, especially when it came time to combine the background and the tower.
Our background went through four iterations of changes before we arrived at our final scene. The first iteration
mainly consisted of the trying to adapt the code of the tower to the code for the shader.The second iteration was the animation of the sun.
Our idea was to have the sun start in the left corner above the horizon and travel across
the screen until it set. This iteration started off with the animation style that we saw in class. The style of the code
was based off this example: Moving Cube.
However this did not work, so we tried to use a while loop that would remove the sun, adjust the position and rerender until
the sun was below y = 5000. This attempt was the closest attempt as the console.log would print the y position of the sun
which was shown to be decreasing and stopping once reaching 5000, yet the actual sun in the scene was not moving.
So then we moved onto the third iteration. In this iteration, we went back to the original source code we adapted and
created a gui control where the user can choose between three different types of day: noon, sunset, night. However,
this was not the best way of creating the overall scene we had in mind.
Noon:
Sunset:
Night:
Finally, on the fourth iteration, we were able to create the scene. We used the GUI features again and added if statements
within the gui function to check for when the sun was below the horizon. Once the scene was dark, the lights would turn on.
Before:
Sunset:
Night:


Create Object from JSON String
Store and retreive data from local storage.
Looping through an array using a for in loop:
Submit
Create JSON string from a JavaScript object.
Convert a string into a date object.
Local storage


This helper function should be invoked to provide values for the namesake
edge_aes
argument, which is present in any function where edges are
created.
edge_aes(style = NULL, penwidth = NULL, color = NULL, arrowsize = NULL, arrowhead = NULL, arrowtail = NULL, fontname = NULL, fontsize = NULL, fontcolor = NULL, len = NULL, tooltip = NULL, URL = NULL, label = NULL, labelfontname = NULL, labelfontsize = NULL, labelfontcolor = NULL, labeltooltip = NULL, labelURL = NULL, edgetooltip = NULL, edgeURL = NULL, dir = NULL, headtooltip = NULL, headURL = NULL, headclip = NULL, headlabel = NULL, headport = NULL, tailtooltip = NULL, tailURL = NULL, tailclip = NULL, taillabel = NULL, tailport = NULL, decorate = NULL)
| style | the edge line style. The |
|---|---|
| penwidth | the thickness of the stroke line for the edge itself. |
| color | the color of the edge. Can be an X11 color or a hexadecimal color code. |
| arrowsize | a scaling factor for arrowheads. The default value is
|
| arrowhead | the type of arrowhead to use. The |
| arrowtail | the type of arrowtail to use. The |
| fontname | the name of the system font that will be used for any edge text. |
| fontsize | the point size of the font used for any edge text. |
| fontcolor | the color used for any edge text. Can be an X11 color or a hexadecimal color code. |
| len | the preferred edge length for an edge, in inches. Default value is
|
| tooltip | text for a tooltip that appears when hovering over an edge. If
text is not provided, then the default tooltip text will provide the edge
definition (i.e., |
| URL | a URL to associate with an edge. Upon rendering the plot, clicking edges with any associated URLs will open the URL in the default browser. |
| label | the label text associated with the edge. This text will appear near the center of the edge. |
| labelfontname | the name of the system font that will be used for the
|
| labelfontsize | the point size of the font used for the |
| labelfontcolor | the color used for the label text of the
|
| labeltooltip | text for a tooltip that will appear when hovering over
the main label of an edge (if label text provided in the |
| labelURL | a URL to associate with edge label text. Upon rendering the plot, clicking edge labels with any associated URLs will open the URL in the default browser. |
| edgetooltip | this option provides a means to specify a tooltip with
only the non-label parts of an edge. If this is defined, the value
overrides any |
| edgeURL | this option provides a means to specify a URL with only the
non-label parts of an edge. If this is defined, the value overrides any
|
| dir | an optional direction type. Normally, for directed graphs, this is
|
| headtooltip | this option provides a means to specify a tooltip that can
be displayed by hovering over the part of an edge that is adjacent to
incoming node (see the |
| headURL | this option provides a means to specify a URL that can be
accessed by clicking the part of an edge that is adjacent to incoming node
(see the |
| headclip | if |
| headlabel | this option provides a means to display a label near the
part of an edge that is adjacent to incoming node (see the |
| headport | allows one to specify which compass position on the incoming
node the head of the edge will alight. Options are |
| tailtooltip | this option provides a means to specify a tooltip that can
be displayed by hovering over the part of an edge that is adjacent to
outgoing node (see the |
| tailURL | this option provides a means to specify a URL that can be
accessed by clicking the part of an edge that is adjacent to outgoing node
(see the |
| tailclip | if |
| taillabel | this option provides a means to display a label near the
part of an edge that is adjacent to outgoing node (see the |
| tailport | allows one to specify which compass position on the outgoing
node the tail of the edge will be emitted from. Options are |
| decorate | if |
# Create a new graph and add # a path with several edge # aesthetic attributes graph <- create_graph() %>% add_path( n = 3, type = "path", edge_aes = edge_aes( style = "dot", color = c("red", "blue"))) # View the graph's internal # node data frame; the node # aesthetic attributes have # been inserted graph %>% get_edge_df()#> id from to rel style color #> 1 1 1 2 <NA> dot red #> 2 2 2 3 <NA> dot blue


Clubs and Communites outside your University
Vegavath Racing
Apostrophe
Hashtag
Equinox-The Space Club
Mangobites
Shaken not Stirred
Panache
Newolf Society
inGenius
Kludge
onCreate()
Techwarts
Nirantara
H.E.L.P
The Clefhangers
E-Cell
UniFOSS
Swarantraka
Team Avions
Team Enigma
Bits & Bytes
Association for Computing Machinery
Terpsichore
The HAM Club
Idea Pi
MUNSOC
HackerSpace
The Pixelloid Club


Join Bonus: 25$ Per Task: 10$
Small task takes just 30 seconds to complete and earn 10$ per task.
HOME MEMBER LOGIN SUPPORT FAQ


--- title: Calculating ratios with Tidyverse author: Pablo Cánovas Tourné date: '2020-05-13' slug: calculating-ratios-with-tidyverse output: blogdown::html_page: highlight: tango categories: - R - Tips tags: [Tidyverse] subtitle: 'Explaining summarise hidden behaviour' summary: "Explaining summarise hidden behaviour" authors: [pablo-canovas] disable_codefolding: true codefolding_show: hide codefolding_nobutton: true ---
Calculating percentages is a fairly common operation, right? However, doing it without leaving the pipeflow always force me to do some bizarre piping such as double grouping and summarise.
I am using again the nuclear accidents dataset, and trying to calculate the percentage of accidents that happened in Europe each year.
nuclear_accidents <- read_csv("https://query.data.world/s/47s7katrhxxd674ulus425k42l5u4s")
nuclear_accidents <- nuclear_accidents %>%
select(-Description) %>%
mutate(Year = Date %>% mdy() %>% year(),
In_Europe = if_else(Region %in% c("EE", "WE"), T, F) %>% as.factor()) %>%
filter(Year %>% between(1989, 2016))
nuclear_accidents %>% head(4) %>% kable()
| Date | Location | Cost (millions 2013US$) | INES | Smyth Magnitude | Region | Fatalities | Year | In_Europe |
|---|---|---|---|---|---|---|---|---|
| 3/11/2011 | Fukushima Prefecture, Japan | 166089.0 | 7 | 7.5 | A | 573 | 2011 | FALSE |
| 12/8/1995 | Tsuruga, Japan | 15500.0 | NA | NA | A | 0 | 1995 | FALSE |
| 12/19/1989 | Vandellòs, Spain | 930.9 | 3 | NA | WE | 0 | 1989 | TRUE |
| 2/1/2010 | Vernon, Vermont, United States | 808.9 | NA | NA | NA | 0 | 2010 | FALSE |
This can be achieved by several ways. One common path would be:
nuclear_accidents %>%
group_by(Year, In_Europe) %>%
summarise(N = n()) %>%
group_by(Year) %>%
mutate(Total_per_year = sum(N),
Ratio = round(N/Total_per_year, 2)) %>%
head(4) %>%
kable()
| Year | In_Europe | N | Total_per_year | Ratio |
|---|---|---|---|---|
| 1989 | FALSE | 4 | 6 | 0.67 |
| 1989 | TRUE | 2 | 6 | 0.33 |
| 1990 | FALSE | 1 | 1 | 1.00 |
| 1991 | FALSE | 3 | 3 | 1.00 |
Another one more bizarre would be totalizing first, then grouping including that amount (to avoid being dropped) and then summarise.
nuclear_accidents %>%
group_by(Year) %>%
mutate(Total_per_year = n()) %>%
group_by(Year, In_Europe, Total_per_year) %>%
summarise(N = n()) %>%
mutate(Ratio = round(N/Total_per_year, 2)) %>%
head(4) %>%
kable()
| Year | In_Europe | Total_per_year | N | Ratio |
|---|---|---|---|---|
| 1989 | FALSE | 6 | 4 | 0.67 |
| 1989 | TRUE | 6 | 2 | 0.33 |
| 1990 | FALSE | 1 | 1 | 1.00 |
| 1991 | FALSE | 3 | 3 | 1.00 |
Kind of weird. However, there is a much simpler way:
nuclear_accidents %>%
group_by(Year, In_Europe) %>%
summarize(N = n()) %>%
mutate(Ratio = round(N / sum(N), 2)) %>%
head(4) %>%
kable()
| Year | In_Europe | N | Ratio |
|---|---|---|---|
| 1989 | FALSE | 4 | 0.67 |
| 1989 | TRUE | 2 | 0.33 |
| 1990 | FALSE | 1 | 1.00 |
| 1991 | FALSE | 3 | 1.00 |
The first time I saw this result I didn’t understand it because if you have your dataframe grouped by Year
and In_Europe
then sum(N)
should be equal to N
.
What is going on?
This behaviour has to do with a tricky funcionality of summarise
.
Take a closer look of the grouping variables at the console output. Before the summarise function the dataframe seems grouped normally and the operation will be performed within each group:
# A tibble: 4 x 9
# Groups: Year, In_Europe [4]
# Date Location `Cost (millions ~ INES `Smyth Magnitud~ Region Fatalities Year In_Europe
# <chr> <chr> <dbl> <dbl> <dbl> <chr> <dbl> <dbl> <fct>
# 1 3/11/~ Fukushima ~ 166089 7 7.5 A 573 2011 FALSE
# 2 12/8/~ Tsuruga, J~ 15500 NA NA A 0 1995 FALSE
# 3 12/19~ Vandellòs,~ 931. 3 NA WE 0 1989 TRUE
# 4 2/1/2~ Vernon, Ve~ 809. NA NA NA 0 2010 FALSE
However, once the dataframe is summarized, the resulting dataframe is no longer grouped by the same original variables:
# A tibble: 4 x 3
# Groups: Year [3]
# Year In_Europe N
# <dbl> <fct> <int>
# 1 1989 FALSE 4
# 2 1989 TRUE 2
# 3 1990 FALSE 1
# 4 1991 FALSE 3
Actually, the default behaviour of summarise is to drop the last group. The reason behind that is that, once the operation is performed you should have only one obervation per group, and it has no sense to grouping by it anymore. That’s why the last example I show above works. Now you can take advantage of it too!
Furthermore, you can learn more about the dplyr 1.0.0 last minute additions which include an explicit message to highlight the behaviour we have talked about here.


Profile Settings
Name
User Name
Private Profile
Public Profile
Register
Don’t have an account?
Signup


Software Engineer
Tencent Inc. Beijing, ChinaI have joined Tencent as a software engineer and been working in Tencent Ads since July, 2019.
I have joined Tencent as a software engineer and been working in Tencent Ads since July, 2019.
Designed and implemented the first multi-tenant edge computing system that supports dynamic QoE for deep learning applications using FPGA. The work has been accepted by INFOCOM 2020 (Top 19.8%).
Proposed data parallelism methods for FPGA-based edge computing to support multi-task cases. The work has been accepted by IEEE Transactions on Mobile Computing (TMC).
Designed the first FPGA-based edge computing system that reduces the latency of mobile AI applications greately. The work has been accepted by INFOCOM 2018 (Top 19.2%).
Worked in the Intelligence Cloud and Edge (ICE) Group mentored by Dr. Yunxin Liu (Principal Researcher).
Ported a RNN-based SwiftKey input prediction model to the Huawei NPU platform independently.
Research on accelerating DNN inference for mobile CPU-based devices. Implemented a proof-of-concept system based on the SSD framework for traffic violation detection.
Took part in the "Huaijiao Digital Campus Platform" project. Implemented static webpages and data interfaces using JQuery and native JavaScript.
Research on Edge Computing and Networked Systems advised by Prof. Chenren Xu
C/C++, Python
JavaScript, HTML & FPGA
Java, Android, TensorFlow & PHP
Computer Networks & Operating System
Computer Architecture, Algorithms, Social Networks & SW-HW Co-design
Machine Learning, Database
Worked as the server administrator in lab for 2 years, maintaining 30 Linux servers.
Familiar with Microsoft Office
Reviewer of ACM SenSys'18, ACM/IEEE IPSN'18, IPSN'19
Web administrator for ACM SIGCOMM'19
Music, Billiards, History, Military, Games


A Safer Delete Experience
Clicking a deleted
button creates a dropdown with a confirmation and cancel button. This requires
two click actions from the user, helping to prevent accidental deletions.
The markup is declarative with customizable prompt text, button text, and cancel text.

Delete

There are no added dependencies, deleted is 100% vanilla JavaScript.
A customized example
Custom Delete

{{trash-icon}}
Custom Delete

Installing deleted
It's available on npm, bower, and github.
npm i --save deleted
bower i --save deleted
git clone https://github.com/johnotander/deleted
What's missing?
Currently, support needs to be added for ARIA attributes to ensure that this delete concept is accessible.


A significant challenge in New-York city is air quality. Air pollution causes serious health problems for many people living in urban areas, including asthma and heart disease. Although air quality has improved tremendously, there are still many premature deaths and hospital visits attributable to air pollution health concerns. Neighborhoods with the highest poverty percentages and highest PM2.5 concentration have the most incidents of asthma emergency visits, hospitalization and cardiovascular hospitalizations as explored in this spatial analysis project.
GIS PresentationThe international refugee crisis has persisted for nearly two decades, and the problem is not on the decline. Despite international laws to regulate migration and provide protection for asylum seekers, refugees and migrants face physical dangers, exposure, and risk of capture and assault by smugglers or gangs. Many migrants do not survive the journey. This project seeks to understand the spatial distribution and geographical relationship of migrant deaths in the last five years.
GIS Presentation


Guy Uses Dead Grandad Chat-Up Line To Slide Into Girl’s DMs And She Was Not Impressed
by Julia BanimThroughout the centuries, love – or at least the sensation of fancying someone a bit – has been expressed through a myriad of unusual – and sometimes downright odd – practices.
From giving your crush apples soaked in your own sweat (yes, really) to handing them a wooden spoon when you want to get frisky, history informs us there really is no weirdness limit when it comes to humans being guided by their downstairs brain.
However, one young man could well have just attempted the most flabbergastingly terrible attempt at human courtship of all time; expertly managing to convey a morbid disrespect for the dead with a woeful lack of self-awareness.
You wouldn’t think it needs to be said that you should always make sure to leave your dead grandad firmly outside of your efforts to slide into a person’s DMs. However, this Dating 101 tip doesn’t appear to have reached all ears.
23-year-old Rachel Brogan was left quite surprised when, one fine evening, she received a DM from a stranger enquiring, ‘Hey did you hear about my granddad x’.
Puzzled, the Scotland-based NHS clerical officer simply – and understandably – replied, ‘what?’. It’s at this point the messenger’s intentions became all too clear.
Appearing to feign a grief-addled mix up, the DM Romeo explained:
Sh*t sorry wrong person meant to txt a girl a went to school with but clicked on you by accident. Not thinking straight as my grandad passed away sorry x
Had he left it there, Rachel could well have believed his story. However, the would-be smooth guy made the grave error of believing her to have been born yesterday.
Devastation apparently forgotten, the messenger proceeded to purr:
You are lovely tho x [smiley face emoji] You single? x
Not having any of it, Rachel wisely chose not to reply and instead shared a screenshot of the ghoulish flirtation on Twitter, where it has been liked well over 30,000 times.
One person grimaced:
Translation….
Hello me Grandads dead, fancy a shag to cheer me up?
Another empathised:
I once had a guy tell me he had cancer as an opener for my dms never met him before, didn’t know who he was either.
Bizarrely, this isn’t the first time something like this has happened to poor Rachel, who has since admitted to having had ‘quite a few ones like that’.
Rachel – who usually prefers to meet people in real life or through dating apps – has said:
I think it was just a weird way to get my attention, […]
Better luck next time pal…
Jules studied English Literature with Creative Writing at Lancaster University before earning her masters in International Relations at Leiden University in The Netherlands (Hoi!). She then trained as a journalist through News Associates in Manchester. Jules has previously worked as a mental health blogger, copywriter and freelancer for various publications.


Functions | |
| FX_EXPORT const DList * | fx_data_get_smlist (void) |
| get all the fetion's schedule sms info | |
| FX_EXPORT const Fetion_Schedule_SMS * | fx_get_schedulesms_by_id (int id) |
| get an schedule sms structure by schedue_sms_id | |
| FX_EXPORT int | fx_set_schedule_sms (const DList *receiver, const char *msg, const char *send_time, EventListener func, void *args) |
| set an schedule sms | |
| FX_EXPORT int | fx_delete_schedule_sms (int sms_id, EventListener func, void *args) |
| delete an schedule sms | |
| FX_EXPORT char * | fx_covert_schedule_receiver_to_string (DList *receiver) |
| covert schedule receiver to string from DList |
| char * fx_covert_schedule_receiver_to_string | ( | DList * | receiver | ) |
covert schedule receiver to string from DList
| receiver | The DList point of the schedule sms. |
| const DList * fx_data_get_smlist | ( | void | ) |
get all the fetion's schedule sms info
this function will return a list which store the schedule sms info
Fetion_Schedule_SMS *sch_sms = NULL; DList *tmp = (DList *)fx_get_smlist(); while(tmp) { sch_sms = (Fetion_Schedule_SMS *) tmp->data; if(sch_sms) { // do something to access this structure... } tmp = d_list_next(tmp); }
| int fx_delete_schedule_sms | ( | int | sms_id, | |
| EventListener | func, | |||
| void * | args | |||
| ) |
delete an schedule sms
| sms_id | The id which you want to delete the schedule sms. |
| const Fetion_Schedule_SMS * fx_get_schedulesms_by_id | ( | int | id | ) |
get an schedule sms structure by schedue_sms_id
this function will return an schedule sms structure by schedue_sms_id
| int fx_set_schedule_sms | ( | const DList * | receiver, | |
| const char * | msg, | |||
| const char * | send_time, | |||
| EventListener | func, | |||
| void * | args | |||
| ) |
set an schedule sms
| receiver | a dlist of the receivers who you want to send sms. | |
| msg | The content which you want to send. | |
| send_time | The time when which you want to send. format: "2009-04-22 16:15:00" |


What is API?
As we are to use Microsoft Computer Vision API. We need to know what API is first.
API is an abbreviation of Application Programming Interface. Wikipedia says API is a set of subroutine definitions, protocols, and tools for building application software. This definition is too abstract to understand what it is at a glance intuitively.
I thought I need to describe what API is and why we need that in my words to make other people understand what it is more easily. We neeed to talk about what "Interface" is and how we use the concept in Software Engineering field. You might have heard words like CLI(Command Line Interface) and GUI(Graphi User Interface). You might have some people around you complaining "This application has bad User Interface it is so hard to touch this button." Now, we are more ready to think about thwta User Interface is? User Interface here means somewhere user and software meets and interact with each other. Interface is where two different entities having different features meet and interact.
Where can we use API?
So Application Programming Interface means where two different applications(programs) meet and interact each other. To make two different systems work properly as we intended, we need some functions and protocols, which connect two different systems.
Now you want to make an application suggesting a good restaurant based on information where user is. You want to add new feature which leads user to recommended restaurant. It is hard to add a map related feature for an individual developer because developing an application providing geographic information needs some extra money and time itself. There seems too many hurdles to make this simple restaunrant finding application. We can adopt an already made map application like Google Map, which provides the specific information we want, though. All we need to do is to connect to application and works properly. What we need right now to connect and work both applications together is API.
The definition from Wikipedia again. API is a set of subroutin definitions, protocols, and tools for building application software. We need subroutines(functions to extract some regional information from Google Map) and protocols(communication tools between restaurant application and Google Map service) and tools(tool is quite broad notation; it can include definditions, protocols, and other features like Google Map specified icon or "click" button which come along with using Google Map API).
Hope you could grasp the concept of API. We can advance a step forward to use Microsoft Computer Vision API. On Getting Started page, we will deal with what Microsoft Computer vision API is and how we can get started with that.


Bobby Orr defends Don Cherry, rips Sportsnet for decision to fire commentator
by The Canadian Press, StaffLegendary defenceman Bobby Orr has blasted Sportsnet for firing Don Cherry.
In an interview with Boston radio station WEEI on Thursday, Orr called the decision to sack his former Bruins coach "disgraceful."
"I know Grapes better than anybody," Orr said.  This guy is the most generous, caring guy that I know. What they've done to him up there is disgraceful, it really is. It's a new world I guess. Freedom of speech doesn't matter."
Sportsnet fired Cherry on Monday following his comments on "Hockey Night in Canada," which many felt were critical of immigrants for not wearing Remembrance Day poppies.
"You people that come here, whatever it is, you love our way of life, you love our milk and honey, at least you can pay a couple bucks for a poppy or something like that," Cherry said last Saturday on his "Coach's Corner" segment.
Cherry has denied he was singling out visible minorities.
Orr said he has talked to Cherry every day since the firing.
"He's getting some nice calls from his friends here in Boston," Orr said. "He is getting some wonderful support. He's hurt, but he's going to be fine."
Sportsnet has not announced its plans for the "Coach's Corner" segment. A message left with co-host Ron MacLean was not immediately returned.
The first "Hockey Night in Canada" since the firing is Saturday night.
Orr and Cherry have had a long connection, dating back to their days with the Bruins in the mid-1970s.
The two have been regulars at the Canadian Hockey League's annual top prospects game since its inception in 1996, with the teams usually called "Team Orr" and "Team Cherry."
Cherry's name was mentioned in the March 2019 press release announcing the 2020 event. A CHL spokesman said in an email this week that coaches and rosters were still being reviewed for the Jan. 16 game in Hamilton, Ont.
This report by The Canadian Press was first published Nov. 15, 2019


Tribe Calls Information Guide Dear Creative, are you ready to your freelance biz to the next level?


Dark and Light Windows Phone themes are supported via A and B color swatches. When viewed via an Apache Cordova app on Windows Phone all system colors will be automatically applied via Theme Switcher plugin
switch to dark switch to lightThis is a paragraph that contains strong, emphasized and linked text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis...


We come to do beautiful, epic, awe-inspiring work. More than that, we want our work to contribute something positive to the world.
Build awesome experiences.
We work tirelessly at exploring human behaviour to design and build awesome experiences. We do this to help people become more aware of their money decisions and start making better ones so they can do more of the things that matter most to them.
Having fun while doing it.
Creating something extraordinary doesn’t come easily, but we believe that the best ideas come from people who are having fun. So you’ll be challenged. You’ll laugh. Hopefully you won’t cry much. And you’ll have the opportunity to make a difference in people’s lives.
If you think you can do amazing things with our team at our offices, we’d love to hear from you.
22seven from Old Mutual is a money management tool helping South Africans to show their money who’s boss. Our customers are our superheroes and like Yoda, Gandalf and Dumbledore, 22seven helps our superheroes with the tools to make better financial decisions.
"Quality Assurance Analyst"Our HQ is in one of the oldest theatres in South Africa, right in the middle of the Cape Town City Bowl. Imagine if you smashed a temple of amazingness into a really comfortable lounge with great art on the walls. That still wouldn’t be as awesome as our offices. Needless to say, anyone who wants to work with us should be in Cape Town, or plan to be.
If you think you can see yourself as part of the 22seven tribe, then email us. Please include a brief motivation on why you would be a fit, your CV and if applicable a portfolio of work you have done. If we’d like to chat more, someone at 22seven will be in direct contact with you.


---
layout: talk_reveal4
title: SARS-CoV-2 evolutionary dynamics
venue: Fred Hutch
event: COVID-19 Research Talk
author: Trevor Bedford
widescreen: true
draft: true
---
Trevor Bedford (@trvrb)
{{ page.title }}
Associate Professor, Fred Hutchinson Cancer Research Center
{{ page.date | date: "%-d %b %Y" }}
{{ page.event }}
{{ page.venue }}
1. Emergence of variants of concern
2. Current circulation patterns
3. Evolutionary rate in context
4. Project overview
Emergence of variants of concern
484K and 501Y repeatedly emerging across the world
Emergence of 501Y.V1 (B.1.1.7) in the UK
Emergence of 501Y.V2 (B.1.351) in the South Africa
Emergence of 501Y.V3 (P.1) in the Brazil
Working hypothesis of within-host evolution occurring during prolonged infection,
driven by natural selection for immune escape.
Rapid within-host evolution during persistent infection
484K and 501Y observed during this evolution
Current circulation patterns
VUI / VOC lineages are rapidly expanding across the world
These lineages show excess mutations across the genome
But show most substantial excess in the S1 domain of spike
Evolutionary rate in context
Up to December, my expectation was evolution as seen in seasonal coronaviruses
OC43 and 229E show flu B-like rates of adaptive evolution in S1
SARS-CoV-2 evolves at a rate of ~3.4 subs per year in spike S1
Spike S1 rate of ~3.4 subs per year similar to HA1 of flu A
Three scenarios for ongoing viral evolution
SARS-CoV-2 genomic epi: Data producers from all over the world, GISAID and the Nextstrain team
Bedford Lab: John Huddleston, James Hadfield, Katie Kistler, Louise Moncla, Maya Lewinsohn, Thomas Sibley, Jover Lee, Cassia Wagner, Miguel Paredes, Nicola Müller, Marlin Figgins, Eli Harkins


{% extends "base.html" %} {% block body %}
{{ connection.departure}} - {{ connection.arrival}}
From: {{connection.from}}
To: {{connection.to}}
{{ connection.price }}


Mapped Logic
The
Mapped Logic section provides a table listing resources allocated by the
fitter to mapped logic. The page will appear in your browser sorted by
Signal Name, but you can choose to sort it by Signal Name, Function Block,
and Pin Number by clicking on the appropriate table headers.
The
Mapped Logic table contains the following:
Note:
Clicking on the signal name will open a new window with the equations for
that signal.
-
The
total number of product terms
-
The
number of signals used
-
The
function block number - an asterisk "*" indicates a user assignment
Note:
Clicking on the function block will provide a detailed table of all the
block's resources and a graphical display of the function block diagram
(see
Function Block Specifics for more details).
Note:
Clicking on the underscored macrocell number will provide a graphical display
of the macrocell that looks like this:
.
-
The
slew rate
-
The
pin number - an asterisk "*" indicates a user assignment
Note:
Clicking on the underscored pin number will provide the pin layout diagram
for the highlighted pin. Rolling
your mouse over the colored pin will pop up a tooltip with the signal name
assigned to the pin, the I/O standard, the
I/O style, the slew rate, and/or any constraints assigned to the pin:
-
The
pin type
-
The
pin use
-
The
input register use
-
The
I/O standard
-
The
I/O style


Please press 'Play Video' to play the video and then enter a description of the video in the text box below. After entering the word, please press 'Continue'. If the video does not play, leave the text box empty and press 'Continue'.
Please enter an animal name that best describes the video:


I'm Andrew Li, and I am a physicist, materials engineer, and software engineer
based in San Francisco. After working as a data analyst, I studied web development at Rithm School and am working at Numero
as a software engineer intern.
View my RESUME
I refactored the data visualization on a dashboard by turning server-generated templates into React components. I also built API endpoints with Ruby on Rails to serve those components and by refactoring the data fetching implementation from the database, was able to reduce load times by 50%. The endpoints were built to include services and authorization to delivery JSON data to components on the dashboard.
I maintain brand and influencer databases to provide data for clients and internal research. Responsibilities include pulling and compiling data deliverables, updating dashboards, development of ambassador panel, investigating discrepancies in competitive data, and coordinating labor resources for data vetting and other internal maintenance.
I used modern computational modelling methods to calculate relevant properties of candidate materials with a focus on energy storage to screen them before they are synthesized. Specifically, I modeled and optimized fullerene structures using NRLMOL (Naval Research Laboratory Molecular Orbital Library), a library for massively parallel computation of electronic structures, for use in organic photovoltaics. For more details, please visit this link.
GPA: 3.30
GPA: 3.20
LANGUAGES: JavaScript, Python, Ruby, HTML, CSS, Mathematica, MATLAB
OTHER SKILLS & DESIGN TOOLS: React, Express, Flask, Rails, PostgreSQL, Git, Microsoft Office Suite
Microblog |
|
|
React, Redux
|
A blogging app built with React and Redux. Includes basic blogging functionalities such
as adding, editing, and deleting posts and comments, as well as up/down voting posts.
Jobly |
|
|
React, Express, PostgreSQL
|
A full-stack job searching and connecting app. The backend is a restful JSON API built with Express
connected to a PostgreSQL database and the frontend is a single-page React app.
Messagely |
|
|
Express
|
A user-to-user private messaging app built with Express. Utilizes common authorization and
authentication patterns, as well as Twilio API integration and SMS verification.
View source code on Github.


In a previous post (link), I talked about why surface shaders are a great way to write shaders for Unity’s Deferred Lighting rendering path, and they are.
But given the choice, I’d rather write pixel shaders. Surface shaders always felt a little too much like magic for me, and I’ll trade writing more lines of code for more control over what my gpu is doing any day of the week.
For forward rendering, writing pixel shaders is virtually no different from writing shaders for any other engine, however not much information is out there about writing pixel shaders that work with Unity’s deferred lighting system (and more maddeningly, there is no information in Unity’s docs), so this post is going to talk about that.
Note that this article will not cover how to write custom lighting models for deferred lighting, but rather how to write shaders which use whatever lighting calculations are generated by the deferred lighting system.
I’m also on a mac, and the shader compiler for opengl is way less picky than for directX, so if you hit any snags on windows, send me a message on twitter and we’ll get things sorted out.
If you’re unfamiliar with what Deferred Lighting is, I recommend checking out my earlier post (link), where I go over the differences between deferred and forward rendering. As a quick refresher, Unity’s Deferred lighting system in a 3 step process:
Step 1: Initial data buffers are constructed. These buffers consist of a depth buffer (Z-Buffer), and a buffer containing the specular power and normals of the objects visible to the camera (G-Buffer).
Step 2: the previously built buffers are combined to compute the lighting for each pixel on the screen.
Step 3: all of the objects are drawn again. This time, they are shaded with a combination of the computed lighting from step 2 and their surface properties (texture, colour, lighting function, etc).
When you write surface shaders, you don’t really need to worry about the nuts and bolts of this process, but since we’re using pixel shaders we’re directly responsible for the first and last steps. As such all pixel shaders that work with Deferred Lighting are 2 pass shaders (3 pass if you want to cast shadows).
We’ll start building our shader with an empty pixel shader skeleton:
Shader "Specular-Deferred"
{
Properties {
_MainTex ("Base (RGB)", 2D) = "white"{}
_SpecColor ("Specular Color", Color) = (0.5,0.5,0.5,1)
_Shininess ("Shininess", Range(0.01,1)) = 0.078125
}
SubShader{
Pass{
}
Pass{
}
Pass{
}
}
}
Since we want our object to properly cast shadows, we need to write three passes. Note that if you only need your object to receive shadows, you can omit the third pass, since the shadow attenuation will already be factored into the light buffer that Unity builds as during Step 2.
The first thing we need to do is make sure that the G-Buffer knows about our object’s shape and specularity so that it can properly calculate lighting for the scene. To do this, we need a pass that outputs the normals and specular values for our object.
To start, we need to let Unity know which pass to use to get this information. Just like with forward rendering, we’re going to use the LightMode tag to assign our passes different roles. In this case, we’ll use “PrePassBase.”
A lot of this pass is very straightforward, since for the most part all we’re doing is outputting normals, but since we also want our objects to be shiny, we need to set the alpha of our fragment shader’s output to our object’s shininess, like so:
Pass{
Tags {"LightMode" = "PrePassBase"}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
uniform float _Shininess;
struct vIN
{
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct vOUT
{
float4 pos : SV_POSITION;
float3 wNorm : TEXCOORD0;
};
vOUT vert(vIN v)
{
vOUT o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
o.wNorm = mul((float3x3)_Object2World, v.normal);
return o;
}
float4 frag(vOUT i) : COLOR
{
float3 norm = (i.wNorm * 0.5) + 0.5;
return float4(norm, _Shininess);
}
ENDCG
}
If you’re a bit confused as to why this pass is necessary, think of Deferred Lighting as though it’s a shader replacement technique. In order to build the GBuffer, the camera renders all the objects in the scene using the PrePassBase pass, and saves this to a render texture. It then uses this data as part of the process of building the lighting buffer.
The line in the fragment function which halves the normal and then adds 0.5 to it just takes each component in the normal and re maps it from the range -1 to +1, to the range 0 to 1 so that it can be stored in a texture.
Once that lighting buffer is created, our job changes from putting data into it, to getting data out of it.
Just like forward rendering, our second pass uses a different tag, PrePassFinal, to let Unity know to use this pass for the last step of the deferred rendering process. Otherwise, the first few lines of this pass are unremarkable.
Pass{
Tags{"LightMode" = "PrePassFinal"}
ZWrite off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
sampler2D _MainTex;
uniform float4 _SpecColor;
uniform sampler2D _LightBuffer;
struct vIN
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
struct vOUT
{
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
float4 uvProj : TEXCOORD1;
};
}
The vert function is where things start getting interesting. The fragment function will sample the Light buffer using tex2Dproj, which takes a 4 component vector and divides the xy components by the w component.
Since what we need to do is sample the light buffer at the exact point on the screen that our fragment will be drawn, we have to set our 4 component uv vector to our fragment’s position in clip space. This will let tex2Dproj perform the perspective divide for us, letting us get at exactly the point on the light buffer that we need.
Or rather, that’s the easy way of looking at it. In truth it’s a bit messier than that. Let’s look at what our vertex function ends up being:
vOUT vert(vIN v)
{
vOUT o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
float4 posHalf = o.pos * 0.5;
posHalf.y *= _ProjectionParams.x;
o.uvProj.xy = posHalf.xy + float2(posHalf.w, posHalf.w);
o.uvProj.zw = o.pos.zw;
o.uv = v.texcoord;
return o;
}
To start with, we’re halving the clip space coordinates for our projected uvs. I’m assuming this is because the light buffer isn’t actually a screen size texture, but since theres no information available about how Unity’s implementation works under the hood, it’s hard to know for sure.
You could try setting up a deferred lighting scene on an ios device and using Xcode’s gpu capture frame to get at that data, but I don’t have any ios devices in my apartment so I’ll leave that to you (send me a message on twitter if you actually try this :D ).
The Unity docs have this to say about _ProjectionParams:
“x is 1.0 (or –1.0 if currently rendering with a flipped projection matrix), y is the camera’s near plane, z is the camera’s far plane and w is 1/FarPlane.”
So it looks like all that multiplication is doing is making sure that we’re right side up on platforms where rendering to texture flips the image.
I have no idea why we end up adding the halved w component back to our xy components. Again, twitter me if you have any idea.
But now that that’s covered, our fragment function is really straightforward:
float4 frag(vOUT i) : COLOR
{
float4 light = tex2Dproj(_LightBuffer, i.uvProj);
float4 logLight = -(log2(max(light, float4(0.001,0.001,0.001,0.001))));
float4 texCol = tex2D(_MainTex, i.uv);
return float4((texCol.xyz * light.xyz) + float3(_SpecColor.xyz) * light.w, texCol.w);
}
Notice how unlike forward rendering, we don’t have to do any per light calculations, because they’ve already been done for us, and had the resulting value stored in the light buffer. All we have to do is read from that buffer and multiply our fragment colour accordingly. Just like in the first pass, specular values are stored on the alpha channel of the light buffer.
The logTex calculation feels to me like an implementation specific detail that we don’t really need to worry about, except to know that we have to do it to get values that make sense from Unity. I haven’t built any deferred lighting systems from scratch, so I’m not sure if this is a standard way of storing data in a light buffer or not.
But nevertheless, you should now have a working pixel shader with deferred lighting. How exciting! Only one pass left to go.
One of the cooler parts of Deferred Rendering is getting to have point lights cast shadows, but to do that we’ll need another pass. Luckily, this pass is the same as any other shadow caster pass in Unity. In theory could let a fallback handle this for you, but for the sake of having a fully standalone shader, let’s add it here as well.
Pass {
Name "ShadowCaster"
Tags { "LightMode" = "ShadowCaster" }
Fog {Mode Off}
ZWrite On ZTest LEqual Cull Off
Offset 1, 1
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_shadowcaster
#include "UnityCG.cginc"
struct v2f {
V2F_SHADOW_CASTER;
};
v2f vert( appdata_base v )
{
v2f o;
TRANSFER_SHADOW_CASTER(o)
return o;
}
float4 frag( v2f i ) : SV_Target
{
SHADOW_CASTER_FRAGMENT(i)
}
ENDCG
}
If everything has gone according to plan, you should now have a pixel shader that works with deferred lighting and shadows! If you don’t see your object at all, make sure that you’ve actually switched your camera over to the deferred path (I made that mistake when writing this post).
It’s worth noting that all I did to figure this out was to write surface shaders that only used the deferred lighting path, have them compile down to glsl and figure out what was going on from the compiled shaders.
If you want to learn more (like how to add spherical harmonic lights, or use lightmaps), all you need to do in order to do this yourself is add “exclude_path:forward” to your surface pragma, and add an additional pragma below that, like this:
#pragma surface surf BlinnPhong exclude_path:forward
#pragma only_renderers gles
If you’re on desktop, you’ll need to click the “Show All” button in the inspector to get at the gles code, since gles shaders are meant for mobile devices. If you can read ARB or DirectX assembly, you can do that too, but I find glsl much more readable.
If you have any questions about anything, spot a mistake, or just want to say hi, send me a message on twitter. Happy Shading!


Israel's attorney general to announce decision on Netanyahu indictment
JERUSALEM: Israel's attorney general said he would announce later on Thursday (Nov 21) his decision on whether to indict Prime Minister Benjamin Netanyahu over alleged corruption.
Netanyahu has denied any wrongdoing in the three corruption cases, saying he is a victim of a political witch-hunt.
Attorney-General Avichai Mandelblit will disclose his decision at a news conference at 7.30pm, a Justice Ministry statement said. Police recommended in February that he file criminal charges against Netanyahu in the long-running investigations.
Netanyahu is suspected of wrongfully accepting US$264,000 worth of gifts, which prosecutors said included cigars and champagne, from tycoons and of dispensing favours in alleged bids for improved coverage by an Israeli newspaper and a website.
He could face up to 10 years in prison if convicted of bribery and a maximum 3-year term for fraud and breach of trust.
An indictment against Netanyahu, Israel's longest-serving leader, would raise more uncertainty over who will ultimately lead a country mired in political chaos after two inconclusive elections this year.


{% extends "base.html" %} {% load wagtailimages_tags core_tags el_pagination_tags %} {% block content %} {% load_child_sections_for_section self as sections %} {#{% include "patterns/components/section-page/sp_variations/base-section_teaser-listing.html" %}#} {#{% include "patterns/basics/banners/sp_variations/section-banner.html" %}#}
{% load_child_articles_for_section self count=0 as articles %} {% paginate 12 articles %} {% get_tags_for_section self as tags %} {% include "patterns/components/article-teasers/sp_variations/base-teaser-listing.html" with section=self articles=articles|slice:"0:4"%} {% include "patterns/components/article-teasers/sp_variations/carousel-teaser-listing.html" with tag=tags.0.0 tag_articles=tags.0.1%} {% include "patterns/components/article-teasers/sp_variations/base-teaser-listing.html" with section=self articles=articles|slice:"4:8"%} {% include "patterns/components/article-teasers/sp_variations/carousel-teaser-listing.html" with tag=tags.1.0 tag_articles=tags.1.1%} {% include "patterns/components/article-teasers/sp_variations/base-teaser-listing.html" with section=self articles=articles|slice:"8:12"%} {% get_pages %} {% if pages.next %} {% endif %} {% endblock %}


RESTful Service Design: Patterns and Anti-Patterns
04:30 PM - 05:25 PM on July 17, 2016, Room CR5Jeff Revesz
- Audience level:
- intermediate
- Watch:
- https://www.youtube.com/watch?v=6rpS90DVtrw
Description
Drawing on more than a decade of combined experience in RESTful service design, your speakers will discuss many of the key architectural questions that every API developer needs to answer. The goal of this talk is to move quickly beyond the basics, and explore larger questions of how to build a sane and scalable service that your users will love. We will draw on our own experience of implementing bad (and later, less-bad) answers to these questions in multiple real-world situations, with specific examples demonstrated using Django REST Framework.
Abstract
It's well understood that REST (Representational State Transfer) is one of the most widely-used service design patterns on the modern web. Since the strict definition of REST contains only a minimal number of core constraints, it provides a tremendous amount of flexibility to the developer. Two different services may have vastly different request and response patterns, and yet both could still be considered legitimately RESTful.
This flexibility is a contributing factor to the popularity of REST, but it requires the developer to make many key decisions at the outset. What types of filters will you support, and how will you implement them? Do you opt for smaller responses which require a greater number of client requests, or the opposite? What is the best way to chain endpoints together so your users can explore your data model? Will you support Remote Procedure Calls? If so, how can that be done RESTfully?
The answers to these questions (and more) are crucial, since each one implies a major architectural decision that may prove extremely difficult to reverse later on. In this talk, the speakers will draw on their experience as API architects to discuss the many answers to these questions that they have implemented in real-world situations. Attention will be drawn to hastily-implemented solutions that have backfired in terrible ways, and the lessons learned from those experiences.


Component
Button Original
Here is a subtitle for this table
Disabled Button
Here is a subtitle for this table
Button Size
Here is a subtitle for this table
Button Type
Here is a subtitle for this table
Checkbox
Here is a subtitle for this table
Radio
Here is a subtitle for this table
Bootstrap Switch
Here is a subtitle for this table
Bootstrap Dropdown
Here is a subtitle for this table
Progress Bar
Here is a subtitle for this table
Bootstrap Input
Here is a subtitle for this table
Nav Pills
Here is a subtitle for this table
Slider
Here is a subtitle for this table
Badge
Here is a subtitle for this table


Smacc: a Compiler-Compiler
SmaCC Abstract Syntax Trees
SmaCC can generate abstract syntax trees from an annotated grammar. In addition to the node classes to represent the trees, SmaCC also generates a generic visitor for the tree classes. This is handy and boost your productivity especially since you can decide to change the AST structure afterwards and get a new one in no time.
Restarting
To create an AST, you need to annotate your grammar. Let's start with the grammar of our simple expression parser from the tutorial. Since we want to build an AST, we've removed the code that evaluates the expression.
Building Nodes
Building an AST-building parser works similarly to the normal parser.
Instead of inserting Pharo code after each production rule inside braces, {}
, we insert the class name inside of double braces, {{}}
.
Also, instead of naming a variable for use in the Pharo code, we name a variable so that it will be included as an instance variable in the node class we are defining.
Let's start with annotating the grammar for the AST node classes that we wish to parse. We need to tell SmaCC where the AST node should be created and the name of the node's class to create. In our example, we'll start by creating three node classes: Expression, Binary, and Number.
If you compile this grammar, SmaCC will complain that we need to define a root node.
Since the root has not been defined, SmaCC compiles the grammar as if the {{...}}
expressions where not there and generates the same parser as above.
- Notice that for the parenthesized expression, we are using
{{}}
. This is a shortcut for the name of our production symbol (here,{{Expression}}
). - Notice that we didn't annotate the last production in the Expression definition. Since it only contains a single item, Number, SmaCC will pull up its value which in this case will be a Number AST node.
Variables and Unnamed Entities
Now, let's add variable names to our rules:
The first thing to notice is that we added the %annotate_tokens;
directive.
This directive tells SmaCC to automatically create an instance variable for every unnamed token and keyword in the grammar.
An unamed token is a <>
not followed by a variable (defined with 'aVariable'
) and an unnamed keyword is delimited by double quotes as in "("
.
In our example above, we have:
- one unnamed token,
<number>
, and - two unnamed keywords,
(
and)
.
When SmaCC sees an unnamed token or keyword, it adds a variable that is named based on the item and appends Token to the name. For example, in our example above, SmaCC will use:
- leftParenToken for
(
, - rightParenToken for
)
, and numberToken
for<number>
.
The method SmaCCGrammar class>>tokenNameMap
contains the mapping to convert the keyword characters into valid Pharo variable names.
You can modify this dictionary if you wish to change the default names.
Unnamed Symbols
Notice that we did not name Expression in the (
Expression )
production rule.
When you don't name a symbol in a production, SmaCC tries to figure out what you want to do.
In this case, SmaCC determines that the Expression symbol produces either a Binary or Number node.
Since both of these are subclasses of the Expression, SmaCC will pull up the value of Expression and add the parentheses to that node.

Generating the AST
Now we are ready to generate our AST. We need to add directives that tell SmaCC our root AST class node and the prefix and suffix of our classes.
When you compile this grammar, in addition to the normal parser and scanner classes, SmaCC will create ASTExpressionNode
, ASTBinaryNode
, and ASTNumberNode
node classes and an ASTExpressionNodeVisitor
class that implements the visitor pattern for the tree classes.
The ASTExpressionNode
class will define two instance variables, leftParenTokens
and rightParenTokens
, that will hold the (
and )
tokens.
Notice that these variables hold a collection of tokens instead of a single parenthesis token.
SmaCC figured out that each expression node could contain multiple parentheses and made their variables hold a collection.
Also, it pluralized the leftParentToken
variable name to leftParenTokens
.
You can customize how it pluralizes names in the SmaCCVariableDefinition
class (See pluralNameBlock
and pluralNames
).
The ASTBinaryNode
will be a subclass of ASTExpressionNode
and will define three variables: left
, operator
, and right
.
- The
left
andright
instance variables will hold otherASTExpressionNodes
and - the
operator
instance variable will hold a token for the operator.
Finally, the ASTNumberNode
will be a subclass of ASTExpressionNode
and will define a single instance variable, number
, that holds the token for the number.
Now, if we inspect the result of parsing 3 + 4
, we'll get an Inspector on an ASTBinaryNode
.
AST Comparison
SmaCC also generates the comparison methods for each AST node. Let's add function evaluation to our expression grammar to illustrate this point.
Now, if we inspect Add(3, 4)
, we will get something that looks like an ASTFunctionNode
.
In addition to generating the node classes, SmaCC also generates the comparison methods for each AST node.
For example, we can compare two parse nodes: (CalculatorParser parse: '3 + 4') = (CalculatorParser parse: '3+4')
.
This returns true as whitespace is ignored.
However, if we compare (CalculatorParser parse: '(3 + 4)') = (CalculatorParser parse: '3+4')
, we get false, since the first expression has parentheses.
We can tell SmaCC to ignore these by adding the %ignore_variables
directive.
Now, we get true when we compare (CalculatorParser parse: '(3 + 4)') = (CalculatorParser parse: '3+4')
.
Extending the Visitor
Finally, let's subclass the generated visitor to create a visitor that evaluates the expressions. Here's the code for Pharo:
Now we can evaluate ASTExpressionEvaluator new accept: (CalculatorParser parse: 'Add(3,4) * 12 / 2 ^ (3 - 1) + 10')
and get 31.


Works great on any device.
Compatible with modern browsers.
Use any Bootstrap 4 plugins / library.
Like iconic? and you can choose any other icons too!
Extends bootstrap default theme colors to create pretty design, faster!
Has 11 additional font-size classes from smallest to largest.
Ready to use for shopify projects!
Two layouts options for your application need.


Put away the tylenol. Your headache is over
Get a Bid Get a Bid Give me a call Shoot me a textRoger’s Repair is a Licensed, Bonded and Insured General Contractor/Handyman covering the Puget Sound taking on all aspects of home repair and remodeling. Roger and his crew excel in projects that require creative solutions and custom fabrication. No job is ever too small, nor too big. Let us know how we can serve you.
In this 2 hour instructional session, Roger explains the what-to and how-to of maintaining your home. After a detailed walk thru in-and-around your new home, you will learn
Roger guides you in the process of both minor and major remodels, helping develop a step-by-step guide line for the project along with a materials list.
Consultation includes
Sometimes confidence gives way to reality and you find yourself in over your head or out of time. Roger can “save the day” by coming in either get you back on track or complete the job for you.
Roger Anderson has a God-given talent for troubleshooting along with an innate ability to tackle any area of home repair, maintenance and remodeling. As the son of a machinist and carpenter, and the grandson of a blacksmith and a farmer, trouble shooting and repairing come second nature to him. With a degree in electronics, he worked in the computer industry for 20 years. After talking with many of his elderly friends and hearing how often they had been taken advantage of by unscrupulous contractors, he left the computer world and began Roger’s Repair to be the change in the industry.
As a licensed, bonded and insured General Contractor and Handyman in the State of Washington, Roger works for home owners, property investors, property managers, in-state and out-of-state landlords and commercial retailers. He has a long list of clients who have offered to give testimonies of his work and character, so please ask if you’re interested, so please don't hesitate to ask. We encourage all our new clients to visit the Labor & Industry site to verify license, bond and insurance, and also for any past complaints no matter who you hire.