Advertisement
Guest User

Untitled

a guest
Apr 5th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. import csv
  2. import json
  3. import os
  4. import sys
  5. import time
  6.  
  7. from panoptes_client import Panoptes, Subject
  8.  
  9. # Remove admin=True if you're a project collaborator/owner
  10. Panoptes.connect(
  11. username='',
  12. password='',
  13. admin=True,
  14. )
  15.  
  16. with open('images_to_id.json') as images_to_id_f:
  17. images_to_id = json.load(images_to_id_f)
  18.  
  19. unknown_entries = []
  20.  
  21. for (dirpath, dirnames, filenames) in os.walk('manifests'):
  22. for filename in filenames:
  23. if not filename.endswith('.csv'):
  24. continue
  25.  
  26. with open(os.path.join(dirpath, filename)) as manifest_f:
  27. done = 0
  28. for metadata in csv.DictReader(manifest_f):
  29. fixed_metadata = {}
  30. for key, value in metadata.items():
  31. fixed_metadata[key.strip()] = value.strip()
  32. lookup_key = "{};{};{}".format(
  33. fixed_metadata['image0'],
  34. fixed_metadata['image1'],
  35. fixed_metadata['image2'],
  36. fixed_metadata['image3'],
  37. )
  38. try:
  39. subject_id = images_to_id[lookup_key]
  40. except KeyError:
  41. unknown_entries.append(fixed_metadata)
  42. continue
  43. subject = Subject.find(subject_id)
  44. subject.metadata = fixed_metadata
  45. while True:
  46. try:
  47. subject.save()
  48. break
  49. except:
  50. time.sleep(5)
  51. continue
  52. done += 1
  53. print "\rProcessing {} ({})".format(filename, done),
  54. sys.stdout.flush()
  55. print ""
  56.  
  57. if unknown_entries:
  58. with open('unknown_entries.csv', 'w') as unknown_f:
  59. w = csv.DictWriter(unknown_f, unknown_entries[0].keys())
  60. w.writeheader()
  61. map(w.writerow, unknown_entries)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement