CyDAS Home funded by Sponsor: DFG
ISCNAnalyser Documentation Interface IMinable Class Karyotype Documentation Section HowTo Section Online Analysis Section Download Section Resources Section About Section

Class Karyogram

The class Karyogram extends the functionality of the class Karyotype which represents a monoclonal karyotype by providing methods for the description of all chromosomes of the karyotype and further interfacing to a graphical representation of those chromosomes. Hereby, further checks on the total number of chromosomes and the sex chromosomes were integrated.

Overview

Karyogram
New()
New(ByRef Karyotype: Karyotype)
Karyotype: Karyotype
addAberration(AberrationType: QualitativeAberration.eAberrationType, ByRef cChromosomes: Chromosomes, ByRef cBands: Bands): Void
getKaryogramAsMap(Resolution: ChromosomeData.eResolutionLevel, Scale: Single, DrawSequence: String, Colored: Boolean, ByRef BackGroundColor: System.Drawing.Color, AlteredChromosomesOnly: Boolean): ImageMapData
optimizeISCN(): Void

Programming Language

Availability

Constructors

Public Sub New()

Instantiates a new Karyogram object.

Remarks

Public Sub New(ByRef Karyotype As Karyotype)

Initialises a new Karyogram object.

Parameters

Remarks

Examples

Interfaces

No interfaces were implemented.

Enumerations

The class does not provide enumerations.

Properties

The class offers the following property:

Public Property Karyotype() As Karyotype

Gets or sets the karyotype associated with the Karyogram.

Property Value

Remarks

Methods

Public Sub addAberration(ByVal AberrationType As QualitativeAberration.eAberrationType, ByRef cChromosomes As Chromosomes, ByRef cBands As Bands)

Introduces an (additional) aberration into the karyotype of the karyogram object.

Return Value

Parameters

Remarks

Public Function getKaryogramAsMap(ByVal Resolution As ChromosomeData.eResolutionLevel, ByVal Scale As Single, ByVal DrawSequence As String, ByVal Colored As Boolean, ByRef BackGroundColor As System.Drawing.Color, ByVal AlteredChromosomesOnly As Boolean) As ImageMapData

Creates the data for an image map showing all the normal and altered chromosomes of the karyotype, linked with an external resource.

Return Value

Parameters

Remarks

Internal processing

Public Sub optimizeISCN()

Corrects the chromosome count field and the sex chromosomes field of the karyotype.

Return Value

Remarks

Internal processing

Interaction with other classes

Classes using Karyogram

The Karyogram class is a top level class in the ISCNAnalyser. It is not used by other classes.

Classes used by Karyogram

A Karyogram object constitutionally contains one Karyotype object and one Chromosomes object for all the chromosomes of that karyotype.

Temporarily, a ChromosomeCount and a SexChromosomes object are used for optimisation of the ISCN formula.

More important is the use of Chromosome objects during the insertion of additional aberrations. Here, Aberration objects are also often used.

Internal Processing

Calculation of Altered Chromosomes

The altered chromosomes only are calculated by the private function calculateAlteredChromosomes(). It queries the altered chromosomes from the karyotype (Karyotype.getAlteredChromosomes) and provides them with identifiers which are needed for drawing. The karyotype in turn retrieves the chromosomes from its aberrations (Aberration.getAlteredChromosomes).

Calculation of All Chromosomes

All chromosomes of a karyotype are calculated with the calculateChromosomes() function.

First, a set of normal chromosomes for the given ploidy and sex is created. All chromosomes are identified with a short string containing the chromosome number, an underline ("_") sign, and an index pertaining to the chromosome in the group chromosomes with the same chromosome number.

Next, all altered chromosomes are retrieved from the karyotype (Karyotype.getAlteredChromosomes) which in turn retrieves the chromosomes from its aberrations (Aberration.getAlteredChromosomes). Each chromosome is checked for its ReplacingStatus.

If a chromosome is simply to be added, it receives an identifier as above and is put into the collection.

If a whole chromosome is to be removed, chromosomes of the respective chromosome number are checked for the existence of a CausingAberration; if a chromosome with no such aberration was found, it is removed from the collection. Otherwise an exception is raised.

The situation is more complicated, when a chromosome replaces one or more normal chromosomes.As with removing a whole normal chromosome,  chromosomes with the same chromosome number (or the same number as the first relevant chromosome number in multi-centromeric chromosomes) are checked for the existence of a CausingAberration; if a chromosome with no such aberration was found, it is removed from the collection, otherwise an exception is raised. Now, the replacing chromosome is added to the collection of chromosomes.
If the replacing chromosome is multi-centromeric, normal chromosomes are removed for the other relevant chromosome numbers accordingly. Note that a normal chromosome cannot be replaced for a centromere of the replacing chromosome which is of unknown origin ("?").

Introducing Further Aberrations

The entrance point for the introduction of aberrations is the addAberration() function described above. For every type of aberration, it calls a specific do<AberrationType>() function which receives adequate parameters from the original parameters.

Aberrations Affecting One Chromsome Only

The chromosome affected by the aberration is checked for its CausingAberration. If it is a normal chromosome, an aberration object for the new aberation is instantiated and added to the karyotype.

Otherwise, the CausingAberration is checked if it gives raise to one or more derivative chromosomes (Aberration.causesOneDerivative). If there is only one derivative chromosome caused, five cases must be differentiated; in all cases a new aberration object is instantiated which replaces the CausingAberration (function replaceAberration()):

If the CausingAberration yields several derivative chromosomes, the situation gets much easier again. The chromosome to be affected by the additional aberration can always be described in the ISCN short notation which is available via the Chromosome.ISCNShort property. The description of the additional aberration is added to that description. The new aberration replaces the CausingAberration.

Multiplicators of the CausingAberration are ignored during that step; they will be considered in the replaceAberration() function (see below). If complex derivative chromosomes were encountered, they are  simplified by the correctDerivativeAberration() function of the aberration class.

Aberrations Affecting Two or More Chromsomes

Not yet implemented.

The replaceAberration() Function

This function replaces an aberration by a new one derived from the original aberation. It takes care of multiplicators and all derivations to be denoted.

If the mulitplicator of the previous aberration (i.e. the "CausingAberration" above) is greater than one, that aberration is located in the Aberrations collection of the Karyotype (Aberrations.indexOf() function); its multiplicator is reduced by 1. Otherwise, the aberration is fully removed from that collection.

Next, every chromosome caused by the original aberration is written as a derivative chromosome and added to the karyotype, except the chromosome to be affected by the additional aberration.

Finally, the new aberration is added into the karyotype.

Note that the Chromosome class has no functions for the introduction of three or more way translocations - they are all introduced with the function for two way translocations and thus internally handled (especially for the ISCNShort property) as two translocations. Also, the donor chromosome for an insertion internally "sees" a deletion. Hence, the resulting descriptions may not fully represent the events which lead to the karyotype, but they do really describe a karyotype of the chromosome composition shown.