Esempio n. 1
0
def draw_venn_RQ3(issues_dict, target):
    imp.reload(venn)
    leven_text = "LEV ({})".format(len(issues_dict["LEVEN_Norm"]))
    dep_text = "DEP ({})".format(len(issues_dict["DEP_Norm"]))
    bleu_text = "BLEU ({})".format(len(issues_dict["BLEU_Norm"]))
    sbert_text = "SBERT ({})".format(len(issues_dict["SBERT_Norm"]))
    dfa_text = "DFA ({})".format(len(issues_dict["DFA_Norm"]))
    reg_text = "REG ({})".format(len(issues_dict["REG_Norm"]))
    hyb_text = "HYB ({})".format(len(issues_dict["HYB_Norm"]))
    replace = {"LEVEN_Norm":leven_text,
               "DEP_Norm": dep_text,
               "BLEU_Norm": bleu_text,
               "SBERT_Norm": sbert_text,
               "DFA_Norm": dfa_text,
               "REG_Norm": reg_text,
               "HYB_Norm": hyb_text}
    new_issues_dict = {replace[k]: set(map(lambda x: str(x), v)) for k, v in issues_dict.items()}
    cmap = matplotlib.cm.get_cmap("viridis_r", 5)
    color_list = []
    for i in range(cmap.N):
        rgb = cmap(i)[:3]
        color_list.append(matplotlib.colors.rgb2hex(rgb))
    color_list[0] = "#E68C8D"
    
    if target == "DFA":
        _ = new_issues_dict.pop(reg_text)
        _ = new_issues_dict.pop(hyb_text)
        labels = venn.get_labels([new_issues_dict[leven_text], new_issues_dict[dep_text], new_issues_dict[bleu_text], \
                                 new_issues_dict[sbert_text], new_issues_dict[dfa_text]], fill=['number'])
        fig, ax = venn.venn5(labels, names=[leven_text, dep_text, bleu_text, sbert_text, dfa_text]
                             , colors=color_list
                            )
    elif target == "REG":
        _ = new_issues_dict.pop(dfa_text)
        _ = new_issues_dict.pop(hyb_text)
        labels = venn.get_labels([new_issues_dict[leven_text], new_issues_dict[dep_text], new_issues_dict[bleu_text], \
                                 new_issues_dict[sbert_text], new_issues_dict[reg_text]], fill=['number'])
        fig, ax = venn.venn5(labels, names=[leven_text, dep_text, bleu_text, sbert_text, reg_text]
                             , colors=color_list
                            )
    elif target == "HYB":
        _ = new_issues_dict.pop(dfa_text)
        _ = new_issues_dict.pop(reg_text)
        labels = venn.get_labels([new_issues_dict[leven_text], new_issues_dict[dep_text], new_issues_dict[bleu_text], \
                                 new_issues_dict[sbert_text], new_issues_dict[hyb_text]], fill=['number'])
        fig, ax = venn.venn5(labels, names=[leven_text, dep_text, bleu_text, sbert_text, hyb_text]
                             , colors=color_list
                            )
Esempio n. 2
0
def venn(inp, names, title="venn", folder=''):
    """
    Plots a venn diagram using the pyvenn package

    Args:
    -----
      inp: list[set()] of sets of values (e.g. [(1,2,3,4),(2,3),(1,3,4,5)])
      names: list[str] of the name of each leaf
      title: str the plot title
      folder: str of location where to save the plot, won't save if empty
    """
    labels = pyvenn.get_labels(inp, fill=['number', 'logic'])
    if len(inp) == 2:
        fig, ax = pyvenn.venn2(labels, names=names)
    elif len(inp) == 3:
        fig, ax = pyvenn.venn3(labels, names=names)
    elif len(inp) == 4:
        fig, ax = pyvenn.venn4(labels, names=names)
    elif len(inp) == 5:
        fig, ax = pyvenn.venn5(labels, names=names)
    elif len(inp) == 6:
        fig, ax = pyvenn.venn6(labels, names=names)
    else:
        raise ValueError('need to be between 2 to 6')
    ax.set_title(title)
    if folder:
        fig.savefig(folder + title + '_venn.pdf')
    fig.show()
    plt.pause(0.1)
