Example #1
0
def parseInteractors(dom, network):
    ems = dom.getElementsByTagName("interactor")

    interactors = []
    #print "interactor tags %d " %len(ems)
    for em in ems:
        interactor = Entity()
        tmp = em.getElementsByTagName("shortLabel")
        slabel = tmp[0].firstChild.nodeValue.strip()
        slabel = slabel.split('_')[0]

        interactor.symbol = slabel
        interactor.refs = {}

        interactor.name = getText(em, 'fullName')
        setPrimaryRef(em, interactor)
        if 'uniprotkb' in interactor.refs:
            interactor._id = "enti_up_%s" % (interactor.refs['uniprotkb'])
        else:
            interactor._id = idtool.generate("entity")
        interactor.refs['intact'] = em.getAttribute('id')
        interactor.group = getText(
            em.getElementsByTagName("interactorType")[0], 'shortLabel')
        interactors.append(interactor)

    network.entities = interactors
Example #2
0
def parseInteractors(dom, network):
	ems = dom.getElementsByTagName("interactor")
	
	interactors = []
	#print "interactor tags %d " %len(ems)
	for em in ems:
		interactor = Entity()
		tmp = em.getElementsByTagName("shortLabel")
		slabel = tmp[0].firstChild.nodeValue.strip()
		slabel = slabel.split('_')[0]
		
		interactor.symbol = slabel		
		interactor.refs = {}		
		
		interactor.name =  getText(em, 'fullName')
		setPrimaryRef(em, interactor)
		if 'uniprotkb' in interactor.refs:
			interactor._id = "enti_up_%s" %(interactor.refs['uniprotkb'])
		else:
			interactor._id = idtool.generate("entity")	
		interactor.refs['intact'] = em.getAttribute('id')
		interactor.group = getText( em.getElementsByTagName("interactorType")[0], 'shortLabel')
		interactors.append(interactor)

	network.entities =  interactors
Example #3
0
def importEdges(filename=None):
    """
    import edges, one pair per line 
    Edge property: - no direction, -> left to right, <- right to left
    """
    filename = filename or r'C:\work\caida\Dropbox\precon\engineering\Contents\GBM_BN-Massaged.csv'

    # add a network
    n = Network.findOne({'name': "GBM Predicted Tumor Network"}) or Network()
    n.name = "GBM Predicted Tumor Network"
    n.group = "predicted"
    n.owner = 'precon'
    n.save()

    col = mongo.db()['entity']
    count = 0
    now = time.time()
    ec = mongo.getCollection('edge')
    with open(filename) as f:
        content = f.read()
        for line in content.split('\n'):
            doc = {}
            line = line.strip()
            pos = line.find("///")
            if pos > 0:
                line = line[0:pos].strip()
                doc['comment'] = line[pos:]

            items = line.split("->")
            if (len(items) == 1): items = line.split("<-")
            if (len(items) == 1): items = line.split(" - ")
            if (len(items) == 1):
                error("Ignore invalid line: [%s]" % line)
                continue
            count += 1
            if (count < 8378): continue

            tmp = []
            tmp.append(items[0].lower().strip())
            tmp.append(items[1].lower().strip())
            entities = ['', '']
            print "!!! %d " % (col.find({'symbol': {'$in': tmp}}).count())
            for r in col.find({'symbol': {'$in': tmp}}):
                if (r['symbol'] == tmp[0]):
                    entities[0] = Entity(r)
                if (r['symbol'] == tmp[1]):
                    entities[1] = Entity(r)

            if (len(entities) != 2):
                raise "Invalid nodes %s, continue" % entities

            node1 = Node.findOne({'network': n._id, 'entity': entities[0]._id})
            if not node1:
                node1 = Node({'network': n._id}, entities[0])
                node1.save()
            node2 = Node.findOne({'network': n._id, 'entity': entities[1]._id})
            if not node2:
                node2 = Node({'network': n._id}, entities[1])
                node2.save()

            con = Connection()
            con._id = "conn_%s_%s" % (tmp[0], tmp[1])
            con.nodes = [node1._id, node2._id]
            con.entities = [entities[0]._id, entities[1]._id]
            con.type = 'predicted'
            con.network = n._id
            con.label = ""
            con.save()

            print "Saving connection %d %s" % (count, con._id)

    finish = time.time()
    print "Imported %d edges, time elpased %d seconds" % (count, finish - now)
