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
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
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'
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)
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)
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'
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
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