Esempio n. 3
0
def generate_venn_diagram(nb_dim, files, names, sep, label):
    """Cette fonction fait l'appel du fichier venn.py (qui doit être présent dans le même dossier que generate_venn.py)
	pour générer les diagrammes de Venn.
	:param: nombre de dimensions présent dans le diagramme de Venn (1 < nb_dim <= 6)
	:param: files: liste des chemins d'accès aux fichiers contenant les résultats des modèles
	:param: names: liste des noms des modèles (doit être en adéquation avec la liste des modèles files)
	:param: sep: séparateur présent dans filename séparant les id-instance des label 
	:label: label que l'on souhaite extraire
	"""
    if nb_dim < 2 or nb_dim > 6:
        print(
            'Le diagramme de Venn ne peut être généré que pour un nombre de dimensions supérieur à un et inférieur ou égal à 6.'
        )
    else:
        i = 0
        models = []
        while i < nb_dim:
            models.append(
                get_id_instances_title(files[i], sep=sep, label=label))
            i += 1

        labels = venn.get_labels(models)
        if nb_dim == 2:
            fig, ax = venn.venn2(labels, names=names)
            plt.show()
        elif nb_dim == 3:
            fig, ax = venn.venn3(labels, names=names)
            plt.show()
        elif nb_dim == 4:
            fig, ax = venn.venn4(labels, names=names)
            plt.show()
        elif nb_dim == 5:
            fig, ax = venn.venn5(labels, names=names)
            plt.show()
        elif nb_dim == 6:
            fig, ax = venn.venn6(labels, names=names)
            plt.show()
        else:
            print(
                'Le diagramme de Venn ne peut être généré que pour un nombre de dimensions supérieur à un et inférieur ou égal à 6.'
            )
Esempio n. 4
0
    def uniq_share_cal(self, infile):
        for line in infile:
            s = line.rstrip()
            orths = list(s.split('\t'))
            ids = []
            for x in xrange(len(orths)):
                item = orths[x].split('|')[0]
                if item in self.ids:
                    ids.append(item)
            target = set(ids)
            for key in self.data:
                if set(key) == target:
                    self.data[key] += 1

        labels = {}
        for key in self.data:
            key2 = ''
            for x in xrange(len(self.ids)):
                if self.ids[x] in key:
                    key2 += '1'
                else:
                    key2 += '0'
            labels[key2] = self.data[key]

        if len(self.ids) == 3:
            fig, ax = venn.venn3(labels, names=self.ids)
            fig.savefig('gene_family_3taxa.pdf')

        elif len(self.ids) == 4:
            fig, ax = venn.venn4(labels, names=self.ids)
            fig.savefig('gene_family_4taxa.pdf')

        elif len(self.ids) == 5:
            fig, ax = venn.venn5(labels, names=self.ids)
            fig.savefig('gene_family_5taxa.pdf')

        elif len(self.ids) == 6:
            fig, ax = venn.venn6(labels, names=self.ids)
            fig.savefig('gene_family_6taxa.pdf')
  n34 = len(intersection(tp[ids[2]], tp[ids[3]])) 
  n35 = len(intersection(tp[ids[2]], tp[ids[4]]))
  n45 = len(intersection(tp[ids[3]], tp[ids[4]])) 
  area5 = len(tp[ids[4]]) 
  area4 = len(tp[ids[3]])
  area3 = len(tp[ids[2]]) 
  area2 = len(tp[ids[1]]) 
  area1 = len(tp[ids[0]])  
  venn_diag_list = [area1, area2, area3, area4, area5, n12, n13, n14, n15,n23, n24, n25,
   n34, n35, n45, n123, n124, n125, n134, n135, n145, n234, n235, n245, n345, n1234, 
   n1235, n1245, n1345, n2345, n12345]

print('Overlap list needed for VennDiagram in R')
print(venn_diag_list)
out1.write('\n\n## Overlap list needed for VennDiagram in R:\n\n%s' % venn_diag_list)

