Analysing a monoclonal karyotype
The analysis of a simple (monoclonal) karyotype is an everyday task for cytogeneticists. The following section will show a broad example of the information which can be extracted from a karyotype when using the ISCNAnalyser dll.
Let us assume that the karyotype formula is entered in the textbox 'txtKaryotype' on a form. After clicking the button 'Button1', an analysis is performed and the results are written into the multiline textbox 'txtResult'.
At first, inegrate the ISCNAnalyser dll into your project. From the menu 'Project' select 'Add references'. The ISCNAnalyser dll is located in its installation directory (normally C:\CyDAS\).
Add an 'Imports' statement in your form before the beginning
of the class:
Imports ISCNAnalyser
In the 'Button1_Click' procedure add:
Dim objKaryotype As Karyotype 'initialise it with the formula from the text box objKaryotype = New Karyotype(txtKaryotype.Text) 'check whether it is valid If objKaryotype.isValidKaryotype Then 'the karyotype is valid, we can query a lot of information 'get the ISCN formula: txtResult.Text &= "ISCN Formula: " & objKaryotype.ToString & vbCrLf 'is it a composite [cp] karyotype? txtResult.Text &= "Is composite Karyotype: " & _ objKaryotype.isCompositeKaryotype.ToString & vbCrLf 'what is the clone size? txtResult.Text &= "Clone size: " & objKaryotype.getCloneSize.ToString & vbCrLf 'is the karyotype incomplete? txtResult.Text &= "Is incomplete: " & objKaryotype.isIncompleteKaryotype.ToString & vbCrLf 'what about its double minutes? txtResult.Text &= "Double Minutes: " & objKaryotype.getDoubleMinutes.ToString & vbCrLf 'what about its markers? 'a) the notation of all of them txtResult.Text &= "Markers: " & objKaryotype.getMarkers.ToString & vbCrLf 'b) their amounts (minimum to maximum) txtResult.Text &= "Marker count: " & _ objKaryotype.getMarkers.getCountMin.ToString & " to " & _ objKaryotype.getMarkers.getCountMax.ToString & vbCrLf 'what about the less well defined ring chromosomes? 'a) their notation txtResult.Text &= "Rings: " & objKaryotype.getRings.ToString & vbCrLf 'b) their numbers (minimum to maximum) txtResult.Text &= "Ring count: " & _ objKaryotype.getRings.getCountMin.ToString & " to " & _ objKaryotype.getRings.getCountMax.ToString & vbCrLf 'the chromosome count 'a) notation txtResult.Text &= "Chromosome count field : " & objKaryotype.getChromosomeCountField & vbCrLf 'b) minimum and maximum numbers txtResult.Text &= "Chromosome count: " & _ objKaryotype.getChromosomeCount.ToString & " to " & _ objKaryotype.getChromosomeCountMax.ToString & vbCrLf 'ploidy level txtResult.Text &= "Ploidy level: " & objKaryotype.getPloidyLevel & vbCrLf '(non-aberrant) sex chromosomes txtResult.Text &= "Sex chromosomes: " & objKaryotype.getSexChromosomes & vbCrLf 'all the aberrations 'a) their number txtResult.Text &= "Count of Aberration elements: " & objKaryotype.getAberrationCount & vbCrLf 'b) information on each of them: Dim i As Integer For i = 0 To objKaryotype.getAberrationCount - 1 'index starts at 0 'description of this aberration with lots of accompanying information txtResult.Text &= "Aberration " & i & ": " & objKaryotype.getAberrationString(i) & vbCrLf Next 'information for the whole karyotype txtResult.Text &= "SUMMARY:" & vbCrLf 'break points txtResult.Text &= "Break Points: " & objKaryotype.getBreakPoints.ToString & vbCrLf 'structural aberrations in SCCN, not adjusted to a resolution txtResult.Text &= "Structural: " & objKaryotype.getQualitativeAberrations.ToString & vbCrLf 'structural aberrations in SCCN, adjusted to 400 bphs resolution (question marks are ignored by default) txtResult.Text &= "Structural at 400bphs: " 'may throw an error, if a given band does not exist Try txtResult.Text &= _ objKaryotype.getQualitativeAberrationsExpandedToResolution(Band.eResolutionLevel.Resolution400Bands).ToString & vbCrLf Catch exc As Exception 'error description for the user txtResult.Text &= exc.Message & vbCrLf End Try 'quantitative aberrations in SCCN, not adjusted to a resolution txtResult.Text &= "Quantitative: " & objKaryotype.getQuantitativeAberrations.ToString & vbCrLf 'quantitative aberrations in SCCN, adjusted to 400 bphs resolution (question marks are ignored by default) txtResult.Text &= "Quantitative at 400bphs: " 'may throw an error, if a given band does not exist Try txtResult.Text &= _ objKaryotype.getQuantitativeAberrationsExpandedToResolution(Band.eResolutionLevel.Resolution400Bands).ToString & vbCrLf Catch exc As Exception 'error description for the user txtResult.Text &= exc.Message & vbCrLf End Try 'information on fusions is still preliminary txtResult.Text &= "Fusions: " & objKaryotype.getFusions.ToString & vbCrLf 'Complex Karyotype Aberration Score Dim oCKAS As CKAS = objKaryotype.getCKAS txtResult.Text &= "CKAS Ploidy/Numerical/Balanced/Unbalanced/Unclassified/Overall): " & oCKAS.getPloidy & "/" & oCKAS.getNumerical & "/" & oCKAS.getBalanced & "/" & oCKAS.getUnbalanced & "/" & oCKAS.getUnclassified & "/" & oCKAS.getOverallCKAS & vbCrLf 'a long table will follow, we mark here the beginning of a new section txtResult.Text &= "-----------------------------------------------------" & vbCrLf txtResult.Text &= "Band" & vbTab & "Gains" & vbTab & "Losses" & vbTab & "Struct." & vbCrLf 'define an object telling gains, losses and structural aberrations for each band Dim oGLS As GainsLossesStructs 'get the gains and losses from the quantitative aberrations oGLS = objKaryotype.getQuantitativeAberrationsExpandedToResolution(Band.eResolutionLevel.Resolution400Bands, True).getGainsLossesStructs(Band.eResolutionLevel.Resolution400Bands) 'add the structural aberrations oGLS.addRange(objKaryotype.getQualitativeAberrationsExpandedToResolution(Band.eResolutionLevel.Resolution400Bands, True).getGainsLossesStructs(Band.eResolutionLevel.Resolution400Bands)) 'print it txtResult.Text &= oGLS.ToString Else 'show error message txtResult.Text &= "The Karyotype " & objKaryotype.ToString & " is not valid:" & vbCrLf & objKaryotype.getErrorDescription End If
If the case shows clones with different karyotypes, see "Analysing a polyclonal karyotype".