Class Karyotype
The class Karyotype describes a single (monoclonal) Karyotype. It provides methods for accessing the constituents of the karyotye and calculates meta-information like structural aberrations, break points and gains and losses of chromosomal material.This class is meant to be the main class of the ISCNAnalyser dll. Other classes were designed for use by this class mainly.
Overview
Karyotype |
New() |
New(ISCNFormula: String) |
getAberrationCount(Optional IgnoreConstitutionalAberrations: Boolean = False): Integer |
getAberrations(Optional IgnoreConstitutive: Boolean = False): Aberrations |
getAberrationString(Index: Integer): String |
getChromosomeCount: ChromosomeCount |
getChromosomeCountField: String |
getCKAS: CKAS |
getCloneSize: Integer |
isCompositeKaryotype: Boolean |
hasDMin() As Boolean |
getDoubleMinutes: DoubleMinute |
getErrorDescription: String |
hasExpandError() As Boolean |
isIncompleteKaryotype: Boolean |
hasMarker() As Boolean |
getMarkers: Markers |
getPloidyLevel: Integer |
hasRing() As Boolean |
getRings: Rings |
getSexChromosomes: SexChromosomes |
getSexChromosomesField: String |
isValidKaryotype: Boolean |
isValidKaryotypeForComposing: Boolean |
clone(): Object {Implements ICloneable.Clone} |
combine(SecondKaryotype: Karyotype) |
getAlteredChromosomes(Optional IgnoreMultiplicator: Boolean = False): Chromosomes |
getBreakPoints(): Bands |
getFusions(): Fusions |
getGainsLossesStructs(Resolution: ChromosomeData.eResolutionLevel): GainsLossesStructs |
getQualitativeAberrations(): QualitativeAberrations |
getQualitativeAberrationsExpandedToResolution(Resolution: eResolutionLevel, Optional IgnoreUncertainties: Boolean = True): QualitativeAberrations |
getQuantitativeAberrations(): QuantitativeAberrations |
getQuantitativeAberrationsExpandedToResolution(Resolution: eResolutionLevel, Optional IgnoreUncertainties: Boolean = True): QuantitativeAberrations |
getUnexpandedAberration(): Aberration |
setKaryotype(ISCNFormula: String) |
toString(): String |
toString(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 Karyotype object.Remarks
- This empty constructor is made available for use with old-style VBA programming (e.g. with MS Access) where no parameters can be passed to a constructor. Here, the call of the constructor is to be followed by a call to setKaryotype.
- Whenever possible, the use of this constructor is strongly discouraged.
Examples
- When initialising a Karyotype object with VBA (e.g. MS Access), use:
Dim myKaryotype As New Karyotype
myKaryotype.setKaryotype ("47,XY,t(9;22)(q34;q11),+der(22)t(9;22)")
Public Sub New(ByRef ISCNFormula As String)
Initialises a new Karyotype object.Parameters
- ISCNFormula: a textual description of the karyotype following the ISCN 1995 specification.
Exceptions
- ArgumentNullException: The ISCNFormula must not be a null reference or an empty string.
Remarks
- This constructor is intended as the "normal" constructor for the Karyotype class.
- The ISCNFomula is (almost) not case-sensitive (exception: when break points have to be completed from other aberrations / clones, the mulitplicator must be lower case, and X chromosome must be upper case).
Examples
- To initialise a Karyotype object with a karyotype containing the Philadelphia translocation and an additional aberrant chromosome 22, do:
Dim myKaryotype As Karyotype
myKaryotype = New Karyotype("47,XY,t(9;22)(q34;q11),+der(22)t(9;22)")
Interfaces
ICloneable
is implemented with the clone function.Enumerations
The class does not provide enumerations.Properties
Since all properties are read-only, they were actually implemented as functions:Properties of a non-Boolean type are accessed with their respective getPropertyName functions, Boolean properties with their respective isPropertyName or hasPropertyName functions.
getAberrationCount(Optional ByVal IgnoreConstitutionalAberrations As Boolean = False) As Integer
Gets the number of Aberration elements in the karyotype.Property Value
- the number of Aberration elements in the karyotype.
Parameters
- IgnoreConstitutionalAberrations: indicates if constitutional alterations are to be ignored (by default false).
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- Only defined gains, losses and structural aberrations are treated as Aberration elements, markers, double minutes and undefined ring chromosomes are dealt with separately.
Examples
- To get the number of aberrations in a karyotype, do:
Dim myKaryotype as Karyotype = New Karyotyope("46,XY,t(9;22)(q34;q11)")
myKaryotype.getAberrationCount returns "1".
getAberrations(Optional ByVal IgnoreConstitutive As Boolean = False) As Aberrations
Gets the collection of Aberration elements in the karyotype.Property Value
- the collelction of Aberration elements in the karyotype.
Parameters
- IgnoreConstitutionalAberrations: indicates if constitutional alterations are to be ignored (by default false).
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- Only defined gains, losses and structural aberrations are treated as Aberration elements, markers, double minutes and undefined ring chromosomes are dealt with separately.
getAberrationString(ByRef Index As Integer) As String
Returns a description of the aberration element at the specified index. This description contains the aberration, its gains and losses, structural aberrations, break points, fusions and, if it is of "der" type, the detailed notation of the derivative chromosome.Property Value
- a description of the aberration element at the specified index.
Parameters
- Index: The zero-based index of the element to get.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
- ArgumentOutOfRangeException: index is less than zero or index is equal to or greater than AberrationCount.
Remarks
- This property is for debugging purposes.
getChromosomeCountField() As String
Gets the item of the Karyotype formula with the chromosome count.Property Value
- the item of the Karyotype formula with the chromosome count.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- The first field of karyotype is reserved for the chromosome count.
- This function does not return the original value, but a textual expression strictly fitting the ISCN specification calculated from the ChromosomeCount class (ChromosomeCount.toString()).
Examples
- To get the chromosome count field of a karyotype, do:
Dim myKaryotype as Karyotype = New Karyotyope("46~47,XY,t(9;22)(q34;q11),der(22)t(9;22)[cp]")
myKaryotype.getChromosomeCountField returns "46~47<2n>".
getChromosomeCount() As ChromosomeCount
Gets the chromosome count of a karyotype as a specialised object.Property Value
- the chromosome count of a karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- A special class "ChromosomeCount" was established for dealing with the chromosome count. The minimum and maximum number of chromosomes and ploidy level can be queried therefrom.
getCKAS() As CKAS
Gets an object of CKAS type describing the complex karyotype aberration score.Property Value
- an object of CKAS type describing the complex karyotype aberration score.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- For more information on the "complex karyotype aberration score", see the description of the CKAS class.
Examples
- To get the overall aberration score of a karyotype, do:
Dim myKaryotype as Karyotype = New Karyotyope("47,XY,t(9;22)(q34;q11),+der(22)t(9;22)")
myKaryotype.getCKAS.getOverallCKAS returns "2".
getCloneSize() As Integer
Returns the number of metaphases which contributed to this karyotype.Property Value
- the number of metaphases which contributed to this karyotype.
- 0, if no such information was given in the karyotype description.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- The clone size is an optional value in the karyotype description.
isCompositeKaryotype() As Boolean
Indicates whether the karyotype is marked composite.Property Value
- true, if the karyotype is marked composite ("[cp]").
- false, otherwise.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- When a composite karyotype was calculated from single karyotypes with the combine function, it is automatically marked composite.
- Often, composite karyotypes are not marked as such.
hasDMin() As Boolean
Indicates if double minutes were found.Property Value
- true, if a "dmin" section was found in the ISCN formula.
- false, otherwise.
Remarks
- To get all the double minutes instead information on their presence only, use the DoubleMinutes property.
getDoubleMinutes() As DoubleMinute
Returns a DoubleMinute object describing the double minutes of this karyotype.Property Value
- a DoubleMinute object describing the double minutes of this karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- For more information on "double minutes", see the description of the DoubleMinute class.
getErrorDescription() As String
Gets the description of an error encountered while analysing the karyotype.Property Value
- the description of an error encountered while analysing the karyotype.
- an empty string, if no error happened.
Remarks
- Before raising an error, its description is placed in this property.
hasExpandError() As Boolean
Indicates if an aberration without breakpoints or a derivative chromosome without aberration descriptions was encountered.Property Value
- true, if an aberration without breakpoints or a derivative chromosome without aberration descriptions was encountered.
- false, otherwise.
Remarks
- To get the full error description, use the ErrorDescription property.
isIncompleteKaryotype() As Boolean
Indicates whether the karyotype is marked incomplete.Property Value
- true, if the karyotype is marked incomplete ("inc").
- false, otherwise.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- Often, incomplete karyotypes are not marked as such.
hasMarker() As Boolean
Indicates if marker chromosomes were encountered.Property Value
- true, if marker chromosomes were encountered.
- false, otherwise.
Remarks
- To get all marker chromosomes instead of an indication of their presence only, use the Markers property.
getMarkers() As Markers
Returns a Markers object describing the marker chromosomes of the karyotype.Property Value
- a Markers object describing the marker chromosomes of the karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- For more information on dealing with marker chromosomes, see the description of the Marker and Markers classes.
getPloidyLevel() As Integer
Gets the ploidy level of the karyotype.Property Value
- the ploidy level of the karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- If the ploidy level is not given explicitly in the karyotype formula, it is calculated by dividing the arithmetic medium value of chromosome count by the number of chromosomes per haploid set (23 for humans) and rounding to the nearest full number.
- Actually passes through to ChromosomeCount.Ploidy().
Examples
- To get the ploidy level of a karyotype, do:
Dim myKaryotype as Karyotype = New Karyotyope("44~52,XY,t(9;22)(q34;q11),+der(22)t(9;22),inc[cp]")
myKaryotype.getPloidyLevel returns "2".
hasRing() As Boolean
Indicates if ring chromosomes were encountered.Property Value
- true, if ring chromosomes were encountered.
- false, otherwise.
Remarks
- Not only ring shaped marker chromosomes ("+r"), but also well defined ring chromosomes ("r(7)(p22q36)") are accepted.
- To get all ring shaped marker chromosomes, use the Rings property.
getRings() As Rings
Returns a Rings object describing the unidentified ring chromosomes of the karyotype.Property Value
- a Rings object describing the unidentified ring chromosomes of the karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- For more information on dealing with less well characterized ring chromosomes, see the description of the Ring and Rings classes.
- Well defined ring chromosomes are dealt with as normal aberrations, not as ring shaped marker chromsomes.
getSexChromosomes() As SexChromosomes
Returns a SexChromosomes object representing the sex chromosomes field of the ISCN formula.Property Value
- a SexChromosomes object representing the sex chromosomes field of the ISCN formula.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- The sex chromosome field is not mandatory. Also, sex chromosomes may have been consumed by aberrations. In such cases, the return value is an "empty" object.
getSexChromosomesField() As String
Returns the sex chromosomes field of the ISCN formula.Property Value
- the sex chromosomes field of the ISCN formula.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- The sex chromosome field is not mandatory. Also, sex chromosomes may have been consumed by aberrations. In such cases, the return value is an empty string.
- Actually passes through to SexChromosomes.toString().
Examples
- To get the sex chromosomes of a karyotype, do:
Dim myKaryotype as Karyotype = New Karyotyope("47,XYXc,t(9;22)(q34;q11)")
myKaryotype.getSexChromosomes returns "XXYc".
isValidKaryotype() As Boolean
Indicates whether the karyotype is valid.Property Value
- true, if the karyotype is valid.
- false, otherwise.
Remarks
- The karyotype gets analysed. If errors are encountered during this analysis, the ErrorDescription property is set, but no error is raised.
isValidKaryotypeForComposing() As Boolean
Indicates whether the karyotype is valid for combining with another karyotype to a composite karyotype.Property Value
- true, if the karyotype is valid.
- false, otherwise.
Remarks
- The karyotype gets analysed. If errors are encountered during this analysis, the ErrorDescription property is set, but no error is raised.
- The Validity check for combining is less strict than for normal analysis. E.g. aberrations whose break points cannot be found within this karyotype are acceptable, since their break points may be found in the composite karyotype.
Methods
Public Function clone() As Object Implements ICloneable.Clone
Creates a deep copy of the Karyotype object.Return Value
- A deep copy of the Karyotype object.
Implements
Remarks
- The clone contains clones of the constituent objects.
Public Sub combine(ByRef SecondKaryotype As Karyotype)
Creates a composite karyotype of this one and SecondKaryotype. During the operation, this karyotype gets changed into the composite karyotype.Parameters
- SecondKaryotype: The karyotype to be integrated into this karyotype.
Exceptions
- ArgumentNullException: SecondKaryotype must not be a null reference.
- InvalidOperationException: Both karyotypes must be valid for combining.
Remarks
- This karyotype object gets changed into the composite karyotype.
- The Validity check for combining is less strict than for normal analysis. E.g. aberrations whose break points cannot be found within this karyotype are acceptable, since their break points may be found in the composite karyotype.
- Markers and unidentified ring chromosomes loose their individuality, only the sums of their count are present in the composite karyotype.
Examples
- To combine the karyotypes "46,XY,t(9;22)(q34;q11)" and "47,XY,t(9;22)(q34;q11),+der(22)t(9;22)", do:
Dim myFirstKaryotype as Karyotype = New Karyotyope("46,XY,t(9;22)(q34;q11)")
Dim mySecondKaryotype as Karyotype = New Karyotyope("47,XY,t(9;22)(q34;q11),+der(22)t(9;22)")
myFirstKaryotype.combine(mySecondKaryotype)
myFirstKaryotype.toString results then in "46~47,XY,t(9;22)(q34;q11),+der(22)t(9;22)[cp]".
Public Function getAlteredChromosomes() As Chromosomes
Calculates all (derivative or additional / lost) chromosomes derived from this karyotype and returns them as a Chromosomes object.Return Value
- A Chromosomes object containing all chromosomes derived from this karyotype.
Parameters
- None.
Remarks
- Markers and ring chromosomes are represented by chromosomes of unknown centromeric origin.
Known Problems
- There are a few problems due to bugs of the ISCN. See the "known problems" section for Aberration.getAlteredChromosomes.
Internal processing
- For each aberration of the karyotype, Aberration.getAlteredChromosomes is called.
- Chromosomes of unknown centromeric origin are added according to the sum of marker and ring chromosomes.
Public Function getBreakPoints() As Bands
Returns a Bands object describing all the break points inferred by this karyotype.Return Value
- a Bands object describing all the break points inferred by this karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- The object may be emtpy if there are no break points (e.g. gain / loss of non-aberrant chromosomes only).
Examples
- To get the break points inferred by a karyotype, do:
Dim myKaryotype as Karyotype = New Karyotyope("47,XX,t(9;22)(q34;q11),+der(22)t(9;22)")
myKaryotype.getBreakPoints.toString returns "9q34,22q11".
Public Function getFusions() As Fusions
Returns a Fusions object describing the sites in this karyotype where chromosomal regions were brought into contact with each other.Return Value
- a Fusions object describing the fusions / junctions of this karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- "Fusions" are also called "junctions".
- For more information on "fusions", see the description of the Fusion and Fusions classes.
Public Function getGainsLossesStructs(ByVal Resolution As ChromosomeData.eResolutionLevel) As GainsLossesStructs
Returns a GainsLossesStructs object describing the alterations per chromosomal band in this karyotype.Return Value
- a GainsLossesStructs object describing the alterations per chromosomal band in this karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- GainsLossesStructs are calculated only once for a given resolution, later the value is retrieved from the stored result of a previous calculation.
- For more information on "GainsLossesStructs", see the description of the GainLossStruct and GainsLossesStructs classes.
Public Function getQualitativeAberrations() As QualitativeAberrations
Returns a QualitativeAberrations object describing the qualitative (structural) aberrations of this karyotype.Return Value
- a QualitativeAberrations object describing the qualitative aberrations of this karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- For more information on qualitative aberrations, see the description of the QualitativeAberration and QualitativeAberrations classes.
Examples
- To get the qualitative aberrations of a karyotype in SCCN, do:
Dim myKaryotype as Karyotype = New Karyotyope("47,XX,t(9;22)(q34;q11)+der(22)t(9;22)")
myKaryotype.getQualitativeAberrations.toString returns "t(9)(q34),t(22)(q11)".
Public Function getQualitativeAberrationsExpandedToResolution(ByVal Resolution As Band.eResolutionLevel, Optional ByVal IgnoreUncertainties As Boolean = True) As QualitativeAberrations
Returns a QualitativeAberrations object describing the qualitative (structural) aberrations of this karyotype at the specified resolution with the specified treatment of uncertainties.Return Value
- a QualitativeAberrations object describing the qualitative aberrations of this karyotype at the specified resolution with the specified treatment of uncertainties.
Parameters
- Resolution: the banding resolution to be met by the aberrations.
- IgnoreUncertainties: If set to true, all aberrations containing uncertainties will be ignored (default), otherwise the information about the uncertainty will be lost.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- This function is a short cut to Karyotype.getQualitativeAberrations.expandToResolution.
- QualitativeAberrations are calculated only once for a given resolution, later the value is retrieved from the stored result of a previous calculation.
- For more information on qualitative aberrations, see the description of the QualitativeAberration and QualitativeAberrations classes.
Examples
- To get the qualitative aberrations of a karyotype at 400 bands per haploid set in SCCN, do:
Dim myKaryotype as Karyotype = New Karyotyope("47,XX,t(9;22)(q34;q11)+der(22)t(9;22)")
myKaryotype.getQualitativeAberrationsExpandedToResolution(Resolution400Bands).toString returns "t(9)(q34),t(22)(q111q112)".
Public Function getQuantitativeAberrations() As QuantitativeAberrations
Returns a QuantitativeAberrations object describing the quantitative aberrations (gains and losses of chromosomal material) of this karyotype.Return Value
- a QuantitativeAberrations object describing the quanitative aberrations of this karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- For more information on quantitative aberrations, see the description of the QuantitativeAberration and QuantitativeAberrations classes.
Examples
- To get the quantitative aberrations of a karyotype in SCCN, do:
Dim myKaryotype as Karyotype = New Karyotyope("47,XX,t(9;22)(q34;q11),+der(22)t(9;22)")
myKaryotype.getQuantitativeAberrations.toString returns "+(9)(q34qter),+(22)(pterq11)".
Public Function getQuantitativeAberrationsExpandedToResolution(ByRef Resolution As Band.eResolutionLevel, Optional ByRef IgnoreUncertainties As Boolean = True) As QuantitativeAberrations
Returns a QuantitativeAberrations object describing the quantitative aberrations (gains and losses of chromosomal material) of this karyotype at the specified resolution with the specified treatment of uncertainties.Return Value
- a QuantitativeAberrations object describing the quantitative aberrations of this karyotype at the specified resolution with the specified treatment of uncertainties.
Parameters
- Resolution: the banding resolution to be met by the aberrations.
- IgnoreUncertainties: If set to true, all aberrations containing uncertainties will be ignored (default), otherwise the information about the uncertainty will be lost.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- This function is a short cut to Karyotype.getQuantitativeAberrations.expandToResolution.
- QuantitativeAberrations are calculated only once for a given resolution, later the value is retrieved from the stored result of a previous calculation.
- For more information on quantitative aberrations, see the description of the QuantitativeAberration and QuantitativeAberrations classes.
Examples
- To get the quantitative aberrations of a karyotype at 400 bands per haploid set in SCCN, do:
Dim myKaryotype as Karyotype = New Karyotyope("47,XX,t(9;22)(q34;q11)+der(22)t(9;22)")
myKaryotype.getQuantitativeAberrationsExpandedToResolution(Resolution400Bands).toString returns "+(9)(q34q34),+(22)(p13q112)".
Public Function getUnexpandedAberration() As Aberration
Returns the first aberration in the karyotype whose breakpoints (or in case of derivative chromosomes: whose aberration descriptions) are missing.Return Value
- the first unexpanded aberration in the karyotype.
Exceptions
- InvalidOperationException: The object must have been initialised with a valid karyotype description.
Remarks
- In some cases, break points can be added to descriptions of rearrangements; also, sometimes missing aberrations can be found for derivative chromosomes.
- If more than one aberration is not expanded, only the first one can be retrieved.
Public Sub setKaryotype(ByRef ISCNFormula As String)
If no karyotype description was passed to the constructor of Karyotype, its description can be passed here once.Parameters
- ISCNFormula: a textual description of the karyotype following the ISCN 1995 specification.
Exceptions
- InvalidOperationException: the object has already received a karyotype description, no karyotype description can be passed to it.
Remarks
- This function is used only in combination with the empty constructor. Whenever possible, the constructor with a parameter should be used instead.
Examples
- When initialising a Karyotype object with VBA (e.g. MS Access), use:
Dim myKaryotype As New Karyotype
myKaryotype.setKaryotype ("47,XY,t(9;22)(q34;q11),+der(22)t(9;22)")
Public Shadows Function toString() As String
Returns a textual description of the karyotype using the ISCN 1995.Return Value
- a textual description of the karyotype.
Parameters
- None.
Remarks
- The ISCN formula is recalculated if the karyotype is valid thus correcting minor errors; otherwise, the original description (including its errors) is returned.
- Internally, passes through to toString("S").
Public Shadows Function toString(ByVal format As String) As String
Returns a textual description of the karyotype using the ISCN 1995.Return Value
- a textual description of the karyotype.
Parameters
- format: an indication of the format to be used:
"S" means standard (lenient) format,
"E" exact format.
Remarks
- The ISCN formula is recalculated if the karyotype is valid thus correcting minor errors; otherwise, the original description (including its errors) is returned.