#include "structureQR.h" // Constructor StructureQR::StructureQR(StructureAlignment *aln) { //printf("=>StructureQR\n"); //int tempIndex = 0; cMi = aln->getLength(); cMj = 4; cMk = aln->getStructureCount(); coordMatrix = new float**[cMi]; for (int i=0; igetStructure(k); // if (filling in gap column) if (j==3) { if ( struct1->getAlphabet()->isGap(struct1->getSymbol(i)) ) { coordMatrix[i][j][k] = 1.0; // THIS SHOULD BE NORMED } else { coordMatrix[i][j][k] = 0.0; } } // else if (filling in coord column, but residue is a gap) else if ( struct1->getAlphabet()->isGap(struct1->getSymbol(i)) ) { coordMatrix[i][j][k] = 0.0; } else { //printf(" here1\n"); //printf(" here2\n"); //coordMatrix[i][j][k] = aln->sequences[k].structure.caCoordinates[tempIndex][j]; switch (j) { case 0: coordMatrix[i][j][k] = struct1->getCoordinate(i)->getX(); break; case 1: coordMatrix[i][j][k] = struct1->getCoordinate(i)->getY(); break; case 2: coordMatrix[i][j][k] = struct1->getCoordinate(i)->getZ(); break; default: printf("Error: StructureQR constructor\n"); printf("WTF, mate?\n"); } //printf(" coordMatrix[%d][%d][%d] = %f\n",i,j,k,coordMatrix[i][j][k]); //printf(" here3\n"); } } } } columnList = new int[cMk]; for (int k=0; kStructureQR::~StructureQR()\n"); //printf("cMi = %d, cMj = %d, cMk = %d\n",cMi,cMj,cMk); for (int i=0; i=0; i--) { //printf(" Hey1\n"); for (int j=cMj-1; j>=0; j--) { /* for (int k=0; k= 0) ? 1.0 : -1.0; alpha = -sign * sqrt(alpha); hhVector = new float[cMi]; for (i=0; i maxNorm) { maxCol = k; maxNorm = norms[k]; } } delete norms; //printf("frontCol: %d\n",frontCol); //printf("maxCol: %d\n",maxCol); int tempMaxCol = columnList[maxCol]; int tempFrontCol = columnList[frontCol]; //printf(" tempFrontCol: %d\n",tempFrontCol); //printf(" tempMaxCol: %d\n",tempMaxCol); columnList[frontCol] = tempMaxCol; columnList[maxCol] = tempFrontCol; //printColumns(); return 0; } // frobeniusNormSeq // Get the frobenius norm for the matrix corresponding // to the data for one sequence // frobeniusNorm(A) = sqrt( sum( all Aij ) ); float StructureQR::frobeniusNormSeq(int k, int currentRow) { float fNorm = 0; for (int i=currentRow; i