@Override public void updateNumberOfPositiveRegRegions(int num) throws DataFormatException { // TODO check for empty regions // TODO test this int deltaSeqNum = num - positiveRegRegions.size(); if (deltaSeqNum < 0) { // desired number of positive sequences is less than is available now for (int i = 0; i > deltaSeqNum; i--) { positiveRegRegions.remove(0); } } else { // desired number is more than available -> need to generate extra ArrayList<Feature> extraSimulatedGenes = FeaturesTools.generateSimulatedRegulatoryRegionsWithPositionalPSSMs( deltaSeqNum, regulatorySequenceLength, sequenceNtProbabilities, SystemVariables.getInstance().getPositivePatserCutOffScore(), POSITIVE_REGION_PREFIX, modelRegRegionService.getPositiveRegulatoryRegions(), modelRegElService); // generateRegulatoryRegions(deltaSeqNum, POSITIVE_REGION_PREFIX); negativeRegRegions.addAll(extraSimulatedGenes); } }
public SyntheticRegRegionService(int numOfPositiveRegRegions, int negExMultiplicationFactor) throws DataFormatException { modelRegRegionService = new CElegansRegRegionService(0); File pwmDir = new File(SystemVariables.getInstance().getString("C.elegans.PWMs.dir")); String tmpJobDir = SystemVariables.getInstance() .getString("temp.output.dir"); // TODO create a proper tmp job dir for experiments modelRegElService = new PatserRegElementService(pwmDir, tmpJobDir); if (modelRegRegionService.getPositiveRegulatoryRegions().size() > 0) { regulatorySequenceLength = modelRegRegionService.getPositiveRegulatoryRegions().get(0).getSequence().length(); } else { throw new DataFormatException( "Model regulatory regions are empty. Can not model synthetic regions based on an empty regions."); } // TODO: remove - just for testing regulatorySequenceLength = 25; negativeRegRegions = FeaturesTools.generateSimulatedRegulatoryRegions( negExMultiplicationFactor * numOfPositiveRegRegions, regulatorySequenceLength, NEGATIVE_REGION_PREFIX, sequenceNtProbabilities); positiveRegRegions = FeaturesTools.generateSimulatedRegulatoryRegionsWithPositionalPSSMs( numOfPositiveRegRegions, regulatorySequenceLength, sequenceNtProbabilities, SystemVariables.getInstance().getPositivePatserCutOffScore(), POSITIVE_REGION_PREFIX, modelRegRegionService.getPositiveRegulatoryRegions(), modelRegElService); // this.generateRegulatoryRegions(numOfPositiveRegRegions, ); }