public void process(Set<RawProtein<PIRSFHmmer2RawMatch>> rawMatches,Map<Long,Integer> proteinLengthsMap,final String filteredMatchesFilePath,final String blastMatchesFilePath,final String subFamiliesFilePath,final double signatureLibraryReleaseValue) throws IOException {
  final Map<String,PirsfDatRecord> pirsfDatRecordMap=pirsfDatFileInfoHolder.getData();
  Map<String,PIRSFHmmer2RawMatch> proteinIdBestMatchMap=new HashMap<String,PIRSFHmmer2RawMatch>();
  Map<String,PIRSFHmmer2RawMatch> proteinIdBestMatchToBeBlastedMap=new HashMap<String,PIRSFHmmer2RawMatch>();
  final Map<String,String> subFamToSuperFamMap=new HashMap<String,String>();
  for (  RawProtein<PIRSFHmmer2RawMatch> protein : rawMatches) {
    String proteinId=protein.getProteinIdentifier();
    int proteinLength=proteinLengthsMap.get(Long.parseLong(proteinId));
    PIRSFHmmer2RawMatch bestMatch=doOverlapFiltering(protein,pirsfDatRecordMap,proteinLength,subFamToSuperFamMap);
    if (bestMatch != null) {
      if (doBlastCheck(proteinId,bestMatch,pirsfDatRecordMap)) {
        proteinIdBestMatchToBeBlastedMap.put(proteinId,bestMatch);
      }
 else {
        proteinIdBestMatchMap.put(proteinId,bestMatch);
      }
    }
  }
  PirsfFileUtil.writeProteinBestMatchesToFile(filteredMatchesFilePath,proteinIdBestMatchMap);
  PirsfFileUtil.writeProteinBestMatchesToFile(blastMatchesFilePath,proteinIdBestMatchToBeBlastedMap);
  if (signatureLibraryReleaseValue >= 2.75d && subFamiliesFilePath != null) {
    PirsfFileUtil.writeSubFamiliesToFile(subFamiliesFilePath,subFamToSuperFamMap);
  }
}

public void process ( Set < RawProtein < PIRSFHmmer2RawMatch > > rawMatches , Map < Long , Integer > proteinLengthsMap , final String filteredMatchesFilePath , final String blastMatchesFilePath , final String subFamiliesFilePath , final double signatureLibraryReleaseValue ) throws IOException { final Map < String , PirsfDatRecord > pirsfDatRecordMap = pirsfDatFileInfoHolder . getData ( ) ; Map < String , PIRSFHmmer2RawMatch > proteinIdBestMatchMap = new HashMap < String , PIRSFHmmer2RawMatch > ( ) ; Map < String , PIRSFHmmer2RawMatch > proteinIdBestMatchToBeBlastedMap = new HashMap < String , PIRSFHmmer2RawMatch > ( ) ; final Map < String , String > subFamToSuperFamMap = new HashMap < String , String > ( ) ; for ( RawProtein < PIRSFHmmer2RawMatch > protein : rawMatches ) { String proteinId = protein . getProteinIdentifier ( ) ; int proteinLength = proteinLengthsMap . get ( Long . parseLong ( proteinId ) ) ; PIRSFHmmer2RawMatch bestMatch = doOverlapFiltering ( protein , pirsfDatRecordMap , proteinLength , subFamToSuperFamMap ) ; if ( bestMatch != null ) { if ( doBlastCheck ( proteinId , bestMatch , pirsfDatRecordMap ) ) { proteinIdBestMatchToBeBlastedMap . put ( proteinId , bestMatch ) ; } else { proteinIdBestMatchMap . put ( proteinId , bestMatch ) ; } } } PirsfFileUtil . writeProteinBestMatchesToFile ( filteredMatchesFilePath , proteinIdBestMatchMap ) ; PirsfFileUtil . writeProteinBestMatchesToFile ( blastMatchesFilePath , proteinIdBestMatchToBeBlastedMap ) ; if ( signatureLibraryReleaseValue >= 2.75d && subFamiliesFilePath != null ) { PirsfFileUtil . writeSubFamiliesToFile ( subFamiliesFilePath , subFamToSuperFamMap ) ; } }
perform overlap post processing .
