Commit e5ed2a53 authored by Piotr Gawron's avatar Piotr Gawron

Merge branch '1059-genetic-variants-and-identifiers' into 'devel_14.0.x'

Resolve "Data overlay - colouring by column identifier_xxx does not work"

See merge request !1037
parents 934a2dbd 8abf04b8
Pipeline #17982 passed with stage
in 13 minutes and 33 seconds
......@@ -7,6 +7,10 @@ minerva (14.0.6) stable; urgency=medium
displayed at all (regresion 14.0.5, #1045)
* Bug fix: when there is a problem with database during removing project,
project removal doesn't hang (#1058)
* Bug fix: coloring of the reaction wasn't applied to center of reaction
(regression 14.0.0, #1057)
* Bug fix: genetic variant overlay improperly processed elements identified
by miriam identifiers, like uniprot (#1059)
-- Piotr Gawron <piotr.gawron@uni.lu> Wed, 18 Dec 2019 12:00:00 +0200
......
......@@ -296,8 +296,15 @@ public class ReactionConverter extends BioEntityConverter<Reaction> {
* {@link ColorSchema} to modify reaction
*/
private void applyColorSchema(Reaction reaction, ColorSchema colorSchema) {
PolylineData pd = new PolylineData(reaction.getLine());
pd.setColor(colorExtractor.getNormalizedColor(colorSchema));
if (colorSchema.getLineWidth() != null) {
pd.setWidth(colorSchema.getLineWidth());
}
reaction.setLine(pd);
for (AbstractNode node : reaction.getNodes()) {
PolylineData pd = new PolylineData(node.getLine());
pd = new PolylineData(node.getLine());
pd.setColor(colorExtractor.getNormalizedColor(colorSchema));
if (colorSchema.getLineWidth() != null) {
pd.setWidth(colorSchema.getLineWidth());
......
......@@ -81,13 +81,17 @@ public class ColorModelCommand extends ModelCommand {
* @throws InvalidColorSchemaException
* thrown when {@link Reaction} was already colored by other schema
*/
private void applyColor(Reaction reaction, ColorSchema schema) throws InvalidColorSchemaException {
void applyColor(Reaction reaction, ColorSchema schema) throws InvalidColorSchemaException {
if (!reaction.getReactants().get(0).getLine().getColor().equals(Color.BLACK)) {
throw new InvalidColorSchemaException(
"At least two rows try to set color to reaction: " + reaction.getIdReaction());
}
Color color = colorExtractor.getNormalizedColor(schema);
reaction.getLine().setColor(color);
if (schema.getLineWidth() != null) {
reaction.getLine().setWidth(schema.getLineWidth());
}
for (AbstractNode node : reaction.getNodes()) {
node.getLine().setColor(color);
if (schema.getLineWidth() != null) {
......@@ -342,6 +346,7 @@ public class ColorModelCommand extends ModelCommand {
element.setGlyph(null);
}
for (Reaction reaction : result.getReactions()) {
reaction.getLine().setColor(Color.BLACK);
for (AbstractNode node : reaction.getNodes()) {
node.getLine().setColor(Color.BLACK);
}
......
......@@ -2,9 +2,8 @@ package lcsb.mapviewer.commands;
import static org.junit.Assert.*;
import java.awt.*;
import java.awt.Color;
import java.util.*;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......@@ -460,4 +459,21 @@ public class ColorModelCommandTest extends CommandTestFunctions {
assertNotNull(factory.getModifiedElements().get(reaction));
}
@Test
public void testApplyColorToReaction() throws Exception {
Model model = getModelForFile("testFiles/sample.xml", false);
Reaction re4 = model.getReactionByReactionId("re1");
ColorSchema schema = new GenericColorSchema();
schema.setElementId("re1");
schema.setColor(Color.YELLOW);
schema.setName(null);
ColorModelCommand factory = new ColorModelCommand(model, new ArrayList<>(), colorExtractor);
factory.applyColor(re4, schema);
assertEquals(Color.YELLOW, re4.getLine().getColor());
}
}
......@@ -81,9 +81,7 @@ public class ColorSchemaReader {
if (Integer.valueOf(params.get(TextFileUtils.COLUMN_COUNT_PARAM)) == 1) {
return readSimpleNameColorSchema(colorInputStream);
} else if (params.get(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE) == null) {
{
return readGenericColorSchema(colorInputStream);
}
return readGenericColorSchema(colorInputStream);
} else {
ColorSchemaType type = null;
try {
......@@ -393,10 +391,10 @@ public class ColorSchemaReader {
private Collection<ColorSchema> mergeSchemas(Collection<ColorSchema> schemas) {
Map<String, ColorSchema> schemasByName = new HashMap<>();
for (ColorSchema colorSchema : schemas) {
ColorSchema mergedSchema = schemasByName.get(colorSchema.getName());
ColorSchema mergedSchema = schemasByName.get(getColorSchemaIdentifiablePart(colorSchema));
if (mergedSchema == null) {
mergedSchema = colorSchema.copy();
schemasByName.put(colorSchema.getName(), mergedSchema);
schemasByName.put(getColorSchemaIdentifiablePart(colorSchema), mergedSchema);
} else {
if (mergedSchema instanceof GeneVariationColorSchema) {
if (colorSchema instanceof GeneVariationColorSchema) {
......@@ -420,6 +418,16 @@ public class ColorSchemaReader {
return schemasByName.values();
}
private String getColorSchemaIdentifiablePart(ColorSchema colorSchema) {
List<String> identifiers = new ArrayList<>();
for (MiriamData md : colorSchema.getMiriamData()) {
identifiers.add(md.toString());
}
Collections.sort(identifiers);
return StringUtils.join(identifiers, "\n") + "\n" + colorSchema.getName();
}
/**
* Gets color that should be assigned to {@link GeneVariationColorSchema}.
*
......@@ -771,7 +779,7 @@ public class ColorSchemaReader {
if (schema.getLineWidth() != null) {
result.add(ColorSchemaColumn.LINE_WIDTH);
}
if (schema.getName() != null) {
if (getColorSchemaIdentifiablePart(schema) != null) {
result.add(ColorSchemaColumn.NAME);
}
if (schema.getModelName() != null) {
......
......@@ -376,4 +376,18 @@ public class ColorSchemaReaderTest extends ServiceTestFunctions {
reader.readColorSchema(fis, TextFileUtils.getHeaderParametersFromFile(fis2));
}
@Test
public void testGeneticVariantByUniprotIdentifier() throws Exception {
File f = new File("testFiles/coloring/uniprot-identifiers.txt");
byte[] data = fileToByteArray(f);
ByteArrayInputStream bin = new ByteArrayInputStream(data);
Collection<ColorSchema> schemas = reader.readColorSchema(bin,
TextFileUtils.getHeaderParametersFromFile(new ByteArrayInputStream(data)));
assertNotNull(schemas);
assertEquals(2, schemas.size());
}
}
#TYPE=GENETIC_VARIANT
#GENOME_VERSION=hg19
#GENOME_TYPE=UCSC
position original_DNA alternative_DNA contig allele_frequency color identifier_uniprot
90648003 T G 4 0.3750000 #e58e00 P14416
90656320 T C 4 0.7034621 #e58e00 P14416
90755218 G A 4 0.1379310 #e58ec5 P02511
161709831 G T 6 0.6025862 #e58ec5 P02511
162525131 G T 6 0.7025762 #e58ec5 P02511
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment