%(asctime)s - %(name)s - %(levelname)s - %(message)s
' , datefmt='%d-%b-%y %H:%M:%S')\n", "fh1.setFormatter(formatter)\n", "console_handler.setFormatter(formatter)\n", "\n", "# add the handlers to the logger\n", "logger.addHandler(fh1)\n", "logger.addHandler(console_handler)\n", "\n", "listOfFiles = os.listdir('./persistent_storage/')\n", "pkl_file = (sorted(listOfFiles, reverse=True)[0])\n", "\n", "display(HTML(f\"
Article quality class | Total count |
---|---|
Start | \n", "1829 | \n", "
Stub | \n", "1035 | \n", "
C | \n", "991 | \n", "
B | \n", "541 | \n", "
nan | \n", "190 | \n", "
GA | \n", "79 | \n", "
FA | \n", "23 | \n", "
List | \n", "16 | \n", "
Disambig | \n", "11 | \n", "
Article quality category | Total count |
---|---|
3-Mid | \n", "2151 | \n", "
4-Low | \n", "2007 | \n", "
2-High | \n", "292 | \n", "
nan | \n", "200 | \n", "
1-Top | \n", "65 | \n", "
taskForce | Total count |
---|---|
NA | \n", "2115 | \n", "
Ophthalmology | \n", "237 | \n", "
Dermatology | \n", "951 | \n", "
Toxicology | \n", "11 | \n", "
Cardiology | \n", "186 | \n", "
Neurology | \n", "398 | \n", "
Pathology | \n", "247 | \n", "
Medical genetics | \n", "462 | \n", "
Pulmonology | \n", "65 | \n", "
Reproductive medicine | \n", "72 | \n", "
Hematology-oncology | \n", "251 | \n", "
Psychiatry | \n", "74 | \n", "
Gastroenterology | \n", "52 | \n", "
Nephrology | \n", "68 | \n", "
Livestock | \n", "2 | \n", "
Radiology | \n", "4 | \n", "
Applied Linguistics | \n", "1 | \n", "
Emergency medicine and EMS | \n", "6 | \n", "
Ethics | \n", "1 | \n", "
Sustainability | \n", "1 | \n", "
Military logistics and medicine | \n", "1 | \n", "
World War I | \n", "1 | \n", "
Balkan military history | \n", "1 | \n", "
European military history | \n", "1 | \n", "
German military history | \n", "1 | \n", "
World War II | \n", "1 | \n", "
Theoretical Linguistics | \n", "1 | \n", "
PMIDs of Cochrane reviews (old versions only) | Title | Times appeared in search results | Times cited in Wikipedia | Version (1=latest, 0=old) | Times cited in a Top Importance WP articles | Times cited in a High Importance WP articles | Times cited in a Mid Importance WP articles | Times cited in a Low Importance WP articles | Times cited in an Unknown Importance WP articles | Times cited in a FA quality WP articles | Times cited in a A quality WP articles | Times cited in a GA quality WP articles | Times cited in a B quality WP articles | Times cited in a C quality WP articles | Times cited in a Start quality WP articles | Times cited in a Stub quality WP articles | Times cited in a Other quality WP articles | Times cited in an Unknown quality WP articles | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
index | |||||||||||||||||||
Total | \n", "N/A | \n", "N/A | \n", "15382 | \n", "1143 | \n", "6894 | \n", "425 | \n", "391 | \n", "286 | \n", "30 | \n", "11 | \n", "86 | \n", "0 | \n", "288 | \n", "521 | \n", "169 | \n", "62 | \n", "5 | \n", "1 | \n", "11 | \n", "
1545 | \n", "18254088 | \n", "Intravitreal steroids for macular edema in diabetes. | \n", "4 | \n", "2 | \n", "1 | \n", "0 | \n", "0 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "
5718 | \n", "27245310 | \n", "Speech and language therapy for aphasia following stroke. | \n", "2 | \n", "2 | \n", "1 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
4633 | \n", "26241698 | \n", "Post-pyloric versus gastric tube feeding for preventing pneumonia and improving nutritional outcomes in critically ill adults. | \n", "2 | \n", "2 | \n", "1 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "
5015 | \n", "29664187 | \n", "Exercise interventions and patient beliefs for people with hip, knee or hip and knee osteoarthritis: a mixed methods review. | \n", "2 | \n", "2 | \n", "1 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
5022 | \n", "27103611 | \n", "Topical NSAIDs for chronic musculoskeletal pain in adults. | \n", "2 | \n", "2 | \n", "1 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
4713 | \n", "26824399 | \n", "Surgical versus non-surgical treatment for lumbar spinal stenosis. | \n", "3 | \n", "2 | \n", "1 | \n", "0 | \n", "0 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
1148 | \n", "16856036 | \n", "Self-help and guided self-help for eating disorders. | \n", "3 | \n", "2 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "
2661 | \n", "20927726 | \n", "Grommets (ventilation tubes) for hearing loss associated with otitis media with effusion in children. | \n", "2 | \n", "2 | \n", "1 | \n", "0 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
6254 | \n", "24170669 | \n", "Blood pressure targets for hypertension in people with diabetes mellitus. | \n", "2 | \n", "2 | \n", "1 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
PMIDs of Cochrane reviews (old versions only) | Title | Times appeared in search results | Times cited in Wikipedia | Version (1=latest, 0=old) | Times cited in a Top Importance WP articles | Times cited in a High Importance WP articles | Times cited in a Mid Importance WP articles | Times cited in a Low Importance WP articles | Times cited in an Unknown Importance WP articles | Times cited in a FA quality WP articles | Times cited in a A quality WP articles | Times cited in a GA quality WP articles | Times cited in a B quality WP articles | Times cited in a C quality WP articles | Times cited in a Start quality WP articles | Times cited in a Stub quality WP articles | Times cited in a Other quality WP articles | Times cited in an Unknown quality WP articles | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
index | |||||||||||||||||||
Total | \n", "N/A | \n", "N/A | \n", "5103 | \n", "34 | \n", "2770 | \n", "4 | \n", "10 | \n", "15 | \n", "4 | \n", "1 | \n", "2 | \n", "0 | \n", "6 | \n", "11 | \n", "11 | \n", "1 | \n", "2 | \n", "0 | \n", "1 | \n", "
110 | \n", "24142399 | \n", "Pharmacological treatment for pain in Guillain-Barré syndrome. | \n", "14 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
480 | \n", "25102015 | \n", "Antioxidant supplementation for lung disease in cystic fibrosis. | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
1943 | \n", "26174592 | \n", "Assisted reproductive technology: an overview of Cochrane Reviews. | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
1242 | \n", "27089005 | \n", "Non-absorbable disaccharides versus placebo/no intervention and lactulose versus lactitol for the prevention and treatment of hepatic encephalopathy in people with cirrhosis. | \n", "5 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
2554 | \n", "22161393 | \n", "Progestogen for treating threatened miscarriage. | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
502 | \n", "27552284 | \n", "Inhaled corticosteroids for cystic fibrosis. | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
1229 | \n", "27884041 | \n", "Follow-up strategies for patients treated for non-metastatic colorectal cancer. | \n", "2 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
199 | \n", "26932750 | \n", "Anti-vascular endothelial growth factor (VEGF) drugs for treatment of retinopathy of prematurity. | \n", "5 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
530 | \n", "25093421 | \n", "Pneumococcal vaccines for cystic fibrosis. | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
Grouping:
\\\n", "In cases, where there are multiple version of a Cochrane review, they are grouped toghther (showing the same background color)\\\n", " ,and are listed chronologically,latest version first.
\\\n", "Color Codes:
\\\n", "Green: up-to-date and CITED
Red: up-to-date and NOT CITED
Orange: out-of-date and CITED
Grey: out-of-date and NOT CITED
processing: disease #{index:>5}\\\n", " {row[\"WkD_diseaseLabel\"]} {row[\"WkD_disease\"]} {row[\"WP_en_article\"]}
'\n", " WP_en_article_Title= unquote(unquote(row['WP_en_article'][30:]))\n", " \n", " #will raise a DisambiguationError if the page is a disambiguation page, or a PageError if \n", " #the page doesn’t exist (although by default, it tries to find the page you meant with suggest and search.)\n", " try:\n", " logger.info(f\"{index:>5}. Getting the WikiPedia content for: {WP_en_article_Title}\")\n", " WP_en_article_obj = wikipedia.WikipediaPage(WP_en_article_Title)\n", " WP_en_article_HTML = WP_en_article_obj.html()\n", " \n", " #checking for redirects\n", " if WP_en_article_Title.casefold() != WP_en_article_obj.title.casefold().replace(\" \",\"_\"):\n", " logger.info(f\"{index:>5}. Redirected to: {WP_en_article_obj.title}\") \n", " \n", " logger.info(f\"{index:>5}. Getting the WikiPedia talkPage_categories for: {WP_en_article_obj.title}\")\n", " WP_en_article_talk_obj = wikipedia.WikipediaPage(\"Talk:\"+ WP_en_article_obj.title)\n", " row['talkPage_categories'] = WP_en_article_talk_obj.categories\n", " \n", " except wikipedia.exceptions.DisambiguationError as e:\n", " logger.warning (f\"{index:>5}. '{WP_en_article_talk_obj.title}' is an Ambiguous title: {e.options}\")\n", " logger.warning (f\"{index:>5}. Picking the first sense in the list by default: {e.options[0]}\")\n", " WP_en_article_obj = wikipedia.WikipediaPage(e.options[0])\n", " WP_en_article_HTML = WP_en_article_obj.html()\n", " \n", " #checking for redirects\n", " if e.options[0].casefold() != WP_en_article_obj.title.casefold().replace(\" \",\"_\"):\n", " logger.warning (f\"{index:>5}. Redirected to: {WP_en_article_obj.title}\")\n", " \n", " logger.warning (f\"{index:>5}. Getting the talkPage_categories for: {WP_en_article_obj.title}\")\n", " WP_en_article_talk_obj = wikipedia.WikipediaPage(\"Talk:\"+ WP_en_article_obj.title)\n", " row['talkPage_categories'] = WP_en_article_talk_obj.categories\n", "\n", " except wikipedia.exceptions.PageError as e:\n", " logger.error (f\"{index:>5}. {WP_en_article_obj.title} - I got a PageError - reason: {e} - Article has no talk page yet\")\n", " except KeyError as e:\n", " logger.error (f\"{index:>5}. {WP_en_article_obj.title} - I got a KeyError - reason: {e} - Article's Talk page has no Category\")\n", " \n", " finally:\n", " if console_handler.level==10: \n", " display(row['talkPage_categories'])\n", " else:\n", " logger.debug(row['talkPage_categories'])\n", " \n", " logger.debug(f\"{index:>5}. Extracting task forces, class, and importance\")\n", " taskForces=[]\n", " for cat in row['talkPage_categories'] or []:\n", " if cat.casefold().endswith(\"-class medicine articles\"):\n", " row['class'] = cat[0:-24]\n", " if cat.casefold().endswith('-importance medicine articles'):\n", " imp = {\n", " 'NA' : None,\n", " '???' : None,\n", " 'Unknown' : None,\n", " 'Low' : '4-Low',\n", " 'Mid' : '3-Mid',\n", " 'High' : '2-High',\n", " 'Top' : '1-Top'\n", " }\n", " if imp[cat[0:-29]]:\n", " row['importance'] = imp[cat[0:-29]]\n", " else:\n", " row['importance'] = None\n", " \n", " if cat.casefold().endswith(' task force articles') and \"wikiproject\" not in cat.casefold():\n", " taskForce = cat[0:-20]\n", " taskForces.append(taskForce)\n", " \n", " if taskForces:\n", " row['taskForces']=taskForces\n", " if console_handler.level<=20:\n", " display(HTML(f\"{index:>5}. class: {row['class']}, importance: {row['importance']}, task forces: {row['taskForces']}\"))\n", " else:\n", " logger.info(f\"{index:>5}. class: {row['class']}, importance: {row['importance']}, task forces: {row['taskForces']}\")\n", "\n", "\n", "\n", " matches=0\n", " PIMD_paper_dict={}\n", " logger.info(f\"{index:>5}. searching Pubmed for WkD_diseaseLabel: {row['WkD_diseaseLabel']}\") \n", " id_list= pubmed_search(index,row['WkD_diseaseLabel'],True,True)\n", " if len(id_list)==200:\n", " logger.warning(f\"{index:>5}. (a) {row['WkD_diseaseLabel']} - Too many matches found (>200)\") \n", " logger.warning(f\"{index:>5}. (b) restrcting search to Titles only (excluding Abstracts)\")\n", " time.sleep(1)\n", " id_list= pubmed_search(index,row['WkD_diseaseLabel'],True,False)\n", " if len(id_list)==0:\n", " logger.warning(f\"{index:>5}. (a) {row['WkD_diseaseLabel']} - Restrcting search to Titles only returned no results\")\n", " logger.warning(f\"{index:>5}. (b) reverting back to title/abstract\")\n", " time.sleep(1)\n", " id_list= pubmed_search(index,row['WkD_diseaseLabel'],True,True) \n", " \n", " if not id_list and row['WkD_diseaseLabel'].lower()!= re.sub(r\" ?\\([^)]+\\)\", \"\", WP_en_article_Title.replace(\"_\", \" \").lower()):\n", " logger.warning(f\"{index:>5}. (a) searching for '{row['WkD_diseaseLabel']}' returned {len(id_list)} results\")\n", " logger.warning(f\"{index:>5}. (b) searching for '{WP_en_article_Title.replace('_', ' ')}' instead\")\n", " time.sleep(1)\n", " id_list= pubmed_search(index,WP_en_article_Title.replace(\"_\", \" \"),True,True)\n", " if len(id_list)==200:\n", " logger.warning(f\"{index:>5}. (a) {WP_en_article_Title.replace('_',' ')} - Retruned too many matches (>200)\")\n", " logger.warning(f\"{index:>5}. (b) restrcting search to Titles only (excluding Abstracts)\")\n", " time.sleep(1)\n", " id_list= pubmed_search(index,WP_en_article_Title.replace(\"_\", \" \"),True,False)\n", " if len(id_list)==0:\n", " logger.warning(f\"{index:>5}. (a) {WP_en_article_Title.replace('_',' ')} - Restrcting search to Titles only returned no results\")\n", " logger.warning(f\"{index:>5}. (b) reverting back to title/abstract\")\n", " time.sleep(1)\n", " id_list= pubmed_search(index,WP_en_article_Title.replace(\"_\", \" \"),True,True) \n", " \n", " logger.info(f\"{index:>5}. {len(id_list)} matching PMIDs found.\")\n", " if id_list:\n", " papers = fetch_details(index,id_list)\n", " #print(json.dumps(papers, indent=5))\n", "\n", " for i, paper in enumerate(papers['PubmedArticle']):\n", " articleTitle = paper['MedlineCitation']['Article']['ArticleTitle']\n", " PMID = int(paper['MedlineCitation']['PMID'])\n", " cited = searh_wp_refs_4PMID(str(PMID),WP_en_article_HTML)\n", " if cited:\n", " matches +=1\n", " #display(articleTitle,PMID,cited)\n", " latestVersion=None \n", " PIMD_paper_dict[int(PMID)]=[articleTitle,cited,latestVersion]\n", " \n", " PIMD_paper_dict = OrderedDict(sorted(PIMD_paper_dict.items(), key=lambda t: [str(title).lower() for title in t[1][0]]))\n", " #display(PIMD_paper_dict)\n", " row['cochrane_reviews']= PIMD_paper_dict\n", "\n", " if PIMD_paper_dict:\n", " row['cochrane_reviews_html']='processed: disease #{index:>5} \\\n", " {row[\"WkD_diseaseLabel\"]} {row[\"WkD_disease\"]} {row[\"WP_en_article\"]}
\\\n", "{matches} of {len(id_list)}\\\n", " Cochrane reviews found (via PubMed) are cited in the Wikipedia article: {WP_en_article_Title}
'\n", " \n", " if console_handler.level<=20:\n", " display(HTML(f\"END of row {index:>5}WkDdiseases_with_WParticles_count: 4381, total_CochraneReviews_found: 19962, total_CochraneReviews_cited: 1049
" } }, "4b5fada894fd4fe48f1f247b461db333": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.4.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "4cd5947e74ca455c9eeb24470e34ff62": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "6c837377612a4cf5b13dbb635862403f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "6f716b54558f4deb9983f274991c97d5": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "79f2b78f122846988434c41a2ad4a2d8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "7a8dc09eaf464dd597c1dd4141a8b9a3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "83d507f804354506a1f32bc53d56d18a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.4.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_a93d0d8d295e4169941c52d9363e93d5", "IPY_MODEL_234bc1990c3248f1acdaa5e1c2e01a8c" ], "layout": "IPY_MODEL_6c837377612a4cf5b13dbb635862403f" } }, "8613affbed9a47ea885f3a9f79988f4a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.4.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "a93d0d8d295e4169941c52d9363e93d5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.4.0", "model_name": "IntProgressModel", "state": { "bar_style": "success", "description": "Progress", "layout": "IPY_MODEL_ce9f975bbb6847379526446159cd96c1", "max": 4381, "style": "IPY_MODEL_02fcf423e13c405d90881f77fd72a2f1", "value": 4381 } }, "ce9f975bbb6847379526446159cd96c1": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "d3d4db35ac0f4b1e9b3af80c0a9e63a2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.4.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_4cd5947e74ca455c9eeb24470e34ff62", "style": "IPY_MODEL_8613affbed9a47ea885f3a9f79988f4a", "value": "processing: disease #11580 Ebola virus disease http://www.wikidata.org/entity/Q51993 https://en.wikipedia.org/wiki/Ebola_virus_disease
" } }, "e01f923030e149898ee50e28e4084a44": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.4.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "e84032ee57734e71aee666a933508946": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.4.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_79f2b78f122846988434c41a2ad4a2d8", "style": "IPY_MODEL_e01f923030e149898ee50e28e4084a44", "value": "processed: disease #11580 Ebola virus disease http://www.wikidata.org/entity/Q51993 https://en.wikipedia.org/wiki/Ebola_virus_disease
0 of 2 Cochrane reviews found (via PubMed) are cited in the Wikipedia article: Ebola_virus_disease
" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 2 }