
org.campagnelab.dl.somatic.mappers.GenomicContextMapper Maven / Gradle / Ivy
package org.campagnelab.dl.somatic.mappers;
import org.campagnelab.dl.framework.mappers.ConcatFeatureMapper;
import org.campagnelab.dl.framework.mappers.FeatureMapper;
import org.campagnelab.dl.framework.mappers.FeatureNameMapper;
import org.campagnelab.dl.framework.mappers.NoMaskFeatureMapper;
import org.campagnelab.dl.varanalysis.protobuf.BaseInformationRecords;
import org.campagnelab.dl.framework.mappers.OneHotBaseFeatureMapper;
import org.nd4j.linalg.api.ndarray.INDArray;
import java.util.Properties;
import java.util.function.Function;
/**
* Maps the full genomic context using multiple onehotfeaturemapper
* Created by rct66 on 10/25/16.
*/
public class GenomicContextMapper extends NoMaskFeatureMapper
implements FeatureMapper, FeatureNameMapper {
private ConcatFeatureMapper delegate;
public GenomicContextMapper(Properties sbiProperties) {
this((int) Float.parseFloat(sbiProperties.getProperty("stats.genomicContextSize.min", "0.0")));
if (sbiProperties.getProperty("stats.genomicContextSize.min") == null) {
throw new RuntimeException("Unable to obtain stats.genomicContextSize.min from properties.");
}
}
public GenomicContextMapper(int contextSize) {
OneHotBaseFeatureMapper[] refContext = new OneHotBaseFeatureMapper[contextSize];
for (int i = 0; i < contextSize; i++) {
refContext[i] = new OneHotBaseFeatureMapper<>(i,
BaseInformationRecords.BaseInformationOrBuilder::getGenomicSequenceContext);
}
delegate = new ConcatFeatureMapper<>(refContext);
}
public GenomicContextMapper(int contextSize, Function function) {
OneHotBaseFeatureMapper[] refContext = new OneHotBaseFeatureMapper[contextSize];
for (int i = 0; i < contextSize; i++) {
refContext[i] = new OneHotBaseFeatureMapper<>(i, function);
}
delegate = new ConcatFeatureMapper<>(refContext);
}
@Override
public int numberOfFeatures() {
return delegate.numberOfFeatures();
}
@Override
public void prepareToNormalize(BaseInformationRecords.BaseInformationOrBuilder record, int indexOfRecord) {
delegate.prepareToNormalize(record, indexOfRecord);
}
int[] indices = new int[]{0, 0};
@Override
public void mapFeatures(BaseInformationRecords.BaseInformationOrBuilder record, INDArray inputs, int indexOfRecord) {
delegate.mapFeatures(record, inputs, indexOfRecord);
}
@Override
public float produceFeature(BaseInformationRecords.BaseInformationOrBuilder record, int featureIndex) {
return delegate.produceFeature(record, featureIndex);
}
@Override
public String getFeatureName(int featureIndex) {
return "GenomicContextMapper"+featureIndex;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy