| 64 | } |
| 65 | |
| 66 | void ChrDensity::smooth(KernelVector kernelVector) { |
| 67 | |
| 68 | vector <float> third (length_,0); |
| 69 | density_ = third; |
| 70 | //KernelVector kernelVector(r); |
| 71 | int r = kernelVector.getRadius(); |
| 72 | |
| 73 | //left point |
| 74 | for (int i = 0; i<r-1; i++) { |
| 75 | float sumKY = 0; |
| 76 | float sumK = 0; |
| 77 | for (int j = 0; j<i+r; j++) { |
| 78 | sumKY+=kernelVector.getK(j,i)*coverage_[j]; |
| 79 | sumK +=kernelVector.getK(j,i); |
| 80 | } |
| 81 | density_[i]=sumKY/sumK; |
| 82 | } |
| 83 | |
| 84 | //right point |
| 85 | for (int i = length_-r+1; i<length_; i++) { |
| 86 | float sumKY = 0; |
| 87 | float sumK = 0; |
| 88 | for (int j = i-r+1; j<length_; j++) { |
| 89 | sumKY+=kernelVector.getK(j,i)*coverage_[j]; |
| 90 | sumK +=kernelVector.getK(j,i); |
| 91 | } |
| 92 | density_[i]=sumKY/sumK; |
| 93 | } |
| 94 | |
| 95 | //all other points |
| 96 | for (int i = r-1; i<length_-r+1; i++) { |
| 97 | float sumKY = 0; |
| 98 | float sumK = kernelVector.getSum(); |
| 99 | for (int j = i-r+1; j<i+r; j++) |
| 100 | sumKY+=kernelVector.getK(j,i)*coverage_[j]; |
| 101 | density_[i]=sumKY/sumK; |
| 102 | |
| 103 | if (i % 1000000 == 0) |
| 104 | cout << i << "\t" << density_[i] << "\t" << coverage_[i] << "\n"; |
| 105 | } |
| 106 | } |
| 107 | |
| 108 | void ChrDensity::calculateLogRatio(ChrDensity controlCD, std::string type) { |
| 109 | typeOfLogRatio_ = type; |