def getAggregateTagGroupsByImage(self, imageKey, isKey=True): metadata = WebServiceArray() try: if (isKey): image = Picture.objects.get(pk__exact=imageKey) else: image = imageKey except (ObjectDoesNotExist, ValueError): raise Errors.INVALID_IMAGE_KEY if not image.readPermissions(self.user): raise Errors.AUTHENTICATION # initialize tagging APIs tagGroupAPI = TagGroupAPI(self.limit, self.offset, self.user, self.fields, self.unlimited) tagAPI = TagAPI(user=self.user, unlimited=True) geneLinkAPI = GeneLinkAPI(user=self.user, unlimited=True) tagGroups = tagGroupAPI.getTagGroupsByImage(image, False).getObject() for group in tagGroups: tags = tagAPI.getTagsByTagGroup(group['id']).getObject() for tag in tags: geneLinks = geneLinkAPI.getGeneLinksByTag(tag['id']).getObject() tag['geneLinks'] = geneLinks group['tags'] = tags metadata.setObject(tagGroups) return metadata
def getAggregateTagGroups(self): metadata = WebServiceArray() # initialize tagging APIs tagGroupAPI = TagGroupAPI(self.limit, self.offset, self.user, self.fields, self.unlimited) tagAPI = TagAPI(user=self.user, unlimited=True) geneLinkAPI = GeneLinkAPI(user=self.user, unlimited=True) tagGroups = tagGroupAPI.getTagGroups().getObject() for group in tagGroups: tags = tagAPI.getTagsByTagGroup(group['id']).getObject() for tag in tags: geneLinks = geneLinkAPI.getGeneLinksByTag(tag['id']).getObject() tag['geneLinks'] = geneLinks group['tags'] = tags metadata.setObject(tagGroups) return metadata
def getImageMetadataForiSearch(self, query): metadata = WebServiceArray() imageMetadata = {} # Image description iDescImages = Picture.objects.filter( description__icontains=query[0])[self.offset:self.offset + self.limit] # Image notes iNoteImages = [] picturesIN = [] iNotes = PictureNotes.objects.filter(notes__icontains=query[0]) for note in iNotes: pictureID = note.picture.pk if pictureID not in picturesIN: iNoteImages.extend(Picture.objects.filter(id__exact=pictureID)) picturesIN.append(pictureID) iNoteImages = iNoteImages[self.offset:self.offset + self.limit] # Gene name gNameImages = [] picturesGN = [] pMgdbs = PictureMgdb.objects.filter( locus_full_name__icontains=query[0]) for pMgdb in pMgdbs: pictureID = pMgdb.picture.pk if pictureID not in picturesGN: gNameImages.extend(Picture.objects.filter(id__exact=pictureID)) picturesGN.append(pictureID) gNameImages = gNameImages[self.offset:self.offset + self.limit] # Gene Symbol gSymbolImages = [] picturesGS = [] pMgdbs = PictureMgdb.objects.filter(locus_name__icontains=query[0]) for pMgdb in pMgdbs: pictureID = pMgdb.picture.pk if pictureID not in picturesGS: gSymbolImages.extend( Picture.objects.filter(id__exact=pictureID)) picturesGS.append(pictureID) gSymbolImages = gSymbolImages[self.offset:self.offset + self.limit] # Gene ID gIDImages = [] pictureGIs = [] pIDs = PictureGeneID.objects.filter(gene_id__icontains=query[0]) for pID in pIDs: pictureID = pID.picture.pk if pictureID not in pictureGIs: gIDImages.extend(Picture.objects.filter(id__exact=pictureID)) pictureGIs.append(pictureID) gIDImages = gIDImages[self.offset:self.offset + self.limit] imageMetadataAPI = ImageMetadataAPI(self.user, self.fields) for image in iDescImages: if imageMetadata.has_key(0): imageMetadata[0]['images'].append( imageMetadataAPI.getImageMetadata(image, False).getObject()) else: imageMetadata[0] = { 'images': [ imageMetadataAPI.getImageMetadata(image, False).getObject() ] } for image in iNoteImages: if imageMetadata.has_key(1): imageMetadata[1]['images'].append( imageMetadataAPI.getImageMetadata(image, False).getObject()) else: imageMetadata[1] = { 'images': [ imageMetadataAPI.getImageMetadata(image, False).getObject() ] } for image in gNameImages: if imageMetadata.has_key(2): imageMetadata[2]['images'].append( imageMetadataAPI.getImageMetadata(image, False).getObject()) else: imageMetadata[2] = { 'images': [ imageMetadataAPI.getImageMetadata(image, False).getObject() ] } for image in gSymbolImages: if imageMetadata.has_key(3): imageMetadata[3]['images'].append( imageMetadataAPI.getImageMetadata(image, False).getObject()) else: imageMetadata[3] = { 'images': [ imageMetadataAPI.getImageMetadata(image, False).getObject() ] } for image in gIDImages: if imageMetadata.has_key(4): imageMetadata[4]['images'].append( imageMetadataAPI.getImageMetadata(image, False).getObject()) else: imageMetadata[4] = { 'images': [ imageMetadataAPI.getImageMetadata(image, False).getObject() ] } metadata.setObject(LimitDict(self.fields, imageMetadata)) return metadata