if plot.lower() == 't' or plot.lower() == 'true':
  if n_comparing == 5:
    labels = venn.get_labels([tp[ids[0]], tp[ids[1]], tp[ids[2]], tp[ids[3]], tp[ids[4]]], fill = ['number'])
    fig, ax = venn.venn5(labels, names = ids)
  elif n_comparing == 4:
    labels = venn.get_labels([tp[ids[0]], tp[ids[1]], tp[ids[2]], tp[ids[3]]], fill = ['number'])
    fig, ax = venn.venn4(labels, names = ids)
  elif n_comparing == 3:
    labels = venn.get_labels([tp[ids[0]], tp[ids[1]], tp[ids[2]]], fill = ['number'])
    fig, ax = venn.venn3(labels, names = ids)
  elif n_comparing == 2:
    labels = venn.get_labels([tp[ids[0]], tp[ids[1]]], fill = ['number'])
    fig, ax = venn.venn2(labels, names = ids)
  filename = save+'_pred_compared.pdf'
  fig.savefig(filename)
Esempio n. 6
0
labels = venn.get_labels(
    [range(10), range(5, 15),
     range(3, 8), range(8, 17)],
    fill=['number', 'logic'])
fig, ax = venn.venn4(labels, names=['list 1', 'list 2', 'list 3', 'list 4'])
fig.savefig('venn4.png', bbox_inches='tight')
plt.close()

labels = venn.get_labels(
    [range(10),
     range(5, 15),
     range(3, 8),
     range(8, 17),
     range(10, 20)],
    fill=['number', 'logic'])
fig, ax = venn.venn5(labels,
                     names=['list 1', 'list 2', 'list 3', 'list 4', 'list 5'])
fig.savefig('venn5.png', bbox_inches='tight')
plt.close()

labels = venn.get_labels([
    range(10),
    range(5, 15),
    range(3, 8),
    range(8, 17),
    range(10, 20),
    range(13, 25)
],
                         fill=['number', 'logic'])
fig, ax = venn.venn6(
    labels, names=['list 1', 'list 2', 'list 3', 'list 4', 'list 5', 'list 6'])
fig.savefig('venn6.png', bbox_inches='tight')
Esempio n. 7
0
    'Human': "Vertebrate",
    'Mouse': "Vertebrate",
    'Worm': "Non-vertebrate",
    'Fly': "Non-vertebrate",
    'Yeast': "Non-vertebrate",
}

targets = defaultdict(list)
targets_v = defaultdict(list)
for index, row in species_genes.iterrows():
    if row[0] == "Rat":
        continue
    targets[row[0]].append(row[1])
    targets_v[is_vertebrate[row[0]]].append(row[1])

list_sp = []
list_targets = []
for sp, t in targets.items():
    list_sp.append(sp)
    list_targets.append(set(t))

labels = venn.get_labels(list_targets, fill=['number'])
fig1, ax = venn.venn5(labels, names=list_sp)
fig1.savefig('species.svg', bbox_inches='tight')

plt.figure(figsize=(4, 4))
venn2([set(targets_v["Vertebrate"]),
       set(targets_v["Non-vertebrate"])],
      set_labels=("Vertebrate", "Non-vertebrate"))
plt.savefig('species_vertebrate_venn.svg')
Esempio n. 8
0
  n25 = len(intersection(comp[ids[1]], comp[ids[4]])) 
  n34 = len(intersection(comp[ids[2]], comp[ids[3]])) 
  n35 = len(intersection(comp[ids[2]], comp[ids[4]]))
  n45 = len(intersection(comp[ids[3]], comp[ids[4]])) 
  area5 = len(comp[ids[4]]) 
  area4 = len(comp[ids[3]])
  area3 = len(comp[ids[2]]) 
  area2 = len(comp[ids[1]]) 
  area1 = len(comp[ids[0]])  
  venn_diag_list = [area1, area2, area3, area4, area5, n12, n13, n14, n15,n23, n24, n25,
   n34, n35, n45, n123, n124, n125, n134, n135, n145, n234, n235, n245, n345, n1234, 
   n1235, n1245, n1345, n2345, n12345]

