| 1276 | } |
| 1277 | |
| 1278 | void ChrCopyNumber::recalcFlanks(int telo_centromeric_flanks, int minNumberOfWindows) { |
| 1279 | int maxRegionLengthToDelete = int(telo_centromeric_flanks/step_); |
| 1280 | for (int i = 0; i < (int)medianValues_.size(); i++) { |
| 1281 | if (medianValues_[i]==NA && fragment_lengths_[i]>=minNumberOfWindows) { |
| 1282 | int left = i; |
| 1283 | int right = i; |
| 1284 | if ((i-1>=0)&&(fragmentNotNA_lengths_[i-1]<=maxRegionLengthToDelete && medianValues_[i-1]!=NA )) { |
| 1285 | left = i-1; |
| 1286 | for (int j=i-2; j>0; j--) { |
| 1287 | if (fragmentNotNA_lengths_[j]<=maxRegionLengthToDelete && medianValues_[j]!=NA ) |
| 1288 | left = j; |
| 1289 | else |
| 1290 | break; |
| 1291 | } |
| 1292 | } |
| 1293 | if ((i+1<(int)medianValues_.size())&&(fragmentNotNA_lengths_[i+1]<=maxRegionLengthToDelete)&& medianValues_[i+1]!=NA) { |
| 1294 | right = i+1; |
| 1295 | for (int j=i+2; j<(int)fragment_lengths_.size()-1; j++) { |
| 1296 | if (fragmentNotNA_lengths_[j]<=maxRegionLengthToDelete && medianValues_[j]!=NA ) |
| 1297 | right = j; |
| 1298 | else |
| 1299 | break; |
| 1300 | } |
| 1301 | } |
| 1302 | if (left < i-1) |
| 1303 | recalcFlanksForIndeces (left,i-1); |
| 1304 | if (i+1 < right) |
| 1305 | recalcFlanksForIndeces (i+1, right); |
| 1306 | } |
| 1307 | } |
| 1308 | //recalculate telomeric flanks: |
| 1309 | if (medianValues_[0]!=NA) |
| 1310 | if (fragmentNotNA_lengths_[0]<=maxRegionLengthToDelete) { |
| 1311 | int i = 0; |
| 1312 | int right = 0; |
| 1313 | if ((i+1<(int)medianValues_.size())&&(fragmentNotNA_lengths_[i+1]<=maxRegionLengthToDelete)) { |
| 1314 | right = i+1; |
| 1315 | for (int j=i+2; j<(int)fragment_lengths_.size()-1; j++) { |
| 1316 | if (fragmentNotNA_lengths_[j]<=maxRegionLengthToDelete) |
| 1317 | right = j; |
| 1318 | else |
| 1319 | break; |
| 1320 | } |
| 1321 | } |
| 1322 | recalcFlanksForIndeces (i, right); |
| 1323 | } |
| 1324 | |
| 1325 | if ((medianValues_[medianValues_.size()-1]!=NA)&&(fragmentNotNA_lengths_[medianValues_.size()-1]<=maxRegionLengthToDelete)) { |
| 1326 | int i = medianValues_.size()-1; |
| 1327 | int left = medianValues_.size()-1; |
| 1328 | if ((i-1>=0)&&(fragmentNotNA_lengths_[i-1]<=maxRegionLengthToDelete)) { |
| 1329 | left = i-1; |
| 1330 | for (int j=i-2; j>0; j--) { |
| 1331 | if (fragmentNotNA_lengths_[j]<=maxRegionLengthToDelete) |
| 1332 | left = j; |
| 1333 | else |
| 1334 | break; |
| 1335 | } |
no outgoing calls
no test coverage detected