use of org.jbei.ice.storage.hibernate.dao.SequenceFeatureDAO in project ice by JBEI.
the class AnnotationsTest method testCurate.
@Test
public void testCurate() throws Exception {
Account account = AccountCreator.createTestAccount("AnnotationsTest.testCurate", true);
Plasmid plasmid = TestEntryCreator.createTestPlasmid(account);
Assert.assertNotNull(plasmid);
SequenceDAO sequenceDAO = new SequenceDAO();
Assert.assertFalse(sequenceDAO.hasSequence(plasmid.getId()));
FeaturedDNASequence dnaSequence = GeneralParser.parse(sequenceString);
PartSequence partSequence = new PartSequence(account.getEmail(), plasmid.getRecordId());
partSequence.save(dnaSequence);
SequenceFeatureDAO sequenceFeatureDAO = new SequenceFeatureDAO();
List<SequenceFeature> sequenceFeatures = sequenceFeatureDAO.getEntrySequenceFeatures(plasmid);
Assert.assertEquals(1, sequenceFeatures.size());
Feature feature = sequenceFeatures.get(0).getFeature();
DNAFeature dnaFeature = feature.toDataTransferObject();
Curation curation = new Curation();
curation.setExclude(true);
dnaFeature.setCuration(curation);
List<DNAFeature> features = new ArrayList<>();
features.add(dnaFeature);
Annotations annotations = new Annotations(account.getEmail());
annotations.curate(features);
sequenceFeatures = sequenceFeatureDAO.getEntrySequenceFeatures(plasmid);
feature = sequenceFeatures.get(0).getFeature();
Assert.assertTrue(feature.getCuration().isExclude());
}
use of org.jbei.ice.storage.hibernate.dao.SequenceFeatureDAO in project ice by JBEI.
the class BlastPlus method writeBigFastaFileForFeatures.
/**
* Writes the fasta file (part of the blast database) that contains all the features that exists on this system.
* This routine is expected to be called as part of the blast sequence feature database rebuild
*
* @param writer writer for fasta file
* @throws BlastException
*/
private static void writeBigFastaFileForFeatures(BufferedWriter writer) throws BlastException {
FeatureDAO featureDAO = DAOFactory.getFeatureDAO();
SequenceFeatureDAO sequenceFeatureDAO = DAOFactory.getSequenceFeatureDAO();
long count = featureDAO.getFeatureCount(null);
if (count <= 0)
return;
int offset = 0;
while (offset < count) {
List<Feature> features = featureDAO.getFeatures(offset++, 1, null);
Feature feature = features.get(0);
String featureName = feature.getName();
if (featureName == null || featureName.trim().isEmpty())
continue;
if (feature.getCuration() != null && feature.getCuration().isExclude())
continue;
boolean hasNegativeStrand = false;
boolean hasPositiveStrand = false;
List<SequenceFeature> sequenceFeatures = sequenceFeatureDAO.getByFeature(feature);
if (sequenceFeatures == null || sequenceFeatures.isEmpty()) {
hasPositiveStrand = true;
} else {
for (SequenceFeature sequenceFeature : sequenceFeatures) {
if (sequenceFeature.getStrand() == 1) {
hasPositiveStrand = true;
} else if (sequenceFeature.getStrand() == -1) {
hasNegativeStrand = true;
}
}
}
try {
String sequenceString = feature.getSequence().trim();
if (StringUtils.isEmpty(sequenceString))
continue;
if (hasNegativeStrand) {
try {
SymbolList symbolList = DNATools.createDNA(sequenceString);
symbolList = DNATools.reverseComplement(symbolList);
writeSequenceString(feature, writer, symbolList.seqString(), -1);
} catch (IllegalSymbolException | IllegalAlphabetException e) {
Logger.warn(e.getMessage());
continue;
}
}
if (hasPositiveStrand) {
writeSequenceString(feature, writer, sequenceString, 1);
}
} catch (IOException e) {
throw new BlastException(e);
}
}
}
Aggregations