Source code for evidence.main

from .evidence import Evidence

[docs]def is_reference(reference): from .reference import _dict_class output = False if type(reference) is dict: if ('database' in reference) and ('id' in reference): output = True elif ('authors' in reference) and ('journal' in reference): output = True elif ('web' in reference) and ('name' in reference): output = True else: if reference.__class__.__module__.startswith('evidence.reference.'): output = True return output
[docs]def is_eco(eco): output = False if isinstance(eco, str): if len(eco)==7: output = True else: if eco.__class__.__name__ == 'ECO': output = True return output
[docs]def is_evidence(evidence): output = False if evidence.__class__.__name__ == 'Evidence': output = True return output
[docs]def compare(evidence_A, evidence_B, rule='A_eq_B'): # rule in ['A_eq_B', 'A_neq_B', 'A_in_B', 'B_in_A'] output = False if rule == 'A_eq_B': if evidence_A.value==evidence_B.value: references_A = [ref() for ref in evidence_A.references] references_B = [ref() for ref in evidence_B.references] if len(references_A)==len(references_B): for reference_A in references_A: for ii in range(len(references_B)): if reference_A==references_B[ii]: _ = references_B.pop(ii) break if len(references_B)==0: ecos_A = [eco() for eco in evidence_A.ecos] ecos_B = [eco() for eco in evidence_B.ecos] if len(ecos_A)==len(ecos_B): for eco_A in ecos_A: for ii in range(len(ecos_B)): if eco_A==eco_B[ii]: _ = ecos_B.pop(ii) break if len(ecos_B)==0: output = True elif rule == 'A_neq_B': output = True if evidence_A.value==evidence_B.value: references_A = [ref() for ref in evidence_A.references] references_B = [ref() for ref in evidence_B.references] if len(references_A)==len(references_B): for reference_A in references_A: for ii in range(len(references_B)): if reference_A==references_B[ii]: _ = references_B.pop(ii) break if len(references_B)==0: ecos_A = [eco() for eco in evidence_A.ecos] ecos_B = [eco() for eco in evidence_B.ecos] if len(ecos_A)==len(ecos_B): for eco_A in ecos_A: for ii in range(len(ecos_B)): if eco_A==eco_B[ii]: _ = ecos_B.pop(ii) break if len(ecos_B)==0: output = False elif rule == 'A_in_B': if evidence_A.value==evidence_B.value: references_A = [ref() for ref in evidence_A.references] references_B = [ref() for ref in evidence_B.references] for reference_B in references_B: for ii in range(len(references_A)): if reference_B==references_A[ii]: _ = references_A.pop(ii) break if len(references_A)==0: ecos_A = [eco() for eco in evidence_A.ecos] ecos_B = [eco() for eco in evidence_B.ecos] for eco_B in ecos_B: for ii in range(len(ecos_A)): if eco_B==ecos_A[ii]: _ = ecos_A.pop(ii) break if len(ecos_A)==0: output = True elif rule == 'B_in_A': if evidence_A.value==evidence_B.value: references_A = [ref() for ref in evidence_A.references] references_B = [ref() for ref in evidence_B.references] for reference_A in references_A: for ii in range(len(references_B)): if reference_A==references_B[ii]: _ = references_B.pop(ii) break if len(references_B)==0: ecos_A = [eco() for eco in evidence_A.ecos] ecos_B = [eco() for eco in evidence_B.ecos] for eco_A in ecos_A: for ii in range(len(ecos_B)): if eco_A==ecos_B[ii]: _ = ecos_B.pop(ii) break if len(ecos_B)==0: output = True return output
[docs]def join(evidences): if not type(evidences) in [list, tuple]: evidences = [evidences] if not same_value(evidences): return None evidence = Evidence() evidence.value = evidences[0].value for aux in evidences: for reference in aux.references: evidence.add_reference(reference()) return evidence