Class Aberration
The class Aberration describes an aberration. After initialisation, analysis of the aberration is started and all relevant information on it is calculated.
For a more prosaic overview on ISCN analysis, see "Analysis of ISCN" or, for single aberrations "Analysis of Aberrations".
Overview
Aberration |
New() |
New(AberrationString: String) |
Metaphases(): Integer |
causesOneDerivative(): Boolean |
clone(): Object {Implements ICloneable.Clone} |
compareTo(obj: Object): Integer {Implements IComparable.CompareTo} |
correctDerivativeAberration(): void |
getAberrationDescription(): String |
getAberrationType(): eAberrationType |
getAlteredChromosomes(Optional IgnoreMultiplicator: Boolean = False): Chromosomes |
getBand1(): Band |
getBand2(): Band |
getBand3(): Band |
getBreakPoints(): Bands |
getChromosome1(): String |
getChromosome2(): String |
getChromosome3(): String |
getDerivateChromosome(): Chromosome |
getErrorDescription(): String |
getFusions(): Fusions |
getMultiplicator(): Integer |
getMultiplicatorMax(): Integer |
getNumericChange(): QuantitativeAberrationType |
getQualitativeAberrations(): QualitativeAberrations |
getQuantitativeAberrations(): QuantitativeAberrations |
isConstitutional(): Boolean |
isExpanded(): Boolean |
isValidAberration(): Boolean |
toString(): String |
toString(ByVal format: String): String |
Programming Language
- Microsoft Visual Basic .Net.
Availability
- Copyrighted but free software under the GNU Public License.
- Binaries and source code can be obtained from the Download section.
Constructors
Public Sub New()
Instantiates a new Aberration object.Parameters
- None.
Remarks
- This constructor without parameters was made public only because of compatibility issues with COM. DO NOT USE IT.
Public Sub New(ByRef AberrationString As String)
Instantiates a new Aberration object.Parameters
- AberrationString: a textual description of the aberration.
Exceptions
- ArgumentNullException: The AberrationString must not be a null reference or an empty string.
Remarks
- An "aberration" can be described as an item of the ISCN formula which is surrounded by commata.
- If errors are encountered during analysis of the aberration, no exception is thrown; instead, the ValidAberration property is set to false and the ErrorDescription is set to a meaningful value.
Examples
- mySimpleAberration = New Aberration("t(9;22)(q34;q11)") initializes an aberration object with the description of the Philadelphia translocation.
- myComplicatedAberration = New Aberration("der(22)t(9;22)(q34;q11)") initializes an aberration object with the description of the derivative chromosome 22 caused by the Philadelphia translocation.
Interfaces
IComparable
is implemented with the compareTo function.ICloneable
is implemented with the clone function.Enumerations
The class does not provide enumerations.Properties
The object has almost no properties proper because it is actually expected not to be changed from outside after initialisation (with the exception of changes originating from other objects of the ISCNAnalyser) and thus all properties would be read-only. Instead, they can be queried with the methods described below.
Public Property Metaphases() As Integer
Gets or sets the number of metaphases / cells the aberration was found in.
Property Value
- the number of metaphases the aberration was found in.
Remarks
- The number of metaphases an abnormality was found in is an optional value according to the ISCN manual (chapter 11.1.6).
- It follows after the aberration proper in square brackets, e.g. "t(9;22)(q34;q11)[7]".
Methods
Public Function causesOneDerivative() As Boolean
Checks if the aberration alters exactly one or more chromosomes.Return Value
- true, if exactly one chromosome is altered by this aberration.
- false, otherwise.
Parameters
- None.
Remarks
- This function is useful when determining if more than one normal chromosome is to be replaced by a derivative chromosome (e.g. when calculating a karyogram or when showing ideograms of all altered chromosomes).
Internal processing
- Since almost all aberrations yield one altered chromosome only, the return value is initialised to true.
- If it the aberration is of type Fision, Interchromosomal Insertion, or any type of Translocation, it is changed to false.
Public Function clone() As Object Implements ICloneable.Clone
Creates a deep copy of the Aberration object.Return Value
- A deep copy of the Aberration object.
Implements
Remarks
- The clone contains clones of the constituent objects.
Public Function compareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo
Compares this instance to a specified Aberration object and returns an indication of their relative values. Comparison is done on the first break point of the aberration, then on the type of aberration in alphabetic order.Return Value
- <=-1: The first chromosomal break point of this aberration resides on a chromosome with lower number, or if on the same chromosome, is closer to the p-terminus, or if they share the chromosomal break point, this one has a type of lower value.
- 0: The Aberrations share the first chromosomal break point and the type of aberration.
- >=1: The first chromosomal break point of this aberration resides on a chromosome with higher number, or if on the same chromosome, is closer to the q-terminus, or if they share the chromosomal break point, this one has a type of higher value.
Parameters
- obj: the Aberration to be compared with this Aberration.
Exceptions
- ArgumentException: is thrown when obj cannot be cast into Aberration type.
Implements
Remarks
- Aberrations are ordered according to the place of their occurence on the chromosome. If there is more than one chromosome envolved, the first one is used. Hence, comparison is in the first step delegated to the band class. If two different aberrations took place at the same position, they are ordered according to the eAberrationType enumeration (i.e. alphabetically).
Public Sub correctDerivativeAberration()
If a derivative chromosome has been affected by many rearangements, some of those rearrangements may no more contribute to the present band composition of the derivative chromosome. Such rearrangements are removed from the description.Return Value
- None.
Parameters
- None.
Remarks
- If the aberration is not a derivation or isoderivation ("der..." or "ider..."), the function does not do anything.
- If a break point of an aberration can still be found, that aberration is supposed to still contribute to the chromosome, even when that aberration can no more contribute to the band composition; e.g. when in the der(5) of t(5;7)(q21;q22) an addition is intoduced at 5q21, the aberration is written as "der(5)t(5;7)(q21;q22)add(5)(q21)" instead of "add(5)(q21)". Hence, an additional manual correction could be useful in such cases where previous break points are afflicted again.
Examples
- The derivative chromosome "der(5)add(5)(q23)t(5;7)(q21;q22)" is corrected to "der(5)t(5;7)(q21;q22)" because the break point for the addition "add(5)(q23)" is no more present.
- The derivative chromosome "der(5)add(5)(q23)add(5)(q21)" is corrected to "add(5)(q21)".
Internal processing
- The function checks for every aberration denoted in the (iso-)derivative chromosome if at least one of the break points of that aberration is present in the chromosome. If no such break point was found, the aberration can no more contribute to the derivative chromosome and is removed from the internal collection of sub-aberrations mcAberrations.
- Finally, if at least one aberration was removed, or if no more than exactly one aberration is present, the derivative chromosome is re-written and the aberration is re-initialised with the new textual description (including a call to the init function).
Public Function getAberrationDescription As String
Gets a description of the aberration proper, without multiplicators, gain/loss indication or question marks referring to the aberration proper.Property Value
- a textual description of the aberration proper.
Examples
- With aberration "+8", AberrationDescription is "8".
- With aberration "?t(9;22)", AberrationDescription is "t(9;22)".
- With aberration "+der(9)t(9;22)x2", AberrationDescription is "der(9)t(9;22)".
Public Function getAberrationType As QualitativeAberration.eAberrationType
Gets a value describing the type of the (structural) aberration.Property Value
- a value describing the type of the aberration.
Remarks
- The values are defined in the enumeration QualitativeAberration.eAberrationType.
- The detailed description of aberration types is used. I.e.this function differentiates between terminal and non-terminal deletions, translocations involving two or three chromosomes etc.
Public Function getAlteredChromosomes(Optional ByVal IgnoreMultiplicator As Boolean = False) As Chromosomes
Calculates all (derivative or additional / lost) chromosomes derived from this aberrations and returns them as a Chromosomes object.Return Value
- A Chromosomes object containing all chromosomes derived from this aberration.
Parameters
- IgnoreMultiplicator: Indicates if chromosomes are to be added one time only independent from the multiplicator of the aberration (true) or as often as also influenced by the multiplicator (false; default behavior).
Remarks
- The Chromosome objects get linked to this aberration by setting the "CausingAberration" property of the Chromosome.
- The Replaces property of the chromosome is set depending on the NumericChange property of the aberration.
Examples
- The aberration "+3" yields a "normal" chromosome 3 with the Replaces property set to "Adds".
- The aberration "-7" yields a "normal" chromosome 7 with the Replaces property set to "Removes".
- The aberration "add(5)(q21)" yields the derivative chromosome "der(5)add(5)(q21)" with the Replaces property set to "Replaces".
- The aberration "t(5;7)(q21;q22)" yields the derivative chromosomes "der(5)t(5;7)(q21;q22)" and "der(7)t(5;7)(q21;q22)" with the Replaces property set to "Replaces".
Known Problems
-
The ISCN has a bug regarding the replacement of normal chromosomes by derivative
chromosomes (see also the page
on problems of the ISCN). Some of the problems arising from the bug
could be circumvented with some extra code (e.g. for idic and whole arm
translocations). But other aberrations involving a centromeric region mean
to much effort to be circumvented, e.g. duplication of a centromere "dup(10)(p13q21.3)
= der(10;10)(10pter->10q21.3::10p13->10qter)" where the latter band
composition could also arise from a "dic(10;10)(p13;q21.3)", but
the dup has to replace one chromosome only while the dic
must replace two chromosomes.
Whole arm translocations of three or more way translocations would need extreme effort to be dealt with; since they are extremely rare, that effort was not taken: Such whole arm translocations are not calculated correctly.
Further more, underlining is not an appropriate style to distinguish between sister chromosomes.
These are bugs of the ISCN, not of the ISCNAnalyser.
Internal processing
-
For the calculation of the chromosomes, many different cases and sub-cases
depending on the AberrationType must be differentiated.
Derivative chromosomes are "erected" with the Chromosome.erect function.
If the mulitplicator of the aberration is greater than 1 and has to be considered, clones of the chromosomes are added to the collection again as often as requested. Note that clones must be used in order to set the ExternalID property of the chromosomes later. - If it is a derivation or isoderivation, we can take the chromosome already calculated during analysis.
- For whole chromosome changes, a "normal" chromosome is set up and its Replaces property adjusted.
- If the aberration gievs raise to one derivative chromsome only (see also causesOneDerivative function), a derivative chromosome for that aberration is set up.
- Since an isochromosome has two centromeres of the same number, two normal chromosomes would be replaced (see known problems). Here, the isochromosome must be added, and the respective normal chromosome lost once ("idic(5)(q15)" = "der(5;5)(5pter->5q15::5q15->5pter", hence the returned chromosomes are "+der(5;5)idic(5)(q15)" and "-5". This is not necessary for a "+idic...".
- A translocation between two chromosomes must be differentiated for whole arm translocation or normal translocation (for three or more way translocations, whole arm translocations are extremely rare and no effort is taken for dealing with them correctly).
- For whole arm translocations, two chromsomes of the style "der(A,B)([pq]10;[pq]10)" are created as additional chromosomes, and the respective "normal" chromosomes are lost. E.g. "t(2;3)(p10;q10)" adds "der(2;3)(p10;q10),der(2;3)(q10;p10)" and looses "-2,-3"
- For other aberrations, simply both derivatives are calculated. Since a translocation cannot be gained or lost, no such further differentiation is necessary. E.g. "t(9;22)(q34.12;q11.23)" yields "der(9)t(9;22)(q34.12;q11.23)" and "der(22)t(22;9)(q34.12;q11.23)". Note that chromosomes and bands are changed for the second chromosome in order to deal with translocations between sister chromosomes correctly.
- With interchromsomal insertions, the acceptor chromosome is set up as the "der()ins()", while the donor chromosome is set up as a "del" (from the point of view of the donor chromosome, it is a deletion, as can be seen when the acceptor chromosome gets lost). E.g. "ins(3;2)(p21;q22q31)" yields "der(3)ins(3;2)(p21;q22q31), del(2)(q22q31)".
- Translocations between three or more chromosomes are translated into translations of two chromosomes for each of the derivative chromosomes derived from them. E.g. "t(9;22;11)(q34.1;q11.2; q13.3)" yields "der(9)t(9;11)(q34.1;q13.3),der(11)t(11;22)(q13.3;q11.2),der(22;9)(q11.2;q34.1)".
Public Function getBand1() as Band
Returns the first band speicfied in the aberration description.Return Value
- a band object representing the first band of the aberration description.
Remarks
- it is the first band named in the textual description of the aberration without regard to the proper order of bands in an aberration.
Examples
- With the Philadelphia translocation "t(9;22)(q34;q11)", getBand1 returns "9q34".
- If the Philadelphia description was written the other way round "t(22;9)(q11;q34)", getBand1 returns "22q11".
Public Function getBand2() as Band
Returns the second band speicfied in the aberration description.Return Value
- a band object representing the second band of the aberration description.
- Nothing, if no second band was given.
Remarks
- it is the second band named in the textual description of the aberration without regard to the proper order of bands in an aberration.
Examples
- With the Philadelphia translocation "t(9;22)(q34;q11)", getBand2 returns "22q11".
- If the Philadelphia description was written the other way round "t(22;9)(q11;q34)", getBand2 returns "9q34".
Public Function getBand3() as Band
Returns the third band speicfied in the aberration description.Return Value
- a band object representing the third band of the aberration description.
- Nothing, if no third band was given.
Remarks
- it is the third band named in the textual description of the aberration without regard to the proper order of bands in an aberration.
Examples
- With the translocation "t(9;22;11)(q34;q11;p14)", getBand3 returns "11p14".
Public Function getBreakPoints() As Bands
Returns a Bands object containing all chromosomal break points inferred by this aberration.Return Value
- a Bands object containing all chromosomal break points inferred by this aberration.
Remarks
- The Bands object may be "empty", e.g. when the aberration describes the gain of a non-aberrant chromosome.
Examples
- The Philadelphia translocation "t(9;22)(q34;q11)" gives raise to Bands object "9q34,22q11" showing the break points of both derivative chromosomes caused by this aberration.
- Also the derivative chromosome "der(22)t(9;22)(q34;q11)" gives raise to a Bands object with Bands "9q34, 22q11", because this derivative chromosome contains both break points.
Public Function getChromosome1 as string
Returns the number of the first chromosome speicfied in the aberration description.Return Value
- the number of the first chromosome of the aberration description.
Remarks
- it is the first chromosome named in the textual description of the aberration without regard to the proper order of chromosomes in an aberration.
Examples
- With the Philadelphia translocation "t(9;22)(q34;q11)", getChromosome1 returns "9".
- If the Philadelphia description was written the other way round "t(22;9)(q11;q34)", getChromosome1 returns "22".
Public Function getChromosome2 as string
Returns the number of the second chromosome speicfied in the aberration description.Return Value
- the number of the second chromosome of the aberration description.
- an empty string, if no second chromosome was given.
Remarks
- it is the second chromosome named in the textual description of the aberration without regard to the proper order of chromosomes in an aberration.
Examples
- With the Philadelphia translocation "t(9;22)(q34;q11)", getChromosome2 returns "22".
- If the Philadelphia description was written the other way round "t(22;9)(q11;q34)", getChromosome2 returns "9".
Public Function getChromosome3 as string
Returns the number of the third chromosome specified in the aberration description.Return Value
- the number of the third chromosome of the aberration description.
- an empty string, if no second chromosome was given.
Remarks
- it is the third chromosome named in the textual description of the aberration without regard to the proper order of chromosomes in an aberration.
Examples
- With the translocation "t(9;22;11)(q34;q11;p14)", getChromosome3 returns "11".
Public Function getDerivateChromosome() As Chromosome
If the aberration describes a derivative chromosome ("der" or "ider"), this function returns the resepctive chromosome.Return Value
- A chromosome object, if the aberration describes a derivative chromosome.
- Nothing, otherwise.
Remarks
- This function can be used to calculate the "detailed form" of a derivative chromosome from its "short description".
Examples
- To calculate the detailed form of the Philadelphia chromosome "der(22)t(9;22)(q34;q11)", do:
Dim myAberration As Aberration = New Aberration("der(22)t(9;22)(q34;q11)")
Dim myChromosome As Chromosome = myAberration.getDerivateChromosome
myChromosome.toString will then return "der(22)(22pter->22q11::9q34->9qter)"
Public Function getErrorDescription As String
If an error was encountered during the analysis of the aberration, a meaningful description of the problem is written into this property.Property Value
- A textual description of a problem with the aberration, if an error was encountered during analysis.
- An empty string, otherwise.
Remarks
- There is some linkage to the "isValidAberration" property: if the later one is false, getErrorDescription returns an empty string.
Examples
- The defective description "t(9;22)q34;q11)" gives raise to the error description "Invalid aberration description t(9;22)q34;q11): there must be as many left brackets as right brackets.".
Public Function getFusions as Fusions
Returns the fusions (also known as "junctions") associated with this aberration.Property Value
- a Fusions object containing the fusions associated with this aberration.
- an empty fusions object, if no fusions are inferred.
Remarks
- Fusions are also known as "junctions".
- This functionality is still in development.
Examples
- The Philadelphia translocation "t(9;22)(q34;q11)" gives raise to the fusions "(+)(9)(9q34)::(22)(22q11)(+), (+)(22)(22q11)::(9)(9q34)(+)".
Public Function getMultiplicator As Integer
Gets the multiplicator value for the aberration. If there is a range for the multiplicator, this function returns the lower value.Property Value
- the (minimum) multiplicator value for the aberration.
Remarks
- If there is a range for the multiplicator, this function returns the lower value.
Examples
- With the aberration "+der(22)t(9;22)(q34;q11)x2~3", getMultiplicator is 2.
Public Function getMultiplicatorMax As Integer
Gets the multiplicator value for the aberration. If there is a range for the multiplicator, this function returns the greater value.Property Value
- the (maximum) multiplicator value for the aberration.
Remarks
- If there is a range for the multiplicator, this function returns the greater value.
Examples
- With the aberration "+der(22)t(9;22)(q34;q11)x2~3", getMultiplicatorMaxis 3.
Public Function getNumericChange As QuantitativeAberration.QuantitativeAberrationType
Returns a value indicating the type of numeric change of this element (gain,loss,none).Property Value
- a value indicating the type of numeric change of this element.
- The values are described in the enumeration QuantitativeAberration.QuantitativeAberrationType.
Public Function getQualitativeAberrations() As QualitativeAberrations
Returns a QualitativeAberrations object containing the qualitative (= structural) aberrations inferred by this aberration.Return Value
- a QualitativeAberrations object containing the qualitative aberrations inferred by this aberration.
Remarks
- If an aberration does not mean a qualitative change (e.g. "+8"), the object may be empty.
Examples
- To get the qualitative aberrations referring to a "t(9;22)(q34;q11)", do:
Dim myAberration As Aberration = New Aberration("t(9;22)(q34;q11)")
Dim myQualitatives As QualitativeAberrations = myAberration.getQualitativeAberrations
myQualitatives.toString will then return "t(9)(q34),t(22)(q11)".
Public Function getQuantitativeAberrations() As QuantitativeAberrations
Returns a QuantitativeAberrations object containing the quantitative (= numeric) aberrations inferred by this aberration.Return Value
- a QuantitativeAberrations object containing the quantitative aberrations inferred by this aberration.
Remarks
- If an aberration is balanced, there is no numeric change and hence the returned object may be emtpy.
Examples
- To get the qualitative aberrations referring to a "der(22)t(9;22)(q34;q11)", do:
Dim myAberration As Aberration = New Aberration("der(22)t(9;22)(q34;q11)")
Dim myQuantitatives As QuantitativeAberrations = myAberration.getQuantitativeAberrations
myQuantitatives.toString will then return "+(9)(q34qter),-(22)(q11qter)"
Public Function isConstitutional As Boolean
Gets a value indicating whether the aberration was described a constitutional one.Property Value
- true, if the aberration is constitutional.
- false, otherwise.
Remarks
- No distinction is made when handling constitutional or non-constitutional aberrations.
Examples
- With a constitutional trisomy 21, i.e. "+21c", returns true.
Public Function isExpanded As Boolean
Describes whether the break points of the aberration are available and thus the aberration description is complete.Property Value
- true, if the aberration description is complete.
- false, otherwise.
Remarks
- If break points are missing for an aberration which is dealt with in a Karyotype object, methods of this Karyotype object may try to find the break points from other aberrations of the same karyotype.
- If an aberration is not expanded, no qualitative or quantitative aberrations, break points etc, can be calculated.
Examples
- The aberration "t(9;22)" is valid, but not expanded.
Public Function isValidAberration As Boolean
Indicates if an aberration is valid.Property Value
- true, if the aberration is valid.
- false, otherwise
Remarks
- Any expanded aberration is also valid, but a valid aberration need not be expanded.
- Only when an aberration is expanded, qualitative or quantitative aberrations, break points etc, can be correctly calculated.
Examples
- The aberration "t(9;22)" is valid, but not expanded.
Public Shadows Function toString() As String
Returns a textual description of the aberration using the ISCN.Return Value
- a textual description of the aberration using the ISCN.
Remarks
- This function makes use of the original description, which is quite lenient
- The calculation is passed through to "toString("S")"
Public Shadows Function toString(format as String) As String
Returns a textual description of the aberration using the ISCN.Return Value
- a textual description of the aberration using the ISCN.
Parameter
- format: a short description of the format.
- "S": standard (lenient) description. Makes use of the original description.
- "E": exact description. All items are recalculated with strict adherence to the ISCN manual.
- "M": data mining option. A short description containing the original aberration descriptions after removal of uncertainties and an indication of gain/loss.
The following values are defined:
Remarks
- If the format is unknown, "S" formatting will be used by default.
- This function allows the removal of small errors from a formula.
Example
- The input "t(9;22?)(q.34?1;q112)" will be transformed by "toString("E")" to "t(9;?22)(q34.?1;q11.2)"
Interaction with other classes
Classes using Aberration
The Aberration class is the central class for the analysis of a karyotype, but Aberration is not a constituent of Karyotype.
An Aberrations object may contain zero, one or many Aberration objects.
Classes used by Aberration
The aberration class deals with most other classes of the CyDAS project. Bands, Chromosome, QualitativeAberrations, QuantitativeAberrations, CKAS, Fusions and sometimes even Aberrations are constituents of an Aberration object.
Transient use is common for Band, Fragment, QualitativeAberration, and QuantitativeAberration objects.