Example #4
0
	def load(self):
		
		self.columnIndexes = {}
		headers = self.rows.next()
		for i in range (len(headers)):
			col = headers[i]
			if col not in SUPPORTED_COLUMNS:
				raise Exception("Invalid column: %s. Accepted columns are: %s" %(col, SUPPORTED_COLUMNS))
			self.columnIndexes[col] = i
			
		#networks, connections, entities, nodes
		entities = {}
		nodes = {}
		networks = {}
		
		for row in self.rows:
			entityA = None
			dbid = 	self.getCol('NodeA_DBID',row )
			if dbid:
				dbid = dbid.lower()
				_id = 'enti_%s' %dbid			
				if _id not in entities: 				
					entityA = Entity()
					entityA._id = _id
					entityA.dbref = {}
					pair = dbid.split(':')							
					if(len(pair)!=2): 
						self._error("Invalid NodeA_DBID: %s" %dbid)
						continue	
					entityA.dbref[pair[0]] = pair[1]			
					entityA.group = self.getCol('NodeA_Category',row)
					#entity.label = 'Metformin'
					entityA.name = self.getCol('NodeA',row)								
					entities[_id] = entityA
				else:
					entityA=entities[_id] 			
			#Node B
			entityB = None
			dbid = 	self.getCol('NodeB_DBID',row,  False)
			if dbid:
				dbid = dbid.lower()
				_id = 'enti_%s' %dbid			
				if _id not in entities: 				
					entityB = Entity()
					entityB._id = _id
					entityB.dbref = {}
					pair = dbid.split(':')
					if(len(pair)!=2): 
						self._error("Invalid NodeB_DBID: %s" %dbid)		
						continue						
					entityB.dbref[pair[0].strip()] = pair[1].strip()			
					entityB.group = self.getCol('NodeB_Category',row)
					#entity.label = 'Metformin'
					entityB.name = self.getCol('NodeB' ,row )
					entities[_id] = entityB
				else:
					entityB = entities[_id] 
				
			edgeType = self.getCol('Edge',row,  False)
			if not edgeType: continue
			con = Connection()
			con.type = edgeType
						
			nodeA = nodes[entityA._id] if entityA._id in nodes else self.newNode(entityA)  
			nodeB = nodes[entityB._id] if entityB._id in nodes else self.newNode(entityB)
			nodes[entityA._id] = nodeA
			nodes[entityB._id] = nodeB	
			con.entities=[entityA._id, entityB._id] # this is for search
			con.nodes = [nodeA._id, nodeB._id]		
			con._nodes = [nodeA, nodeB]
			
			
			con.refs = {}
			
			edgeRefs = self.getCol('Edge_Ref',row, False)
			if edgeRefs:
				# comma separated
				pairs = edgeRefs.split(",")
				if len(pairs) == 1: pairs = edgeRefs.split("\n")
				for p in pairs:
					pair = p.split(':')
					refs = pair[1].split(';')
					if len(refs) == 1: refs = pair[1]
					con.refs[pair[0].lower().strip()] = refs
			
			
			networkName = self.getCol('Network',row) or 'DEFAULT'
			network = networks[networkName] if networkName in networks else Network()
			network.name = networkName
			network.owner='peop_precon'
			networks[networkName]  = network
			
			network._connections = network._connections or []
			network._connections.append(con)
			
			con.network = network._id
			con.owner='precon'
		#TBD, error
		return networks, self.errors