/usr/share/hyphy/TemplateBatchFiles/partitionSequences.ibf is in hyphy-common 2.2.6+dfsg-3build3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | goOn = 1;
while (goOn)
{
if (promptFor2ndRegExp)
{
fprintf (stdout,"\nEnter a regular expression to define the first clade:");
fscanf (stdin,"String",theRegExp);
fprintf (stdout,"\nEnter a regular expression to define the second clade:");
fscanf (stdin,"String",theRegExp2);
}
else
{
fprintf (stdout,"\nEnter a reg exp to separate the sequences into two clades:");
fscanf (stdin,"String",theRegExp);
}
cladeA = {};
cladeB = {};
st1 = "";
st2 = "";
for (specIndex = 0; specIndex < ds.species; specIndex = specIndex + 1)
{
GetString (specName, ds, specIndex);
specMatch = specName $ theRegExp;
if (specMatch[0]>=0)
{
cladeA [specName] = 1;
if (Abs(st1))
{
st1 = st1 + "," + specName;
}
else
{
st1 = specName;
}
}
else
{
if (promptFor2ndRegExp)
{
specMatch = specName $ theRegExp2;
if (specMatch[0] < 0)
{
continue;
}
}
cladeB [specName] = 1;
if (Abs(st2))
{
st2 = st2 + "," + specName;
}
else
{
st2 = specName;
}
}
}
st1 = "(("+st1+"),"+st2+")";
Topology splitTop = st1;
clASize = Abs (cladeA);
clBSize = Abs (cladeB);
if (clASize == 0 || clBSize == 0 || (clASize + clBSize < ds.species) && (promptFor2ndRegExp==0))
{
fprintf (stdout, "\nERROR: invalid sequence partitionings - one of the clades is empty or there were duplicate sequence names\n");
return 0;
}
fprintf (stdout, "\n\nClade 1 includes ", clASize," sequences:\n");
cladeKeys = Rows (cladeA);
for (specIndex = 0; specIndex < clASize; specIndex = specIndex + 1)
{
fprintf (stdout, "\t", cladeKeys[specIndex],"\n");
}
fprintf (stdout, "\n\nClade 2 includes ", clBSize," sequences:\n");
cladeKeys = Rows (cladeB);
for (specIndex = 0; specIndex < clBSize; specIndex = specIndex + 1)
{
fprintf (stdout, "\t", cladeKeys[specIndex],"\n");
}
fprintf (stdout, "\nIs this partitioning correct (y/n)");
fscanf (stdin, "String", goOn);
goOn = (goOn[0] == "n" || goOn[0] == "N");
}
|