Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
minerva
core
Commits
60984743
Commit
60984743
authored
Jul 12, 2018
by
Piotr Gawron
Browse files
BindingRegion data model is supported
parent
994a828e
Changes
8
Show whitespace changes
Inline
Side-by-side
converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParser.java
View file @
60984743
...
...
@@ -15,8 +15,10 @@ import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerGene;
import
lcsb.mapviewer.converter.model.celldesigner.structure.fields.CellDesignerModificationResidue
;
import
lcsb.mapviewer.converter.model.celldesigner.structure.fields.ModificationType
;
import
lcsb.mapviewer.model.map.species.Gene
;
import
lcsb.mapviewer.model.map.species.field.CodingRegion
;
import
lcsb.mapviewer.model.map.species.field.ModificationResidue
;
import
lcsb.mapviewer.model.map.species.field.ModificationSite
;
import
lcsb.mapviewer.model.map.species.field.RegulatoryRegion
;
/**
* Class that performs parsing of the CellDesigner xml for
...
...
@@ -97,6 +99,8 @@ public class GeneXmlParser extends AbstractElementXmlParser<CellDesignerGene, Ge
residue
.
setIdModificationResidue
(
getNodeAttr
(
"id"
,
residueNode
));
residue
.
setName
(
getNodeAttr
(
"name"
,
residueNode
));
residue
.
setSide
(
getNodeAttr
(
"side"
,
residueNode
));
residue
.
setSize
(
getNodeAttr
(
"size"
,
residueNode
));
residue
.
setActive
(
getNodeAttr
(
"active"
,
residueNode
));
residue
.
setAngle
(
getNodeAttr
(
"pos"
,
residueNode
));
String
type
=
getNodeAttr
(
"type"
,
residueNode
);
try
{
...
...
@@ -161,9 +165,19 @@ public class GeneXmlParser extends AbstractElementXmlParser<CellDesignerGene, Ge
if
(!
mr
.
getName
().
equals
(
""
))
{
attributes
+=
" name=\""
+
escapeXml
(
mr
.
getName
())
+
"\""
;
}
String
type
=
null
;
if
(
mr
instanceof
ModificationSite
)
{
attributes
+=
" type=\"Modification Site\""
;
type
=
ModificationType
.
MODIFICATION_SITE
.
getCellDesignerName
();
}
else
if
(
mr
instanceof
RegulatoryRegion
)
{
type
=
ModificationType
.
REGULATORY_REGION
.
getCellDesignerName
();
attributes
+=
" size=\""
+
((
RegulatoryRegion
)
mr
).
getWidth
()
/
mr
.
getSpecies
().
getWidth
()
+
"\""
;
}
else
if
(
mr
instanceof
CodingRegion
)
{
type
=
ModificationType
.
CODING_REGION
.
getCellDesignerName
();
attributes
+=
" size=\""
+
((
RegulatoryRegion
)
mr
).
getWidth
()
/
mr
.
getSpecies
().
getWidth
()
+
"\""
;
}
else
{
throw
new
InvalidArgumentException
(
"Don't know how to handle: "
+
mr
.
getClass
());
}
attributes
+=
" type=\""
+
type
+
"\""
;
attributes
+=
" pos=\""
+
converter
.
getAngleForPoint
(
mr
.
getSpecies
(),
mr
.
getPosition
())
+
"\""
;
result
+=
"<celldesigner:region "
+
attributes
+
">"
;
result
+=
"</celldesigner:region>\n"
;
...
...
converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerModificationResidue.java
View file @
60984743
...
...
@@ -16,6 +16,7 @@ import lcsb.mapviewer.model.map.species.field.ModificationResidue;
import
lcsb.mapviewer.model.map.species.field.ModificationSite
;
import
lcsb.mapviewer.model.map.species.field.ModificationState
;
import
lcsb.mapviewer.model.map.species.field.ProteinBindingDomain
;
import
lcsb.mapviewer.model.map.species.field.RegulatoryRegion
;
import
lcsb.mapviewer.model.map.species.field.Residue
;
/**
...
...
@@ -46,6 +47,8 @@ public class CellDesignerModificationResidue implements Serializable {
*/
private
String
name
=
""
;
private
Boolean
active
=
null
;
private
ModificationType
modificationType
;
/**
...
...
@@ -125,11 +128,15 @@ public class CellDesignerModificationResidue implements Serializable {
}
else
if
(
mr
instanceof
ProteinBindingDomain
)
{
this
.
size
=
((
CodingRegion
)
mr
).
getWidth
()
/
mr
.
getSpecies
().
getWidth
();
this
.
modificationType
=
ModificationType
.
PROTEIN_BINDING_DOMAIN
;
}
else
if
(
mr
instanceof
RegulatoryRegion
)
{
this
.
size
=
((
RegulatoryRegion
)
mr
).
getWidth
()
/
mr
.
getSpecies
().
getWidth
();
this
.
modificationType
=
ModificationType
.
REGULATORY_REGION
;
}
else
if
(
mr
instanceof
BindingRegion
)
{
this
.
modificationType
=
ModificationType
.
BINDING_REGION
;
if
(
Math
.
abs
(
mr
.
getPosition
().
getX
()
-
mr
.
getSpecies
().
getX
())
<
Configuration
.
EPSILON
)
{
this
.
size
=
((
BindingRegion
)
mr
).
getHeight
()
/
mr
.
getSpecies
().
getHeight
();
}
else
if
(
Math
.
abs
(
mr
.
getPosition
().
getX
()
-
mr
.
getSpecies
().
getX
()
-
mr
.
getSpecies
().
getWidth
())
<
Configuration
.
EPSILON
)
{
}
else
if
(
Math
.
abs
(
mr
.
getPosition
().
getX
()
-
mr
.
getSpecies
().
getX
()
-
mr
.
getSpecies
().
getWidth
())
<
Configuration
.
EPSILON
)
{
this
.
size
=
((
BindingRegion
)
mr
).
getHeight
()
/
mr
.
getSpecies
().
getHeight
();
}
else
{
this
.
size
=
((
BindingRegion
)
mr
).
getWidth
()
/
mr
.
getSpecies
().
getWidth
();
...
...
@@ -377,6 +384,8 @@ public class CellDesignerModificationResidue implements Serializable {
return
createCodingRegion
(
element
,
converter
);
}
else
if
(
modificationType
.
equals
(
ModificationType
.
PROTEIN_BINDING_DOMAIN
))
{
return
createProteinBindingDomain
(
element
,
converter
);
}
else
if
(
modificationType
.
equals
(
ModificationType
.
REGULATORY_REGION
))
{
return
createRegulatoryRegion
(
element
,
converter
);
}
else
{
throw
new
InvalidArgumentException
(
"Unknown modification type: "
+
modificationType
);
}
...
...
@@ -416,6 +425,15 @@ public class CellDesignerModificationResidue implements Serializable {
return
result
;
}
private
RegulatoryRegion
createRegulatoryRegion
(
Element
element
,
CellDesignerAliasConverter
converter
)
{
RegulatoryRegion
result
=
new
RegulatoryRegion
();
result
.
setWidth
(
element
.
getWidth
()
*
size
);
result
.
setIdModificationResidue
(
idModificationResidue
);
result
.
setName
(
name
);
result
.
setPosition
(
converter
.
getResidueCoordinates
(
element
,
angle
));
return
result
;
}
private
ModificationSite
createModificationSite
(
Element
element
,
CellDesignerAliasConverter
converter
)
{
ModificationSite
result
=
new
ModificationSite
();
result
.
setState
(
this
.
getState
());
...
...
@@ -482,4 +500,20 @@ public class CellDesignerModificationResidue implements Serializable {
this
.
pos
=
pos
;
}
public
Boolean
getActive
()
{
return
active
;
}
public
void
setActive
(
Boolean
active
)
{
this
.
active
=
active
;
}
public
void
setActive
(
String
text
)
{
if
(
text
==
null
)
{
this
.
active
=
null
;
}
else
{
this
.
active
=
"true"
.
equalsIgnoreCase
(
text
);
}
}
}
converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/ModificationType.java
View file @
60984743
...
...
@@ -7,6 +7,7 @@ public enum ModificationType {
CODING_REGION
(
"CodingRegion"
),
//
PROTEIN_BINDING_DOMAIN
(
"proteinBindingDomain"
),
//
RESIDUE
(
null
),
//
REGULATORY_REGION
(
"RegulatoryRegion"
),
//
MODIFICATION_SITE
(
"Modification Site"
);
//
private
String
cellDesignerName
;
...
...
converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
View file @
60984743
...
...
@@ -52,6 +52,7 @@ import lcsb.mapviewer.model.map.species.SimpleMolecule;
import
lcsb.mapviewer.model.map.species.Species
;
import
lcsb.mapviewer.model.map.species.field.BindingRegion
;
import
lcsb.mapviewer.model.map.species.field.ModificationResidue
;
import
lcsb.mapviewer.model.map.species.field.RegulatoryRegion
;
public
class
CellDesignerXmlParserTest
extends
CellDesignerTestFunctions
{
Logger
logger
=
Logger
.
getLogger
(
CellDesignerXmlParserTest
.
class
);
...
...
@@ -1029,4 +1030,30 @@ public class CellDesignerXmlParserTest extends CellDesignerTestFunctions {
}
}
@Test
public
void
testRegulatoryRegion
()
throws
Exception
{
try
{
CellDesignerXmlParser
parser
=
new
CellDesignerXmlParser
();
Model
model
=
parser
.
createModel
(
new
ConverterParams
().
filename
(
"testFiles/gene_with_regulatory_region.xml"
));
Gene
gene
=
model
.
getElementByElementId
(
"sa1"
);
assertEquals
(
1
,
gene
.
getModificationResidues
().
size
());
ModificationResidue
residue
=
gene
.
getModificationResidues
().
get
(
0
);
assertTrue
(
residue
instanceof
RegulatoryRegion
);
RegulatoryRegion
bindingRegion
=
(
RegulatoryRegion
)
residue
;
assertEquals
(
bindingRegion
.
getPosition
().
getY
(),
gene
.
getY
(),
Configuration
.
EPSILON
);
assertTrue
(
bindingRegion
.
getWidth
()
>
bindingRegion
.
getHeight
());
String
xml
=
parser
.
toXml
(
model
);
InputStream
is
=
new
ByteArrayInputStream
(
xml
.
getBytes
(
"UTF-8"
));
Model
model2
=
parser
.
createModel
(
new
ConverterParams
().
inputStream
(
is
));
model
.
setName
(
null
);
ModelComparator
comparator
=
new
ModelComparator
();
assertEquals
(
0
,
comparator
.
compare
(
model
,
model2
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
}
}
converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParserTest.java
View file @
60984743
...
...
@@ -151,12 +151,12 @@ public class GeneXmlParserTest extends CellDesignerTestFunctions {
@Test
public
void
testModificationResidueToXml
()
throws
Exception
{
try
{
Protein
protein
=
new
Gene
ricProtein
(
"id"
);
Gene
protein
=
new
Gene
(
"id"
);
protein
.
setX
(
10
);
protein
.
setY
(
10
);
protein
.
setWidth
(
10
);
protein
.
setHeight
(
10
);
Residue
mr
=
new
Residu
e
();
ModificationSite
mr
=
new
ModificationSit
e
();
mr
.
setIdModificationResidue
(
"i"
);
mr
.
setName
(
"a"
);
mr
.
setPosition
(
new
Point2D
.
Double
(
3.0
,
2.0
));
...
...
converter-CellDesigner/testFiles/gene_with_regulatory_region.xml
0 → 100644
View file @
60984743
<?xml version="1.0" encoding="UTF-8"?>
<sbml
xmlns=
"http://www.sbml.org/sbml/level2/version4"
xmlns:celldesigner=
"http://www.sbml.org/2001/ns/celldesigner"
level=
"2"
version=
"4"
>
<model
metaid=
"untitled"
id=
"untitled"
>
<annotation>
<celldesigner:extension>
<celldesigner:modelVersion>
4.0
</celldesigner:modelVersion>
<celldesigner:modelDisplay
sizeX=
"600"
sizeY=
"400"
/>
<celldesigner:listOfCompartmentAliases/>
<celldesigner:listOfComplexSpeciesAliases/>
<celldesigner:listOfSpeciesAliases>
<celldesigner:speciesAlias
id=
"sa1"
species=
"s1"
>
<celldesigner:activity>
inactive
</celldesigner:activity>
<celldesigner:bounds
x=
"224.0"
y=
"259.5"
w=
"70.0"
h=
"25.0"
/>
<celldesigner:font
size=
"12"
/>
<celldesigner:view
state=
"usual"
/>
<celldesigner:usualView>
<celldesigner:innerPosition
x=
"0.0"
y=
"0.0"
/>
<celldesigner:boxSize
width=
"70.0"
height=
"25.0"
/>
<celldesigner:singleLine
width=
"1.0"
/>
<celldesigner:paint
color=
"ffffff66"
scheme=
"Color"
/>
</celldesigner:usualView>
<celldesigner:briefView>
<celldesigner:innerPosition
x=
"0.0"
y=
"0.0"
/>
<celldesigner:boxSize
width=
"80.0"
height=
"60.0"
/>
<celldesigner:singleLine
width=
"0.0"
/>
<celldesigner:paint
color=
"3fff0000"
scheme=
"Color"
/>
</celldesigner:briefView>
<celldesigner:info
state=
"empty"
angle=
"-1.5707963267948966"
/>
</celldesigner:speciesAlias>
</celldesigner:listOfSpeciesAliases>
<celldesigner:listOfGroups/>
<celldesigner:listOfProteins/>
<celldesigner:listOfGenes>
<celldesigner:gene
id=
"gn1"
name=
"s1"
type=
"GENE"
>
<celldesigner:listOfRegions>
<celldesigner:region
id=
"tr1"
name=
"xx"
size=
"0.78"
pos=
"0.0"
type=
"RegulatoryRegion"
active=
"false"
/>
</celldesigner:listOfRegions>
</celldesigner:gene>
</celldesigner:listOfGenes>
<celldesigner:listOfRNAs/>
<celldesigner:listOfAntisenseRNAs/>
<celldesigner:listOfLayers/>
<celldesigner:listOfBlockDiagrams/>
</celldesigner:extension>
</annotation>
<listOfUnitDefinitions>
<unitDefinition
metaid=
"substance"
id=
"substance"
name=
"substance"
>
<listOfUnits>
<unit
metaid=
"CDMT00001"
kind=
"mole"
/>
</listOfUnits>
</unitDefinition>
<unitDefinition
metaid=
"volume"
id=
"volume"
name=
"volume"
>
<listOfUnits>
<unit
metaid=
"CDMT00002"
kind=
"litre"
/>
</listOfUnits>
</unitDefinition>
<unitDefinition
metaid=
"area"
id=
"area"
name=
"area"
>
<listOfUnits>
<unit
metaid=
"CDMT00003"
kind=
"metre"
exponent=
"2"
/>
</listOfUnits>
</unitDefinition>
<unitDefinition
metaid=
"length"
id=
"length"
name=
"length"
>
<listOfUnits>
<unit
metaid=
"CDMT00004"
kind=
"metre"
/>
</listOfUnits>
</unitDefinition>
<unitDefinition
metaid=
"time"
id=
"time"
name=
"time"
>
<listOfUnits>
<unit
metaid=
"CDMT00005"
kind=
"second"
/>
</listOfUnits>
</unitDefinition>
</listOfUnitDefinitions>
<listOfCompartments>
<compartment
metaid=
"default"
id=
"default"
size=
"1"
units=
"volume"
/>
</listOfCompartments>
<listOfSpecies>
<species
metaid=
"s1"
id=
"s1"
name=
"s1"
compartment=
"default"
initialAmount=
"0"
>
<annotation>
<celldesigner:extension>
<celldesigner:positionToCompartment>
inside
</celldesigner:positionToCompartment>
<celldesigner:speciesIdentity>
<celldesigner:class>
GENE
</celldesigner:class>
<celldesigner:geneReference>
gn1
</celldesigner:geneReference>
</celldesigner:speciesIdentity>
</celldesigner:extension>
</annotation>
</species>
</listOfSpecies>
</model>
</sbml>
model/src/main/java/lcsb/mapviewer/model/map/species/field/BindingRegion.java
View file @
60984743
...
...
@@ -8,18 +8,14 @@ import javax.persistence.Entity;
import
org.apache.log4j.Logger
;
import
lcsb.mapviewer.common.exception.NotImplementedException
;
import
lcsb.mapviewer.model.map.species.AntisenseRna
;
import
lcsb.mapviewer.model.map.species.Gene
;
import
lcsb.mapviewer.model.map.species.Rna
;
import
lcsb.mapviewer.model.map.species.Protein
;
import
lcsb.mapviewer.model.map.species.Species
;
/**
* This structure contains information about
Co
ding Region for one of the
* This structure contains information about
Bin
ding Region for one of the
* following {@link Species}:
* <ul>
* <li>{@link Rna}</li>
* <li>{@link AntisenseRna}</li>
* <li>{@link Gene}</li>
* <li>{@link Protein}</li>
* </ul>
*
* @author Piotr Gawron
...
...
model/src/main/java/lcsb/mapviewer/model/map/species/field/RegulatoryRegion.java
0 → 100644
View file @
60984743
package
lcsb.mapviewer.model.map.species.field
;
import
java.io.Serializable
;
import
javax.persistence.DiscriminatorValue
;
import
javax.persistence.Entity
;
import
org.apache.log4j.Logger
;
import
lcsb.mapviewer.common.exception.NotImplementedException
;
import
lcsb.mapviewer.model.map.species.Gene
;
import
lcsb.mapviewer.model.map.species.Species
;
/**
* This structure contains information about Regulatory Region for one of the
* following {@link Species}:
* <ul>
* <li>{@link Gene}</li>
* </ul>
*
* @author Piotr Gawron
*
*/
@Entity
@DiscriminatorValue
(
"MODIFICATION_SITE"
)
public
class
RegulatoryRegion
extends
AbstractRegionModification
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
/**
* Default class logger.
*/
@SuppressWarnings
(
"unused"
)
private
static
Logger
logger
=
Logger
.
getLogger
(
RegulatoryRegion
.
class
);
/**
* Default constructor.
*/
public
RegulatoryRegion
()
{
}
/**
* Constructor that initialize object with the data from the parameter.
*
* @param original
* object from which we initialize data
*/
public
RegulatoryRegion
(
RegulatoryRegion
original
)
{
super
(
original
);
}
/**
* Creates a copy of current object.
*
* @return copy of the object
*/
public
RegulatoryRegion
copy
()
{
if
(
this
.
getClass
()
==
RegulatoryRegion
.
class
)
{
return
new
RegulatoryRegion
(
this
);
}
else
{
throw
new
NotImplementedException
(
"Method copy() should be overriden in class "
+
this
.
getClass
());
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment