Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions uk/ac/babraham/FastQC/Modules/BasicStats.java
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,10 @@ public void processSequence(Sequence sequence) {
if (sequence.getSequence().length() > maxLength) maxLength = sequence.getSequence().length();
}

char [] chars = sequence.getSequence().toCharArray();
for (int c=0;c<chars.length;c++) {
switch (chars[c]) {
String seq = sequence.getSequence();
int seqLen = seq.length();
for (int c=0;c<seqLen;c++) {
switch (seq.charAt(c)) {
case 'G': ++gCount;break;
case 'A': ++aCount;break;
case 'T': ++tCount;break;
Expand All @@ -134,10 +135,12 @@ public void processSequence(Sequence sequence) {
}
}

chars = sequence.getQualityString().toCharArray();
for (int c=0;c<chars.length;c++) {
if (chars[c] < lowestChar) {
lowestChar = chars[c];
String qual = sequence.getQualityString();
int qualLen = qual.length();
for (int c=0;c<qualLen;c++) {
char ch = qual.charAt(c);
if (ch < lowestChar) {
lowestChar = ch;
}
}
}
Expand Down
13 changes: 7 additions & 6 deletions uk/ac/babraham/FastQC/Modules/NContent.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,13 @@ private synchronized void getPercentages () {

public void processSequence(Sequence sequence) {
calculated = false;
char [] seq = sequence.getSequence().toCharArray();
if (nCounts.length < seq.length) {
String seq = sequence.getSequence();
int seqLen = seq.length();
if (nCounts.length < seqLen) {
// We need to expand the size of the data structures

long [] nCountsNew = new long [seq.length];
long [] notNCountsNew = new long [seq.length];
long [] nCountsNew = new long [seqLen];
long [] notNCountsNew = new long [seqLen];

for (int i=0;i<nCounts.length;i++) {
nCountsNew[i] = nCounts[i];
Expand All @@ -103,8 +104,8 @@ public void processSequence(Sequence sequence) {
notNCounts = notNCountsNew;
}

for (int i=0;i<seq.length;i++) {
if (seq[i] == 'N') {
for (int i=0;i<seqLen;i++) {
if (seq.charAt(i) == 'N') {
++nCounts[i];
}
else {
Expand Down
13 changes: 7 additions & 6 deletions uk/ac/babraham/FastQC/Modules/PerBaseQualityScores.java
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,11 @@ private synchronized void getPercentages () {
public void processSequence(Sequence sequence) {

calculated = false;
char [] qual = sequence.getQualityString().toCharArray();
if (qualityCounts.length < qual.length) {

QualityCount [] qualityCountsNew = new QualityCount[qual.length];
String qual = sequence.getQualityString();
int qualLen = qual.length();
if (qualityCounts.length < qualLen) {

QualityCount [] qualityCountsNew = new QualityCount[qualLen];

for (int i=0;i<qualityCounts.length;i++) {
qualityCountsNew[i] = qualityCounts[i];
Expand All @@ -144,8 +145,8 @@ public void processSequence(Sequence sequence) {

}

for (int i=0;i<qual.length;i++) {
qualityCounts[i].addValue(qual[i]);
for (int i=0;i<qualLen;i++) {
qualityCounts[i].addValue(qual.charAt(i));
}

}
Expand Down
26 changes: 14 additions & 12 deletions uk/ac/babraham/FastQC/Modules/PerBaseSequenceContent.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,14 @@ private synchronized void getPercentages () {

public void processSequence(Sequence sequence) {
calculated = false;
char [] seq = sequence.getSequence().toCharArray();
if (gCounts.length < seq.length) {

long [] gCountsNew = new long [seq.length];
long [] aCountsNew = new long [seq.length];
long [] cCountsNew = new long [seq.length];
long [] tCountsNew = new long [seq.length];
String seq = sequence.getSequence();
int seqLen = seq.length();
if (gCounts.length < seqLen) {

long [] gCountsNew = new long [seqLen];
long [] aCountsNew = new long [seqLen];
long [] cCountsNew = new long [seqLen];
long [] tCountsNew = new long [seqLen];

for (int i=0;i<gCounts.length;i++) {
gCountsNew[i] = gCounts[i];
Expand All @@ -134,17 +135,18 @@ public void processSequence(Sequence sequence) {
cCounts = cCountsNew;
}

for (int i=0;i<seq.length;i++) {
if (seq[i] == 'G') {
for (int i=0;i<seqLen;i++) {
char b = seq.charAt(i);
if (b == 'G') {
++gCounts[i];
}
else if (seq[i] == 'A') {
else if (b == 'A') {
++aCounts[i];
}
else if (seq[i] == 'T') {
else if (b == 'T') {
++tCounts[i];
}
else if (seq[i] == 'C') {
else if (b == 'C') {
++cCounts[i];
}
}
Expand Down
30 changes: 16 additions & 14 deletions uk/ac/babraham/FastQC/Modules/PerSequenceGCContent.java
Original file line number Diff line number Diff line change
Expand Up @@ -171,42 +171,44 @@ public void processSequence(Sequence sequence) {
// encounter we need to reduce the number of models. We can do this by
// rounding off the sequence once we get above a certain size

char [] seq = truncateSequence(sequence);

if (seq.length == 0) return; // Ignore empty sequences
String seq = truncateSequence(sequence);
int seqLen = seq.length();

if (seqLen == 0) return; // Ignore empty sequences


int thisSeqGCCount = 0;
for (int i=0;i<seq.length;i++) {
if (seq[i] == 'G' || seq[i] == 'C') {
for (int i=0;i<seqLen;i++) {
char b = seq.charAt(i);
if (b == 'G' || b == 'C') {
++thisSeqGCCount;
}
}

if (seq.length >= cachedModels.length) {
if (seqLen >= cachedModels.length) {
// We need to extend the length of cached models

GCModel [] longerModels = new GCModel[seq.length+1];
GCModel [] longerModels = new GCModel[seqLen+1];
for (int i=0;i<cachedModels.length;i++) {
longerModels[i] = cachedModels[i];
}

cachedModels = longerModels;
}

if (cachedModels[seq.length] == null) {
cachedModels[seq.length] = new GCModel(seq.length);
if (cachedModels[seqLen] == null) {
cachedModels[seqLen] = new GCModel(seqLen);
}

GCModelValue [] values = cachedModels[seq.length].getModelValues(thisSeqGCCount);
GCModelValue [] values = cachedModels[seqLen].getModelValues(thisSeqGCCount);

for (int i=0;i<values.length;i++) {
gcDistribution[values[i].percentage()] += values[i].increment();
}

}

private char [] truncateSequence (Sequence sequence) {
private String truncateSequence (Sequence sequence) {

String seq = sequence.getSequence();

Expand All @@ -215,14 +217,14 @@ public void processSequence(Sequence sequence) {

if (seq.length() > 1000) {
int length = (seq.length()/1000)*1000;
return seq.substring(0, length).toCharArray();
return seq.substring(0, length);
}
if (seq.length() > 100) {
int length = (seq.length()/100)*100;
return seq.substring(0, length).toCharArray();
return seq.substring(0, length);
}

return seq.toCharArray();
return seq;

}

Expand Down
16 changes: 9 additions & 7 deletions uk/ac/babraham/FastQC/Modules/PerSequenceQualityScores.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,18 +88,20 @@ private synchronized void calculateDistribution () {

public void processSequence(Sequence sequence) {

char [] seq = sequence.getQualityString().toCharArray();
String qual = sequence.getQualityString();
int qualLen = qual.length();
int averageQuality = 0;

for (int i=0;i<seq.length;i++) {
if (seq[i] < lowestChar) {
lowestChar = seq[i];
for (int i=0;i<qualLen;i++) {
char ch = qual.charAt(i);
if (ch < lowestChar) {
lowestChar = ch;
}
averageQuality += seq[i];
averageQuality += ch;
}

if (seq.length > 0) {
averageQuality /= seq.length;
if (qualLen > 0) {
averageQuality /= qualLen;

if (averageScoreCounts.containsKey(averageQuality)) {
long currentCount = averageScoreCounts.get(averageQuality);
Expand Down
13 changes: 7 additions & 6 deletions uk/ac/babraham/FastQC/Modules/PerTileQualityScores.java
Original file line number Diff line number Diff line change
Expand Up @@ -256,15 +256,16 @@ else if (splitID.length >=5) {
return;
}

char [] qual = sequence.getQualityString().toCharArray();
if (currentLength < qual.length) {
String qual = sequence.getQualityString();
int qualLen = qual.length();
if (currentLength < qualLen) {

Iterator<Integer> tiles = perTileQualityCounts.keySet().iterator();
while (tiles.hasNext()) {
int thisTile = tiles.next();

QualityCount [] qualityCounts = perTileQualityCounts.get(thisTile);
QualityCount [] qualityCountsNew = new QualityCount[qual.length];
QualityCount [] qualityCountsNew = new QualityCount[qualLen];

for (int i=0;i<qualityCounts.length;i++) {
qualityCountsNew[i] = qualityCounts[i];
Expand All @@ -275,7 +276,7 @@ else if (splitID.length >=5) {
perTileQualityCounts.put(thisTile, qualityCountsNew);
}

currentLength = qual.length;
currentLength = qualLen;

}

Expand All @@ -300,8 +301,8 @@ else if (splitID.length >=5) {

QualityCount [] qualityCounts = perTileQualityCounts.get(tile);

for (int i=0;i<qual.length;i++) {
qualityCounts[i].addValue(qual[i]);
for (int i=0;i<qualLen;i++) {
qualityCounts[i].addValue(qual.charAt(i));
}

}
Expand Down
Loading