Guest User

Untitled

a guest
Nov 20th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.84 KB | None | 0 0
  1. from omero.gateway import BlitzGateway
  2. import omero
  3. from omero.rtypes import rstring
  4. from omero_model_ProjectI import ProjectI
  5. from omero_model_DatasetI import DatasetI
  6. from omero_model_ProjectDatasetLinkI import ProjectDatasetLinkI
  7. from omero_model_ExperimenterI import ExperimenterI
  8. from omero_model_ExperimenterGroupI import ExperimenterGroupI
  9. from omero_model_PermissionsI import PermissionsI
  10. from omero_model_TagAnnotationI import TagAnnotationI
  11. from omero_model_AnnotationAnnotationLinkI import AnnotationAnnotationLinkI
  12.  
  13. rootpassw = "omero"
  14. # set to actual host before use
  15. host='localhost'
  16. conn = BlitzGateway('root', rootpassw, host=host)
  17. conn.connect()
  18. admin = conn.getAdminService()
  19. uuid = admin.getEventContext().sessionUuid
  20. uuid = "" # for real
  21. #uuid = "_" # for testing the script itself
  22.  
  23. userpassw = "ome"
  24. passw = rstring(userpassw)
  25. emailsuff = "@example.com"
  26.  
  27. # Define some groups, users, projects, datasets and tags.
  28.  
  29. groups = {
  30. "g1" : {"name":"Nevis Group (Private)", "perms":"rw----"},
  31. "g2" : {"name":"Nevis Group (Collab)", "perms":"rwra--"},
  32. "g3" : {"name":"Skye Lab", "perms":"rw----"},
  33. "g4" : {"name":"Skye Teaching Lab", "perms":"rwr---"}
  34. }
  35.  
  36. users = {
  37. "u1" : {"name":"ben", "first":"Ben", "last":"Nevis", "groups":["g1","g2"], "owner":["g1","g2"], "admin":True},
  38. "u2" : {"name":"isla", "first":"Isla", "last":"Skye", "groups":["g3","g4"], "owner":["g3","g4"], "admin":False},
  39. "u3" : {"name":"glen", "first":"Glen", "last":"Coe", "groups":["g1","g2","g4"], "owner":[], "admin":False},
  40. "u4" : {"name":"eileen", "first":"Eileen", "last":"Donan", "groups":["g1","g2","g4"], "owner":[], "admin":False},
  41. "u5" : {"name":"benj", "first":"Ben", "last":"Becula", "groups":["g3","g4"], "owner":["g4"], "admin":False},
  42. "u6" : {"name":"kay", "first":"Kay", "last":"Prath", "groups":["g3","g4"], "owner":[], "admin":False}
  43. "u7" : {"name":"kyle", "first":"Kyle", "last":"Lochalsh", "groups":["g3"], "owner":[], "admin":False}
  44. }
  45.  
  46. projects = {
  47. "p1" : {"name":"Analysis MCAK - GFP - MCAK cell line", "user":"u1", "group":"g1",
  48. "datasets":["201126 - siCTL_LPM_M_total", "201126 - siHP1b_LPM_M_total", "201226 - siHP1a_LPM_M_total"]},
  49. "p2" : {"name":"Analysis_siAllKyotoWT_M", "user":"u1", "group":"g2",
  50. "datasets":["siAll_Exp1_LPM_M"]},
  51. "p3" : {"name":"Bod1", "user":"u2", "group":"g3",
  52. "datasets":["080506_ColdStable","2010-12-21_Bod1_cul3_KLHL22"]},
  53. "p4" : {"name":"DYRK1A_fragments", "user":"u2", "group":"g3",
  54. "datasets":["090120", "090121", "090122"]},
  55. "p5" : {"name":"Embryos", "user":"u3", "group":"g1",
  56. "datasets":[]},
  57. "p6" : {"name":"Flp-ln cell lines", "user":"u3", "group":"g2",
  58. "datasets":["101024-GFP-MCAK_drugs", "101026-sirna"]},
  59. "p7" : {"name":"Centrosomes", "user":"u4", "group":"g1",
  60. "datasets":["Fig 2", "Fig 3", "Fig 4"]},
  61. "p8" : {"name":"Cilia and Centrosomes 201108088", "user":"u4", "group":"g1",
  62. "datasets":["Fig 4"]},
  63. "p9" : {"name":"Disease", "user":"u5", "group":"g3",
  64. "datasets":["201102142-Fig 1", "201102142-Fig 4", "201102142-Fig 6"]},
  65. "p10" : {"name":"Structural analysis reveals features of the spindle checkpoint kinase", "user":"u5", "group":"g3",
  66. "datasets":["201110013-Figure 1", "201110013-Figure 4", "201110013-Figure 6", "201110013-Figure 8"]},
  67. "p11" : {"name":"Timelapse", "user":"u6", "group":"g3",
  68. "datasets":["200908150-Figure 1", "200908150-Figure 5", "200908150-Figure 6", ]},
  69.  
  70. "p12" : {"name":"Term 1", "user":"u5", "group":"g4",
  71. "datasets":["Week 1", "Week 3", "Week 5", ]},
  72. "p13" : {"name":"Term 2", "user":"u5", "group":"g4",
  73. "datasets":["Week 1", "Week 3", "Week 5", ]},
  74. "p14" : {"name":"Term 3", "user":"u5", "group":"g4",
  75. "datasets":["Week 1", "Week 3", "Week 5", ]},
  76. "p15" : {"name":"Publications", "user":"u1", "group":"g2",
  77. "datasets":["JCB 2010", "Nature 2011", "Cell 2012"]},
  78.  
  79. "p16" : {"name":"Analysis MCAK - GFP - MCAK cell line", "user":"u5", "group":"g3",
  80. "datasets":["201126 - siCTL_LPM_M_total", "201126 - siHP1b_LPM_M_total", "201226 - siHP1a_LPM_M_total"]},
  81. "p17" : {"name":"Analysis_siAllKyotoWT_M", "user":"u5", "group":"g3",
  82. "datasets":["siAll_Exp1_LPM_M"]}
  83. }
  84.  
  85. datasets = {
  86. "d1" : {"name":"Importin-beta negatively regulates multiple aspects of mitosis", "user":"u4", "group":"g1"},
  87. "d2" : {"name":"Importin-beta negatively regulates multiple aspects of mitosis", "user":"u6", "group":"g3"}
  88. }
  89.  
  90. tagsets = {
  91. "t1" : {"user":"u1", "group":"g1", "tagset":"Phases", "tags":["G2phase","Sphase","Interphase","Prometaphase","Metaphase","Anaphase","Telophase","G1phase"]},
  92. "t2" : {"user":"u1", "group":"g1", "tagset":None, "tags":["Mitosis","Meiosis","Cytokinesis","Postmitotic"]},
  93. "t3" : {"user":"u1", "group":"g2", "tagset":"Category", "tags":["Primary","Secondary","Junk"]},
  94. "t4" : {"user":"u2", "group":"g3", "tagset":None, "tags":["Sphase","Interphase","Prometaphase","Metaphase","Anaphase","Telophase"]},
  95. "t5" : {"user":"u2", "group":"g3", "tagset":"Phases", "tags":["Mitosis","Meiosis","Cytokinesis","Postmitotic"]},
  96. "t6" : {"user":"u5", "group":"g4", "tagset":"Assignment", "tags":["1","2","3","5","6"]}
  97. }
  98.  
  99. # existing groups
  100. userGroup = admin.lookupGroup("user") # all users need to be in 'user' group to do anything!
  101. systemGroup = admin.lookupGroup("system") # admin users need to be in 'system' group
  102.  
  103. ####################
  104. # Create groups
  105. ####################
  106.  
  107. for gr in groups.values():
  108. group = ExperimenterGroupI()
  109. group.name = rstring(gr["name"] + uuid)
  110. group.details.permissions = PermissionsI(gr["perms"])
  111. gr["id"] = admin.createGroup(group)
  112. gr["group"] = admin.getGroup(gr["id"])
  113.  
  114. ####################
  115. # Create users
  116. ####################
  117.  
  118. for usr in users.values():
  119. # Create an experimenter object
  120. user = ExperimenterI()
  121. user.omeName = rstring(usr["name"] + uuid)
  122. user.firstName = rstring(usr["first"])
  123. user.lastName = rstring(usr["last"])
  124. user.email = rstring(usr["name"] + emailsuff)
  125. # Set default to first group
  126. default = groups[usr["groups"][0]]["group"]
  127. # Create list of groups
  128. glist = [userGroup]
  129. for gr in usr["groups"]:
  130. glist.append(groups[gr]["group"])
  131. if usr["admin"]:
  132. glist.append(systemGroup)
  133. # Create experimenter
  134. usr["id"] = admin.createExperimenterWithPassword(user, passw, default, glist)
  135. usr["user"] = admin.getExperimenter(usr["id"])
  136. # Make owner
  137. for o in usr["owner"]:
  138. admin.setGroupOwner(groups[o]["group"], usr["user"])
  139.  
  140. conn.seppuku()
  141.  
  142. ####################
  143. # Create P/Ds
  144. ####################
  145.  
  146. for proj in projects.values():
  147. conn = BlitzGateway(users[proj["user"]]["name"] + uuid, userpassw, host=host)
  148. conn.connect()
  149. update = conn.getUpdateService()
  150.  
  151. project = ProjectI()
  152. project.setName(rstring(proj["name"] + uuid))
  153. project = update.saveAndReturnObject(project,{'omero.group':str(groups[proj["group"]]["id"])})
  154.  
  155. links = []
  156. for dset in proj["datasets"]:
  157. dataset = DatasetI()
  158. dataset.setName(rstring(dset + uuid))
  159. dataset = update.saveAndReturnObject(dataset,{'omero.group':str(groups[proj["group"]]["id"])})
  160. l = ProjectDatasetLinkI()
  161. l.setChild(dataset)
  162. l.setParent(project)
  163. links.append(l)
  164. if links:
  165. update.saveAndReturnArray(links,{'omero.group':str(groups[proj["group"]]["id"])})
  166.  
  167. conn.seppuku()
  168.  
  169. ####################
  170. # Create Datasets
  171. ####################
  172.  
  173. for dset in datasets.values():
  174. conn = BlitzGateway(users[dset["user"]]["name"] + uuid, userpassw, host=host)
  175. conn.connect()
  176. update = conn.getUpdateService()
  177.  
  178. dataset = DatasetI()
  179. dataset.setName(rstring(dset["name"] + uuid))
  180. dataset = update.saveAndReturnObject(dataset,{'omero.group':str(groups[dset["group"]]["id"])})
  181.  
  182. conn.seppuku()
  183.  
  184. ####################
  185. # Create Tags
  186. ####################
  187.  
  188. for tset in tagsets.values():
  189. conn = BlitzGateway(users[tset["user"]]["name"] + uuid, userpassw, host=host)
  190. conn.connect()
  191. update = conn.getUpdateService()
  192.  
  193. tagList = []
  194. for name in tset["tags"]:
  195. tag = TagAnnotationI()
  196. tag.setTextValue(rstring(name + uuid))
  197. tagList.append(tag)
  198. tagList = update.saveAndReturnArray(tagList,{'omero.group':str(groups[tset["group"]]["id"])})
  199.  
  200. if tset["tagset"]:
  201. tag = TagAnnotationI()
  202. tag.setTextValue(rstring(tset["tagset"] + uuid))
  203. tag.setNs(rstring(omero.constants.metadata.NSINSIGHTTAGSET))
  204. tag = update.saveAndReturnObject(tag,{'omero.group':str(groups[tset["group"]]["id"])})
  205. links = []
  206. for child in tagList:
  207. l = AnnotationAnnotationLinkI()
  208. l.setChild(child)
  209. l.setParent(tag)
  210. links.append(l)
  211. update.saveAndReturnArray(links,{'omero.group':str(groups[tset["group"]]["id"])})
  212.  
  213. conn.seppuku()
Add Comment
Please, Sign In to add comment