Hi Mark,
If you want to populate a group of machines with PixInsight instances running specific processes, I think the best way is to write bash scripts that send the commands to each machine. This would be a good approach IMO:
First, we write a small JavaScript script to be run in each PixInsight instance. This script is simply an execution of an ImageIntegration instance with a set of known parameters:
var P = new ImageIntegration;
P.images = [ // enabled, path, drizzlePath
[true, "/home/vicent/Image01.xisf", ""],
[true, "/home/vicent/Image02.xisf", ""],
[true, "/home/vicent/Image03.xisf", ""],
[true, "/home/vicent/Image04.xisf", ""],
[true, "/home/vicent/Image05.xisf", ""],
[true, "/home/vicent/Image06.xisf", ""],
[true, "/home/vicent/Image07.xisf", ""],
[true, "/home/vicent/Image08.xisf", ""],
[true, "/home/vicent/Image09.xisf", ""],
[true, "/home/vicent/Image10.xisf", ""],
[true, "/home/vicent/Image11.xisf", ""],
[true, "/home/vicent/Image12.xisf", ""]
];
P.inputHints = "";
P.combination = ImageIntegration.prototype.Average;
P.weightMode = ImageIntegration.prototype.NoiseEvaluation;
P.weightKeyword = "";
P.weightScale = ImageIntegration.prototype.WeightScale_IKSS;
P.ignoreNoiseKeywords = false;
P.normalization = ImageIntegration.prototype.AdditiveWithScaling;
P.rejection = ImageIntegration.prototype.WinsorizedSigmaClip;
P.rejectionNormalization = ImageIntegration.prototype.Scale;
P.minMaxLow = 1;
P.minMaxHigh = 1;
P.pcClipLow = 0.200;
P.pcClipHigh = 0.100;
P.sigmaLow = 4.000;
P.sigmaHigh = 3.000;
P.linearFitLow = 5.000;
P.linearFitHigh = 2.500;
P.ccdGain = 1.00;
P.ccdReadNoise = 10.00;
P.ccdScaleNoise = 0.00;
P.clipLow = true;
P.clipHigh = true;
P.rangeClipLow = true;
P.rangeLow = 0.000000;
P.rangeClipHigh = false;
P.rangeHigh = 0.980000;
P.mapRangeRejection = true;
P.reportRangeRejection = false;
P.largeScaleClipLow = false;
P.largeScaleClipLowProtectedLayers = 2;
P.largeScaleClipLowGrowth = 2;
P.largeScaleClipHigh = false;
P.largeScaleClipHighProtectedLayers = 2;
P.largeScaleClipHighGrowth = 2;
P.generate64BitResult = false;
P.generateRejectionMaps = true;
P.generateIntegratedImage = true;
P.generateDrizzleData = false;
P.closePreviousImages = false;
P.bufferSizeMB = 16;
P.stackSizeMB = 1024;
P.useROI = false;
P.roiX0 = 0;
P.roiY0 = 0;
P.roiX1 = 0;
P.roiY1 = 0;
P.useCache = true;
P.evaluateNoise = true;
P.mrsMinDataFraction = 0.010;
P.noGUIMessages = true;
P.useFileThreads = true;
P.fileThreadOverload = 1.00;
P.executeGlobal();
Once you have this script, it can be executed within a PixInsight shell script (SCP). This script will run the JS and then save the integrated image:
run -x "/home/vicent/ImageIntegration.js"
save integration -p=/home/vicent/integrated-image.xisf --nodialog --nomessages --noverify
This SCP can be automatically executed when you launch the PixInsight instance in each machine.
You need then a bash script that regenerates the JS for each machine with the specific settings to be tested.
Finally, you can execute the SCP on each machine with the following command:
PixInsight -n --no-startup-check-updates --no-startup-gui-messages --no-splash -r=/home/vicent/PI-shell-script.scp --force-exit
If you're executing this instance on multiple machines in an automated way, you'll need to specify the DISPLAY variable value in which the PixInsight should be run. Of course, you'll need a graphical session running in each machine.
Please let me know if you need any further info.
Best regards,
Vicent.