Пример #1
0
def updateBody():
    print request.content_type
    bodyArray = []
    dvidEnv = None
    #dvidServer = getDefaultDvidServer()
    #uuid = getDefaultUuid()
    option = None
    if request.content_type == 'application/x-www-form-urlencoded':
        bodyIdStr = request.forms.get('bodyId')
        dvidName = request.forms.get('database')
        dvidEnv = dvidEnvMap[dvidName]
        bodyArray = [int(bodyId) for bodyId in bodyIdStr.split()]
    elif request.content_type == 'application/json':
        print request.json
        jsonObj = request.json
        try:
            schema = getSchema('update_body', 'post')
            #print schema
            jsonschema.validate(jsonObj, json.loads(schema))
        except jsonschema.exceptions.ValidationError as inst:
            print 'Invalid json input'
            print inst
            return '<p>Update for ' + str(bodyArray) + ' failed.</p>'
        bodyArray = jsonObj.get('bodies')
        #dvidServer = jsonObj.get('dvid-server')
        option = jsonObj.get('option')
        #uuid = jsonObj['uuid']
        #config = {'dvid-server': dvidServer, 'uuid': uuid}
        dvidEnv = DvidEnv()
        dvidEnv.loadServerConfig(jsonObj)
        print dvidEnv

    if not option:
        option = "update"

    for bodyId in bodyArray:
        if option == "delete":
            event = fd.DataEvent(fd.DataEvent.DATA_DELETE,
                                 fd.DataId(fd.DataId.DATA_BODY, bodyId),
                                 dvidEnv)
            eventQueue.put(event)
            print "+++Event added:", event

        if option == "update" or option == "invalidate":
            event = fd.DataEvent(fd.DataEvent.DATA_INVALIDATE,
                                 fd.DataId(fd.DataId.DATA_BODY, bodyId),
                                 dvidEnv)
            eventQueue.put(event)
            print "+++Event added:", event

        if option == "update" or option == "add":
            event = fd.DataEvent(fd.DataEvent.DATA_UPDATE,
                                 fd.DataId(fd.DataId.DATA_SKELETON, bodyId),
                                 dvidEnv)
            eventQueue.put(event)
            print "+++Event added:", event
Пример #2
0
class Skeletonizer:
    def __init__(self):
        self.dvidEnv = None
        self.processMap = {}

    def setDvidEnv(self, env):
        self.dvidEnv = env

    def getDvidEnv(self):
        return self.dvidEnv

    def loadDvidConfig(self, config):
        self.dvidEnv = DvidEnv()
        self.dvidEnv.loadServerConfig(config)

    def loadFlyEmConfig(self, config):
        self.dvidEnv = DvidEnv()
        self.dvidEnv.loadFlyEmConfig(config)

    def skeletonize(self, bodyId, bg=False, forceUpdate=False):
        if bodyId < 1:
            raise Exception("Invalid body ID")

        if self.dvidEnv and self.dvidEnv.isValid():
            print self.dvidEnv.getNeuTuInput()
            args = [
                "/opt/bin/neutu", "--command", "--skeletonize",
                self.dvidEnv.getNeuTuInput(), "--bodyid",
                str(bodyId)
            ]
            if forceUpdate:
                args.append("--force")
            print args
            p = subprocess.Popen(args)
            if not bg:
                p.wait()
            return p
        else:
            raise Exception("Invalid DVID env")
Пример #3
0
skl = Skeletonizer()

socket.setdefaulttimeout(1000)

configFile = "../../json/flyem_config.json"
with open(configFile, "r") as fp:
    flyemConfig = json.load(fp)

dvidEnvMap = {}
eventQueue = Queue()
#eventLock = Lock()
dvidWriter = DvidWriter()

for config in flyemConfig["dvid repo"]:
    if config.get("user_name") != "[]":
        dvidEnv = DvidEnv()
        print config
        dvidEnv.loadFlyEmConfig(config)
        dvidEnvMap[config["name"]] = dvidEnv


def processEvent(event):
    print "Processing event ..."
    print event.dvidEnv
    dvidWriter.setDvidEnv(event.dvidEnv)
    if event.getType() == fd.DataEvent.DATA_INVALIDATE:
        if event.getDataId().getType() == fd.DataId.DATA_BODY:
            print "Invalidating body", event.getDataId().getBodyId()
            dvidWriter.deleteSkeleton(event.getDataId().getBodyId())
            dvidWriter.deleteThumbnail(event.getDataId().getBodyId())
    elif event.getType() == fd.DataEvent.DATA_DELETE:
