Hi all,
I have some problems debugging a complex script in Jmol.
First of all, the command 'set scriptReportingLevel' doesn't seem to
work in Jmol 14.3.13_2015.04.08. It is always setting the value to zero.
Q: What do the numbers (e.g.: $[2.295.299]) in the debugging output
after the command 'set showScript on' mean?
The first number looks like it could be the function call level.
The third number could be the line number within the function after
removing empty lines.
Following the debugging information for a problematic function (~500
lines of code, see short extract below) the critical line seems to be a
'for' loop. Depending on the input data the loop sometimes cycles more
often (twice instead of once) than indicated by the variable value
('fileCount=1' in any of the described cases) or the function is exited
(without any error message or exception) after reaching the line the
second time:
$[2.83.82] for (var fileNumber=1; fileNumber<=fileCount; fileNumber++);
$[2.400.400]
$[2.83.82] for (var fileNumber=1; fileNumber<=fileCount; fileNumber++);
--- Problematic function, extract ---
function parseNetworkTsvData(dataHashref) {
...
if (fileCount >0) {
for (var fileNumber=1; fileNumber<=fileCount; fileNumber++) {
...
}
...
}
...
}
---------------------------------------------------------------------
Replacing the old syntax by the new one "for (var fileNumber FROM [1
fileCount]) {" dosen't change the problematic behaviour. The only
visible difference can be seen in the case of the additional loop run.
With the old syntax 'fileNumber' is "1" in the first cycle and "2" in
the second one. With the new syntax it is "1" during both cycles.
Although I have no clue what difference between the datasets is
responsible for the different behaviour (they have many differences) it
seems to be reproducible for each dataset.
Since there might be involved some strange interference between the
'for' loop and other block-level elements I have added below also a
version of the function reduced to all block-level begins/ends.
Regards,
Rolf
--- Problematic function, larger extract -------------------
function parseNetworkTsvData(dataHashref) {
if (dataHashref.type != "hash") {
} else {
if (networkType == "") {
}
if (dataHashref..subsets.type != "hash") {
} elseif (dataHashref..subsets.[dataHashref..currentSubsetKey].type
!= "hash") {
}
if (dataHashref..networkDefinitions.type != "hash") {
} else {
if (dataHashref..networkDefinitions.[networkType].type != "hash") {
} else {
if
(dataHashref..networkDefinitions.[networkType]..nodeColumns.type !=
"hash") {
if
(dataHashref..networkDefinitions.[networkType]..nodeColumns.type !=
"hash") {
}
}
}
}
if (dataHashref..tsvData.type != "array") {
}
}
if (msg != "") {
}
if (fileCount >0) {
if (networkDefs..annotationColumns.type == "hash") {
}
if (allNodes..nodeInfo.type != hash) {
}
if (allNodes..edgeInfo.type != hash) {
}
if (allNodes..edgeKeysUsed.type != hash) {
}
if (allNodes..neighbours.type != hash) {
}
for (var fileNumber=1; fileNumber<=fileCount; fileNumber++) {
if (dataHashref..tsvData.[fileNumber].type == "hash") {
if (tsvData.type == "array") {
if (rowCount > 0) {
for (var column in tsvData[1].keys) {
if (networkType == "generic") {
if (columnDefs.[column].type != "hash") {
}
}
if (nodeColumns[column]) {
if (columnDefs[column].type != "hash") {
} else {
if (nodeTypesFound[nodeType].type != "hash") {
}
if (nodeTypesFound[nodeType]..columnNumbers.type !=
"array") {
}
if (nodeTypesFound[nodeType]..minColumnNumber == "") {
} else {
}
if (nodeTypesFound[nodeType]..maxColumnNumber == "") {
} else {
}
if (columnDefs[column].subTypeInfoKey != "") {
}
}
}
}
for (var column in tsvData[1].keys) {
if (annotationColumns.[column]) {
if (columnDefs.[column].type != "hash") {
} else {
if (targetNodeTypes.type == "array") {
for (var targetNodeType in targetNodeTypes) {
if (nodeTypesFound[targetNodeType].type == "hash") {
if (annotationColumnsFound[column].type !=
"hash") {
}
if (targetColumnCount > 0) {
if (targetColumnCount == 1) {
} else {
if (columnNumber <
nodeTypesFound[targetNodeType]..minColumnNumber) {
} elseif (columnNumber >
nodeTypesFound[targetNodeType]..maxColumnNumber) {
} else {
for (var i=1; i<=targetColumnCount; i++) {
if (targetColumnNumber == 0) {
} else {
if (columnNumber >
currentTargetColumnNumber) {
} else {
}
}
}
}
}
}
if
(annotationColumnsFound[column]..targetNodeTypes.type != "hash") {
}
if
(annotationColumnsFound[column]..targetNodeTypes.[targetNodeType].type
!= "hash") {
}
if
(annotationColumnsFound[column]..minTargetColumnNumber == "") {
} else {
}
if
(annotationColumnsFound[column]..maxTargetColumnNumber == "") {
} else {
}
}
}
if (assignMode != "all") {
for (var targetNodeType in targetNodeTypesFound) {
}
if (columnNumber <
annotationColumnsFound[column]..minTargetColumnNumber) {
} elseif (columnNumber >
annotationColumnsFound[column]..maxTargetColumnNumber) {
} else {
for (var currentTargetColumnNumber in
targetColumnNumbers.sort) {
if (singleTargetColumnNumber == 0) {
} else {
if (columnNumber > currentTargetColumnNumber) {
} else {
}
}
}
}
}
}
}
}
}
for (var column in annotationColumnsFound.keys) {
if
(annotationColumnsFound[column]..singleTargetColumnNumber > 0) {
} else {
if
(annotationColumnsFound[column]..targetNodeTypes.type == "hash") {
for (targetNodeType in
annotationColumnsFound[column]..targetNodeTypes) {
if
(annotationColumnsFound[column]..targetNodeTypes.[targetNodeType].type
== "hash") {
if
(annotationColumnsFound[column]..targetNodeTypes.[targetNodeType]..targetColumnNumber
> 0) {
}
}
}
}
}
}
if (msg != "") {
}
for (var rowNumber from [1 rowCount]) {
for (var column in nodeColumnsFound.keys) {
if (allNodes..nodeInfo.[nodeKey].type != "hash") {
}
}
if (currentNodeKeyCount > 1) {
for (var i from [1 limit1]) {
for (var j from [currentNodeKeyCount limit2]) {
if (i==j) { log "ERROR: i(" + i + ") = j(" + j + ")"; }
if (allNodes..edgeKeysUsed.[edgeKey].type != "hash") {
if (allNodes..edgeKeysUsed.[edgeKeyRev].type !=
"hash") {
if (allNodes..neighbours.[nodeKey1].type !=
"hash") {
}
if (allNodes..neighbours.[nodeKey2].type !=
"hash") {
}
} else {
}
}
}
}
}
if (networkType != "generic") {
for (var column in annotationColumnsFound.keys) {
if
(annotationColumnsFound.[column].singleTargetColumnNumber > 0) {
} else {
if
(annotationColumnsFound.[column]..targetColumnNumbers.type == "array") {
}
}
for (var targetColumnNumber in targetColumnNumbers) {
if (nodeKey != "") {
}
}
}
}
}
}
} else {
}
} else {
}
}
}
if (allNodes..subnetworkInfo.type == "hash") {
if (allNodes..subnetworkInfo..nodeKeyToSubnetworkNumber.type ==
"hash") {
}
}
if (networkDefs..translations.type == "hash") {
}
for (var nodeKey in allNodes..nodeInfo) {
if (allNodes..nodeInfo.[nodeKey]..nodeType != "") {
}
if (allNodes..nodeInfo.[nodeKey]..subTypeInfoKey != "") {
if (allNodes..nodeInfo.[nodeKey].[subTypeInfoKey] != "") {
}
}
if (subnetworkNumbersAvailable) {
if
(allNodes..subnetworkInfo..nodeKeyToSubnetworkNumber.[nodeKey].type != "") {
}
}
if (translationsAvailable) {
if (networkDefs..translations..typeToSingleLetter.type == "hash") {
if (networkDefs..translations..typeToSingleLetter.[nodeType] !=
"") {
}
} else {
}
if (networkDefs..translations..typeToTypeId.type == "hash") {
if (networkDefs..translations..typeToTypeId.[nodeType] != "") {
}
if (networkDefs..translations..typeToTypeId.[nodeSubType] != "") {
}
} else {
}
}
}
for (var edgeKey in allNodes..edgeInfo) {
}
}
---------------------------------------------------------------------
--
Rolf Huehne
Postdoc
Leibniz Institute for Age Research - Fritz Lipmann Institute (FLI)
Beutenbergstrasse 11
07745 Jena, Germany
Phone: +49 3641 65 6205
Fax: +49 3641 65 6210
E-Mail: [email protected]
Website: http://www.fli-leibniz.de
Scientific Director: Prof. Dr. K. Lenhard Rudolph
Head of Administration: Dr. Daniele Barthel
Chairman of Board of Trustees: Dennys Klein
VAT No: DE 153 925 464
Register of Associations: No. 230296, Amtsgericht Jena
Tax Number: 162/141/08228
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers