예제 #1
0
 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
예제 #2
0
 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
예제 #3
0
    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