Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
481
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. from neo4jrestclient.client import GraphDatabase
  2. import time
  3. from Bio import Entrez
  4. db = GraphDatabase("http://localhost:7474", username="neo4j", password="mypassword")
  5.  
  6.  
  7.  
  8. def search(query):
  9. Entrez.email = 'your.email@example.com'
  10. handle = Entrez.esearch(db='pubmed',
  11. sort='relevance',
  12. retmax='20000000',
  13. retmode='xml',
  14. term=query)
  15. results = Entrez.read(handle)
  16. return results
  17.  
  18. def fetch_details(id_list):
  19. ids = ','.join(id_list)
  20. Entrez.email = 'your.email@example.com'
  21. handle = Entrez.efetch(db='pubmed',
  22. retmode='xml',
  23. id=ids)
  24. results = Entrez.read(handle)
  25. return results
  26.  
  27. if __name__ == '__main__':
  28. results = search('1900[PDAT]:2020[PDAT],nature[JOURNAL]')
  29. id_list = results['IdList']
  30. print(len(id_list))
  31.  
  32. if (len(id_list)>0):
  33. papers = fetch_details(id_list)
  34. print(papers)
  35. for i, paper in enumerate(papers['PubmedArticle']):
  36. #the api lets you import 10,000 record each time, so i made a sleep function for 3 minutes each iteration
  37. if(i%9995==0):
  38. time.sleep(3*60)
  39.  
  40. print("%d) %s" % (i + 1, paper['MedlineCitation']['Article']['ArticleTitle']))
  41. paperDate = paper['MedlineCitation']['Article']['ArticleDate']
  42. if(len(paperDate)==0):
  43. try:
  44. print(paper['MedlineCitation']['Article']['Journal']['JournalIssue']['PubDate']['Year'])
  45. except KeyError:
  46. print("No Journal Year")
  47. else:
  48. for paperYear in enumerate(paperDate):
  49. print("%d) %s" % (i + 1, paperYear[1]['Year']))
  50.  
  51. try:
  52. authorList = paper['MedlineCitation']['Article']['AuthorList']
  53. except KeyError:
  54. print("No Artist List")
  55. continue
  56.  
  57. for author in authorList:
  58. try:
  59. print ("%d) %s" % (i + 1, "LastName: %s , Forename: %s , Initials: %s" % (
  60. author['LastName'], author['ForeName'], author['Initials'])))
  61. try:
  62. print("Affiliation: %s" % (author['AffiliationInfo'][0]['Affiliation']))
  63. except (IndexError,KeyError):
  64. print("No Affiliation")
  65.  
  66. except KeyError:
  67. print("No Author name")
  68. else:
  69. print("No ID")
  70.  
  71. # Create some nodes
  72. paper = db.node.create("Paper")
  73. author = db.node.create("Author")
  74. # Author-Wrote->Paper relationships
  75. author.relationships.create("Wrote", paper)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement