question: 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 ) ; } }
target:  Perform overlap post processing.