SharedProteinResources( final ProteinScoringMatrix matrix, final SequencesReader template, final SequencesReader query, boolean readNames) throws IOException { mProteinScoringMatrix = matrix; mTemplateReader = template; mQueryReader = query; if (query != null) { mWorkSpace = new byte[(int) query.maxLength()]; mWorkSpaceProtein = new byte[mWorkSpace.length / 3]; if (query.numberSequences() > Integer.MAX_VALUE) { throw new IllegalArgumentException("Number of reads exceeds " + Integer.MAX_VALUE); } } else { mWorkSpace = null; mWorkSpaceProtein = null; } if (mTemplateReader != null) { mTemplateNames = mTemplateReader.names(); } else { mTemplateNames = null; } if (readNames && mQueryReader != null) { mReadNames = query.names(); } else { mReadNames = null; } }