Пример #4
0
    def setDvidEnv(self, dvidEnv):
        self.dvidEnv = dvidEnv
        self.dvidUrl = DvidUrl(dvidEnv)

    def deleteSkeleton(self, bodyId):
        url = self.dvidUrl.getSkeletonUrl(bodyId)
        r = requests.delete(url)
        print r.url

    def deleteThumbnail(self, bodyId):
        url = self.dvidUrl.getThumbnailUrl(bodyId)
        r = requests.delete(url)
        print r.url
        print r.status_code

    def deleteBodyAnnotation(self, bodyId):
        r = requests.delete(self.dvidUrl.getBodyAnnotationUrl(bodyId))
        print r.url
        print r.status_code

    def deleteKeyValue(self, dataName, key):
        r = requests.delete(self.dvidUrl.getKeyUrl(dataName, key))


if __name__ == "__main__":
    dvidWriter = DvidWriter(
        DvidEnv("http://emdata1.int.janelia.org", 8500, "372c"))
    #dvidWriter.dvidEnv.setBodyLabel("bodies3")
    dvidWriter.deleteThumbnail(1)
    dvidWriter.deleteSkeleton(1)
Пример #5
0
        if self._type == DataEvent.DATA_INVALIDATE:
            s += "Invalidate"
        elif self._type == DataEvent.DATA_UPDATE:
            s += "Update"
        elif self._type == DataEvent.DATA_DELETE:
            s += "Delete"

        s += "|" + self.getDataId().getId()

        return s

    def getType(self):
        return self._type

    def getDataId(self):
        return self.dataId


class DataValidator:
    def __init__(self, dvidEnv):
        self.dvidEnv = dvidEnv

    def setDvidEnv(self, dvidEnv):
        self.dvidEnv = dvidEnv


if __name__ == "__main__":
    event = DataEvent(DataEvent.DATA_INVALIDATE, DataId(DataId.DATA_BODY, 1),
                      DvidEnv("emdata1.int.janelia.org", 8500, "372c"))
    print event
Пример #6
0
 def loadFlyEmConfig(self, config):
     self.dvidEnv = DvidEnv()
     self.dvidEnv.loadFlyEmConfig(config)
Пример #7
0
 def loadDvidConfig(self, config):
     self.dvidEnv = DvidEnv()
     self.dvidEnv.loadServerConfig(config)
Пример #8
0
    def skeletonize(self, bodyId, bg=False, forceUpdate=False):
        if bodyId < 1:
            raise Exception("Invalid body ID")

        if self.dvidEnv and self.dvidEnv.isValid():
            print self.dvidEnv.getNeuTuInput()
            args = [
                "/opt/bin/neutu", "--command", "--skeletonize",
                self.dvidEnv.getNeuTuInput(), "--bodyid",
                str(bodyId)
            ]
            if forceUpdate:
                args.append("--force")
            print args
            p = subprocess.Popen(args)
            if not bg:
                p.wait()
            return p
        else:
            raise Exception("Invalid DVID env")


if __name__ == "__main__":
    skeletonizer = Skeletonizer()
    skeletonizer.setDvidEnv(DvidEnv("emdata1.int.janelia.org", 8500, "372c"))
    dvidUrl = DvidUrl(skeletonizer.getDvidEnv())
    conn = httplib.HTTPConnection(dvidUrl.getServerUrl())
    #conn.request("DELETE", dvidUrl.getSkeletonEndPoint(15363212))
    skeletonizer.skeletonize(15363212, bg=True, forceUpdate=True)
    print "Done"
Пример #9
0
@author: zhaot
'''

import httplib
import requests
from dvidurl import DvidUrl
from dvidenv import DvidEnv


class DvidReader(object):
    '''
    DVID reader
    '''
    def __init__(self, dvidEnv=None):
        '''
        Constructor
        '''
        self.setDvidEnv(dvidEnv)

    def setDvidEnv(self, dvidEnv):
        self.dvidEnv = dvidEnv
        self.dvidUrl = DvidUrl(dvidEnv)

    def readMasterBranches(self):
        r = requests.get(self.dvidUrl.getMasterBranchUrl())
        print r.json


if __name__ == '__main__':
    reader = DvidReader(DvidEnv("emdata1.int.janelia.org", 8500, "99ef"))