def get_nr_embedding(data_graph,pattern,OBdecomp,root_node_predicate_name,NLIMIT_values,monitoring_marks):
    number_of_nodes_in_data = len(data_graph)
    root_node = None
    Plist = [item for sublist in OBdecomp for item in sublist]
    root_nodes = [x for x in data_graph.nodes() if data_graph.node[x]['predicate'] == root_node_predicate_name]
    nr_nodes_data_graph = len(data_graph)
    lock = threading.Lock()
    p=furer.Furer(data_graph,pattern, OBdecomp, root_nodes,NLIMIT_values,None,lock,1,0)
    m = monitor_process.process_monitor.monitor_process_furer(p, monitoring_marks, lock, 1, nr_nodes_data_graph,len(monitoring_marks),False,None,None,
                                                              None,None,False)
    mt = threading.Thread(target=m)
    mt.daemon = True
    mt.start()
    p.run()
    p.abort = True
    #p = Furer(data_graph, pattern, Plist, root_nodes, None, lock)
    p.run()
    print m.report_structures[0].current_fdict
    return m.report_structures[0].current_fdict
 experiments.globals.sum_of_the_square_extra_embeddings=0
 experiments.globals.embeddings_estimate=0
 experiments.globals.nr_iterations=0
 #experiments.globals.current_fdict=None;
 
 start=time.time() 
 
 root_nodes = [x for x in data_graph.nodes() if data_graph.node[x]['predicate']==pattern.node[Plist_dict[i][0]]['predicate']]
 root_nodes=sorted(root_nodes)
 #get OBD 
 #print "Root node: ",root_node,pattern.node[root_node]['predicate']
 #print "Number of root nodes:",len(root_nodes)
 
 furer.Furer.running_bug_fixed_code=False 
 furer.Furer.ordering_of_target_nodes=target_node_order;
 p=furer.Furer(data_graph,  pattern,  OBdecomp_false_dict[i],root_nodes,NLIMIT_values,output_path,lock,i,nr_embeddings)
 m=monitor.monitor_process_false_furer(p,monitoring_marks,lock,i,nr_nodes_data_graph,-1,False,args.write)
 mt = threading.Thread(target=m)
 mt.daemon=True
 mt.start()
 p.run() 
 p.abort=True
 #print "main finished"       
 end=time.time()
 average_time+=end-start
 #check if monitoring finished succesfully
 if m.successful_monitoring==False:
     #if not, no point to report. make a file to say that Furer finished before time
     with open(output_path+"/not_selected.info",'w') as f:
        f.write("Furer only run for 1 hour, and this pattern didn't fall into the selection interval") 
     sys.exit()