print('Overlap list needed for VennDiagram in R')
print(venn_diag_list)
#out1.write('\n\n## Overlap list needed for VennDiagram in R:\n\n%s' % venn_diag_list)

if n_comparing == 5:
  labels = venn.get_labels([comp[ids[0]], comp[ids[1]], comp[ids[2]], comp[ids[3]], comp[ids[4]]], fill = ['number'])
  fig, ax = venn.venn5(labels, names = ids)
elif n_comparing == 4:
  labels = venn.get_labels([comp[ids[0]], comp[ids[1]], comp[ids[2]], comp[ids[3]]], fill = ['number'])
  fig, ax = venn.venn4(labels, names = ids)
elif n_comparing == 3:
  labels = venn.get_labels([comp[ids[0]], comp[ids[1]], comp[ids[2]]], fill = ['number'])
  fig, ax = venn.venn3(labels, names = ids)
elif n_comparing == 2:
  labels = venn.get_labels([comp[ids[0]], comp[ids[1]]], fill = ['number'])
  fig, ax = venn.venn2(labels, names = ids)
filename = save+'_pred_compared.pdf'
fig.savefig(filename)
Esempio n. 9
0
matplotlib.use('Agg')

import matplotlib.pyplot as plt
import venn

labels = venn.get_labels([range(10), range(5, 15)], fill=['number', 'logic'])
fig, ax = venn.venn2(labels, names=['list 1', 'list 2'])
fig.savefig('venn2.png', bbox_inches='tight')
plt.close()

labels = venn.get_labels([range(10), range(5, 15), range(3, 8)], fill=['number', 'logic'])
fig, ax = venn.venn3(labels, names=['list 1', 'list 2', 'list 3'])
fig.savefig('venn3.png', bbox_inches='tight')
plt.close()

labels = venn.get_labels([range(10), range(5, 15), range(3, 8), range(8, 17)], fill=['number', 'logic'])
fig, ax = venn.venn4(labels, names=['list 1', 'list 2', 'list 3', 'list 4'])
fig.savefig('venn4.png', bbox_inches='tight')
plt.close()

labels = venn.get_labels([range(10), range(5, 15), range(3, 8), range(8, 17), range(10, 20)], fill=['number', 'logic'])
fig, ax = venn.venn5(labels, names=['list 1', 'list 2', 'list 3', 'list 4', 'list 5'])
fig.savefig('venn5.png', bbox_inches='tight')
plt.close()

labels = venn.get_labels([range(10), range(5, 15), range(3, 8), range(8, 17), range(10, 20), range(13, 25)], fill=['number', 'logic'])
fig, ax = venn.venn6(labels, names=['list 1', 'list 2', 'list 3', 'list 4', 'list 5', 'list 6'])
fig.savefig('venn6.png', bbox_inches='tight')
plt.close()

Esempio n. 10
0
        elif "full_model" in results_file:
            all_labels.append("Full model")

    for r_label in results:
        # print unique TP to this result
        tps = set(results[r_label]["all"]) & set(gold_pairs["all"])
        for r_label2 in results:
            if r_label2 == r_label:
                continue
            tps = tps - set(results[r_label2]["all"])
        print()
        print("unique to {}:".format(r_label))
        print(len(tps))
        print(tps)
        print()
    print(all_labels)
    # print(results)
    labels = venn.get_labels(all_pairs, fill=["number"])
    if len(all_pairs) == 2:
        fig, ax = venn.venn2(labels, names=all_labels)
    elif len(all_pairs) == 3:
        fig, ax = venn.venn3(labels, names=all_labels)
    elif len(all_pairs) == 4:
        fig, ax = venn.venn4(labels, names=all_labels)
    elif len(all_pairs) == 5:
        fig, ax = venn.venn5(labels, names=all_labels)
    elif len(all_pairs) == 6:
        fig, ax = venn.venn6(labels, names=all_labels)
    fig.savefig("{}.png".format("_".join(all_labels)), bbox_inches="tight")
    plt.close()