#Dan Blankenberg #Contains file contents and helper methods for HYPHY configurations import tempfile, os def get_filled_temp_filename(contents): fh = tempfile.NamedTemporaryFile('w') filename = fh.name fh.close() fh = open(filename, 'w') fh.write(contents) fh.close() return filename NJ_tree_shared_ibf = """ COUNT_GAPS_IN_FREQUENCIES = 0; methodIndex = 1; /*-----------------------------------------------------------------------------------------------------------------------------------------*/ function InferTreeTopology(verbFlag) { distanceMatrix = {ds.species,ds.species}; MESSAGE_LOGGING = 0; ExecuteAFile (HYPHY_BASE_DIRECTORY+"TemplateBatchFiles"+DIRECTORY_SEPARATOR+"chooseDistanceFormula.def"); InitializeDistances (0); for (i = 0; i methodIndex)>=ds.species; treeNodes = {2*(ds.species+1),3}; cladesInfo = {ds.species-1,2}; for (i=Rows(treeNodes)-1; i>=0; i=i-1) { treeNodes[i][0] = njm[i][0]; treeNodes[i][1] = njm[i][1]; treeNodes[i][2] = njm[i][2]; } for (i=Rows(cladesInfo)-1; i>=0; i=i-1) { cladesInfo[i][0] = njm[i][3]; cladesInfo[i][1] = njm[i][4]; } njm = 0; } } return 1.0; } /*-----------------------------------------------------------------------------------------------------------------------------------------*/ function TreeMatrix2TreeString (doLengths) { treeString = ""; p = 0; k = 0; m = treeNodes[0][1]; n = treeNodes[0][0]; treeString*(Rows(treeNodes)*25); while (m) { if (m>p) { if (p) { treeString*","; } for (j=p;j.5) { nodeName = ":"+treeNodes[k][2]; treeString*nodeName; } k=k+1; p=m; n=treeNodes[k][0]; m=treeNodes[k][1]; } for (j=m;j