public gooneJensType getGooneType(ISequence seq1, ISequence seq2) { try { gooneJensType gt = gooneJensType.unKnown; dnaSequenceUtil dsc = new dnaSequenceUtil(); string[] seq1ID = dsc.getAbbrID(seq1).Split('_'); string[] seq2ID = dsc.getAbbrID(seq2).Split('_'); if (seq1ID.Count() == 3 && seq2ID.Count() == 3) { if (seq1ID[1] == seq2ID[1]) { if (seq1ID[2] == seq2ID[2]) { gt = gooneJensType.daroon_goone; } else { gt = gooneJensType.bein_goone; } } else { gt = gooneJensType.bein_jens; } } return(gt); } catch (Exception ex) { throw ex; } }
public double calcK2PDistance(ISequence seq1, ISequence seq2) { try { double dist = 0; dnaSequenceUtil dsuc = new dnaSequenceUtil(); double min = dsuc.findMinSequenceLength(new List <ISequence>() { seq1, seq2 }); double transitionCount = 0, transversionCount = 0; for (int i = 0; i < min; i++) { if (((char)seq1[i] == 'A' && (char)seq2[i] == 'G') || ((char)seq1[i] == 'C' && (char)seq2[i] == 'T') || ((char)seq1[i] == 'G' && (char)seq2[i] == 'A') || ((char)seq1[i] == 'T' && (char)seq2[i] == 'C')) { transitionCount++; } if (((char)seq1[i] == 'A' && (char)seq2[i] == 'C') || ((char)seq1[i] == 'G' && (char)seq2[i] == 'T') || ((char)seq1[i] == 'A' && (char)seq2[i] == 'T') || ((char)seq1[i] == 'G' && (char)seq2[i] == 'C') || ((char)seq1[i] == 'C' && (char)seq2[i] == 'A') || ((char)seq1[i] == 'T' && (char)seq2[i] == 'G') || ((char)seq1[i] == 'T' && (char)seq2[i] == 'A') || ((char)seq1[i] == 'C' && (char)seq2[i] == 'G')) { transversionCount++; } } double P = (transitionCount / min); double Q = (transversionCount / min); dist = Convert.ToDouble((1F / 2F) * (Math.Log(Convert.ToDouble(1 / (1 - 2 * P - Q)))) + (1F / 4F) * (Math.Log(Convert.ToDouble(1 / (1 - 2 * Q))))); return(dist); } catch (Exception ex) { throw ex; } }