Ejemplo n.º 1
0
def _add_gDNA_summary( summary, gDNA_hits ):
    """
    Summarize the gDNA hits for a consensus sequence
    """
    if len( gDNA_hits ) == 1:
        hit = gDNA_hits[0]
        summary['gDNA_Type'] = HlaType.from_string( hit.tname )
        summary['gLen'] = hit.qlength
        if hasattr( hit, 'pctsimilarity' ):
            summary['gDNA_PctId'] = round(float( hit.pctsimilarity ), 2)
            summary['gDNA_Mismatch'] = 'N/A'
            summary['gDNA_Indel'] = 'N/A'
        elif hasattr( hit , 'nmat' ):
            similarity = float(hit.nmat) / (int(hit.nmat) + int(hit.nmis) + int(hit.nins) + int(hit.ndel))
            summary['gDNA_PctId'] = round(100*similarity, 2)
            summary['gDNA_Mismatch'] = str(hit.nmis)
            summary['gDNA_Indel'] = str(int(hit.nins) + int(hit.ndel))
        else:
            msg = 'Invalid alignment type!'
            log.error( msg )
            raise TypeError( msg )
    else:
        summary['Notes'].append('Multiple gDNA Matches')
        summary['gDNA_Type'] = 'N/A'
        summary['gDNA_PctId'] = 'N/A'
    return summary
Ejemplo n.º 2
0
def _add_gDNA_summary(summary, gDNA_hits):
    """
    Summarize the gDNA hits for a consensus sequence
    """
    if len(gDNA_hits) == 1:
        hit = gDNA_hits[0]
        summary['gDNA_Type'] = HlaType.from_string(hit.tname)
        summary['gLen'] = hit.qlength
        if hasattr(hit, 'pctsimilarity'):
            summary['gDNA_PctId'] = round(float(hit.pctsimilarity), 2)
            summary['gDNA_Mismatch'] = 'N/A'
            summary['gDNA_Indel'] = 'N/A'
        elif hasattr(hit, 'nmat'):
            similarity = float(hit.nmat) / (int(hit.nmat) + int(hit.nmis) +
                                            int(hit.nins) + int(hit.ndel))
            summary['gDNA_PctId'] = round(100 * similarity, 2)
            summary['gDNA_Mismatch'] = str(hit.nmis)
            summary['gDNA_Indel'] = str(int(hit.nins) + int(hit.ndel))
        else:
            msg = 'Invalid alignment type!'
            log.error(msg)
            raise TypeError(msg)
    else:
        summary['Notes'].append('Multiple gDNA Matches')
        summary['gDNA_Type'] = 'N/A'
        summary['gDNA_PctId'] = 'N/A'
    return summary
Ejemplo n.º 3
0
def _combine_cDNA_hits(cDNA_hits):
    """
    Combine a series of cDNA hits at the 3-digit level
    """
    types = [HlaType.from_string(hit.tname) for hit in cDNA_hits]
    genes = list(set([t.gene for t in types]))
    field1s = list(set([t.field1 for t in types]))
    field2s = list(set([t.field2 for t in types]))
    field3s = list(set([t.field3 for t in types]))
    if len(field3s) == 1:
        return HlaType(gene=genes[0],
                       field1=field1s[0],
                       field2=field2s[0],
                       field3=field3s[0])
    elif len(field2s) == 1:
        return HlaType(gene=genes[0], field1=field1s[0], field2=field2s[0])
    elif len(field1s) == 1:
        return HlaType(gene=genes[0], field1=field1s[0])
    return 'N/A'
Ejemplo n.º 4
0
def select_references( reference_file, refs ):
    for i, ref in enumerate(refs):
        for record in FastaReader( reference_file ):
            if record.name.startswith( ref ):
                hla_type = HlaType.from_string(record.name)
                if i == 0:
                    first = ref
                    first_type = hla_type
                elif first_type.field1 != hla_type.field1:
                    return (first, ref)
Ejemplo n.º 5
0
def select_references(reference_file, refs):
    for i, ref in enumerate(refs):
        for record in FastaReader(reference_file):
            if record.name.startswith(ref):
                hla_type = HlaType.from_string(record.name)
                if i == 0:
                    first = ref
                    first_type = hla_type
                elif first_type.field1 != hla_type.field1:
                    return (first, ref)
Ejemplo n.º 6
0
def _combine_cDNA_hits( cDNA_hits ):
    """
    Combine a series of cDNA hits at the 3-digit level
    """
    types = [HlaType.from_string( hit.tname ) for hit in cDNA_hits]
    genes = list( set( [t.gene for t in types] ))
    field1s = list( set( [t.field1 for t in types] ))
    field2s = list( set( [t.field2 for t in types] ))
    field3s = list( set( [t.field3 for t in types] ))
    if len(field3s) == 1:
        return HlaType( gene=genes[0], field1=field1s[0],
                                       field2=field2s[0],
                                       field3=field3s[0] )
    elif len(field2s) == 1:
        return HlaType( gene=genes[0], field1=field1s[0], 
                                       field2=field2s[0] )
    elif len(field1s) == 1:
        return HlaType( gene=genes[0], field1=field1s[0] )
    return 'N/A'
Ejemplo n.º 7
0
def _add_cDNA_summary( summary, cDNA_data, query ):
    """
    Summarize the cDNA hits for a consensus sequence
    """
    if query in cDNA_data:
        cDNA_hits = cDNA_data[query]
        summary['cLen'] = cDNA_hits[0].qlength
        if len( cDNA_hits ) == 1:
            summary['cDNA_Type'] = HlaType.from_string( cDNA_hits[0].tname ).cDNA_type
            summary['cDNA_PctId'] = round(float(cDNA_hits[0].pctsimilarity), 2)
        elif len( cDNA_hits ) >= 2:
            summary['cDNA_Type'] = _combine_cDNA_hits( cDNA_hits )
            summary['cDNA_PctId'] = round(float(cDNA_hits[0].pctsimilarity), 2)
        else:
            summary['cDNA_Type'] = 'N/A'
            summary['cDNA_PctId'] = 'N/A'
    else:
        summary['cLen'] = 'N/A'
        summary['cDNA_Type'] = 'N/A'
        summary['cDNA_PctId'] = 'N/A'
    return summary
Ejemplo n.º 8
0
def _add_cDNA_summary(summary, cDNA_data, query):
    """
    Summarize the cDNA hits for a consensus sequence
    """
    if query in cDNA_data:
        cDNA_hits = cDNA_data[query]
        summary['cLen'] = cDNA_hits[0].qlength
        if len(cDNA_hits) == 1:
            summary['cDNA_Type'] = HlaType.from_string(
                cDNA_hits[0].tname).cDNA_type
            summary['cDNA_PctId'] = round(float(cDNA_hits[0].pctsimilarity), 2)
        elif len(cDNA_hits) >= 2:
            summary['cDNA_Type'] = _combine_cDNA_hits(cDNA_hits)
            summary['cDNA_PctId'] = round(float(cDNA_hits[0].pctsimilarity), 2)
        else:
            summary['cDNA_Type'] = 'N/A'
            summary['cDNA_PctId'] = 'N/A'
    else:
        summary['cLen'] = 'N/A'
        summary['cDNA_Type'] = 'N/A'
        summary['cDNA_PctId'] = 'N/A'
    return summary