bool ReadHasMeaningfulQualityValues(FASTQSequence &sequence) { if (sequence.qual.Empty() == true) { return 0; } else { int numZero=0, numNonZero=0; if (sequence.qual.data == NULL) { return false; } numZero = CountZero(sequence.qual.data, sequence.length); numNonZero = sequence.length - numZero; int subNumZero = 0, subNonZero = 0; if (sequence.substitutionQV.data == NULL) { return false; } subNumZero = CountZero(sequence.substitutionQV.data, sequence.length); subNonZero = sequence.length - subNumZero; if (numZero < 0.5*numNonZero and subNumZero < 0.5 * subNonZero) { return true; } else { return false; } } }
// 90度座標のビットボードを通常の座標に戻す。 Bitboard Util::Reverse90(Bitboard bitboard90) { // 通常座標に変換する。 Bitboard bitboard = 0; for (;bitboard90; bitboard90 &= bitboard90 - 1) { // 90度座標の位置を得る。 Square square90 = CountZero(bitboard90); // 変換して追加。 bitboard |= SQUARE[R_ROT90[square90]]; } // 返す。 return bitboard; }
// 135度座標のビットボードを通常の座標に戻す。 Bitboard Util::Reverse135(Bitboard bitboard135) { // 通常座標に変換する。 Bitboard bitboard = 0; for (;bitboard135; bitboard135 &= bitboard135 - 1) { // 135度座標の位置を得る。 Square square135 = CountZero(bitboard135); // 変換して追加。 bitboard |= SQUARE[R_ROT135[square135]]; } // 返す。 return bitboard; }
// 45度座標のビットボードを通常の座標に戻す。 Bitboard Util::Reverse45(Bitboard bitboard45) { // 通常座標に変換する。 Bitboard bitboard = 0; for (;bitboard45; bitboard45 &= bitboard45 - 1) { // 45度座標の位置を得る。 Square square45 = CountZero(bitboard45); // 変換して追加。 bitboard |= SQUARE[R_ROT45[square45]]; } // 返す。 return bitboard; }