code: def readGraph(edgeList, nodeList = None, directed = False, idKey = 'ID', eSource = 'From', eDest = 'To'):
      progArgs = (0, "Starting to reading graphs")
      if metaknowledge.VERBOSE_MODE:
          progKwargs = {'dummy' : False}
      else:
          progKwargs = {'dummy' : True}
      with _ProgressBar(*progArgs, **progKwargs) as PBar:
          if directed:
              grph = nx.DiGraph()
          else:
              grph = nx.Graph()
          if nodeList:
              PBar.updateVal(0, "Reading " + nodeList)
              f = open(os.path.expanduser(os.path.abspath(nodeList)))
              nFile = csv.DictReader(f)
              for line in nFile:
                  vals = line
                  ndID = vals[idKey]
                  del vals[idKey]
                  if len(vals) > 0:
                      grph.add_node(ndID, **vals)
                  else:
                      grph.add_node(ndID)
              f.close()
          PBar.updateVal(.25, "Reading " + edgeList)
          f = open(os.path.expanduser(os.path.abspath(edgeList)))
          eFile = csv.DictReader(f)
          for line in eFile:
              vals = line
              eFrom = vals[eSource]
              eTo = vals[eDest]
              del vals[eSource]
              del vals[eDest]
              if len(vals) > 0:
                  grph.add_edge(eFrom, eTo, **vals)
              else:
                  grph.add_edge(eFrom, eTo)
          PBar.finish("{} nodes and {} edges found".format(len(grph.nodes()), len(grph.edges())))
          f.close()
          return grph