use of ubic.gemma.model.genome.Taxon in project Gemma by PavlidisLab.
the class ExpressionExperimentSetServiceImpl method createFromValueObject.
@Override
@Transactional
public ExpressionExperimentSet createFromValueObject(ExpressionExperimentSetValueObject eesvo) {
/*
* Sanity check.
*/
Collection<ExpressionExperimentSet> dups = this.findByName(eesvo.getName());
if (dups == null || !dups.isEmpty()) {
throw new IllegalArgumentException("Sorry, there is already a set with that name (" + eesvo.getName() + ")");
}
ExpressionExperimentSet newSet = ExpressionExperimentSet.Factory.newInstance();
newSet.setName(eesvo.getName());
newSet.setDescription(eesvo.getDescription());
Collection<? extends BioAssaySet> datasetsAnalyzed = expressionExperimentService.load(eesvo.getExpressionExperimentIds());
newSet.getExperiments().addAll(datasetsAnalyzed);
if (eesvo.getTaxonId() != null)
newSet.setTaxon(taxonService.load(eesvo.getTaxonId()));
else {
/*
* Figure out the taxon from the experiments. mustn't be heterogeneous.
*/
Taxon taxon = null;
for (BioAssaySet bioAssaySet : newSet.getExperiments()) {
Taxon eeTaxon = this.getTaxonForSet(bioAssaySet);
if (taxon == null) {
taxon = eeTaxon;
} else {
assert eeTaxon != null;
if (!eeTaxon.equals(taxon)) {
throw new UnsupportedOperationException("EESets with mixed taxa are not supported");
}
}
}
if (taxon == null) {
throw new IllegalStateException("Could not determine taxon for new EEset");
}
newSet.setTaxon(taxon);
}
if (newSet.getTaxon() == null) {
throw new IllegalArgumentException("Unable to determine the taxon for the EESet");
}
ExpressionExperimentSet newEESet = this.create(newSet);
// make groups private by default
if (eesvo.getIsPublic()) {
securityService.makePublic(newEESet);
} else {
securityService.makePrivate(newEESet);
}
return newEESet;
}
use of ubic.gemma.model.genome.Taxon in project Gemma by PavlidisLab.
the class ExpressionExperimentSetServiceImpl method updateDatabaseEntityMembers.
/**
* update the members of the experiment set with the given ids
*
* @param groupId set to update
* @param eeIds new set member ids
*/
@Override
@Transactional
public void updateDatabaseEntityMembers(Long groupId, Collection<Long> eeIds) {
if (eeIds.isEmpty()) {
throw new IllegalArgumentException("No expression experiment ids provided. Cannot save an empty set.");
}
ExpressionExperimentSet eeSet = this.load(groupId);
if (eeSet == null) {
throw new IllegalArgumentException("No experiment set with id=" + groupId + " could be loaded. " + "Either it does not exist or you do not have permission to view it.");
}
// check that new member ids are valid
Collection<ExpressionExperiment> newExperiments = expressionExperimentService.load(eeIds);
if (newExperiments.isEmpty()) {
throw new IllegalArgumentException("None of the experiment ids were valid (out of " + eeIds.size() + " provided)");
}
if (newExperiments.size() < eeIds.size()) {
throw new IllegalArgumentException("Some of the experiment ids were invalid: only found " + newExperiments.size() + " out of " + eeIds.size() + " provided)");
}
assert newExperiments.size() == eeIds.size();
Collection<BioAssaySet> basColl = new HashSet<>();
for (ExpressionExperiment experiment : newExperiments) {
Taxon eeTaxon = this.getTaxonForSet(experiment);
// make sure experiments being added are from the right taxon
if (eeTaxon == null || !eeTaxon.equals(eeSet.getTaxon())) {
throw new IllegalArgumentException(experiment + " is of the wrong taxon to add to eeset. EESet taxon is " + eeSet.getTaxon());
}
basColl.add(experiment);
}
eeSet.getExperiments().clear();
eeSet.getExperiments().addAll(basColl);
this.update(eeSet);
}
use of ubic.gemma.model.genome.Taxon in project Gemma by PavlidisLab.
the class ExpressionExperimentSetServiceImpl method update.
/**
* @see ExpressionExperimentSetService#update(ExpressionExperimentSet)
*/
@Override
@Transactional
public void update(final ExpressionExperimentSet expressionExperimentSet) {
if (expressionExperimentSet == null) {
throw new IllegalArgumentException("Cannot update null set");
}
if (expressionExperimentSet.getId() == null || expressionExperimentSet.getId() < 0) {
throw new IllegalArgumentException("Can only update an existing eeset (passed id=" + expressionExperimentSet.getId() + ")");
}
if (StringUtils.isBlank(expressionExperimentSet.getName())) {
throw new IllegalArgumentException("You must provide a name");
}
// make sure potentially new experiment members are of the right taxon
Taxon groupTaxon = expressionExperimentSet.getTaxon();
Taxon eeTaxon;
for (BioAssaySet ee : expressionExperimentSet.getExperiments()) {
eeTaxon = this.getTaxonForSet(ee);
assert eeTaxon != null;
if (!eeTaxon.equals(groupTaxon)) {
throw new IllegalArgumentException("Failed to add experiments of wrong taxa (" + ee + ") to eeset. " + "EESet taxon is " + groupTaxon + ", experiment was " + eeTaxon);
}
}
if (StringUtils.isBlank(expressionExperimentSet.getName())) {
throw new IllegalArgumentException("Attempt to update an ExpressionExperimentSet so it has no name");
}
this.expressionExperimentSetDao.update(expressionExperimentSet);
}
use of ubic.gemma.model.genome.Taxon in project Gemma by PavlidisLab.
the class ChromosomeDaoImpl method findOrCreate.
@Override
public Chromosome findOrCreate(Chromosome entity) {
String name = entity.getName();
Taxon taxon = entity.getSequence().getTaxon();
Collection<Chromosome> hits = this.find(name, taxon);
if (hits == null || hits.isEmpty()) {
Chromosome c = new Chromosome(name, taxon);
return this.create(c);
}
return hits.iterator().next();
}
use of ubic.gemma.model.genome.Taxon in project Gemma by PavlidisLab.
the class TaxonDaoImpl method findOrCreate.
@Override
public Taxon findOrCreate(Taxon taxon) {
Taxon existingTaxon = this.find(taxon);
if (existingTaxon != null) {
if (AbstractDao.log.isDebugEnabled())
AbstractDao.log.debug("Found existing taxon: " + taxon);
return existingTaxon;
}
if (StringUtils.isBlank(taxon.getCommonName()) && StringUtils.isBlank(taxon.getScientificName())) {
throw new IllegalArgumentException("Cannot create a taxon without names: " + taxon);
}
AbstractDao.log.warn("Creating new taxon: " + taxon);
return super.create(taxon);
}
Aggregations