public static void WriteBlank(string pmlpath , bool append ) { StreamWriter file; if (append) { file = HFile.AppendText(pmlpath); } else { file = HFile.CreateText(pmlpath); } file.Close(); }
public static void WriteImport(string pypath, bool append = false) { StreamWriter file; if (append) { file = HFile.AppendText(pypath); } else { file = HFile.CreateText(pypath); } file.WriteLine("from pymol.cgo import *"); file.WriteLine("from pymol import cmd"); file.Close(); }
public static void WriteLineStrips(string pmlpath , string objname , IList <LineStrip> linestrips , bool append = false ) { StreamWriter file; if (append) { file = HFile.AppendText(pmlpath); } else { file = HFile.CreateText(pmlpath); } { //StreamWriter file = File.AppendText(pypath); file.WriteLine("from pymol.cgo import *"); file.WriteLine("from pymol import cmd"); file.WriteLine("obj = ["); foreach (var linestrip in linestrips) { file.WriteLine("BEGIN, LINE_STRIP,"); if (linestrip.linewidth != null) { file.WriteLine(" LINEWIDTH, {0:0.000},", linestrip.linewidth); } file.WriteLine(" ALPHA, {0:0.000}, COLOR, {1:0.000}, {2:0.000}, {3:0.000}, ", linestrip.alpha, linestrip.red, linestrip.green, linestrip.blue); for (int i = 0; i < linestrip.coords.Count; i++) { Vector vert = linestrip.coords[i]; file.Write(" VERTEX, {0:0.000}, {1:0.000}, {2:0.000}, ", vert[0], vert[1], vert[2]); } file.WriteLine(); file.WriteLine(" END,"); } file.WriteLine("]"); // file.WriteLine("cmd.load_cgo(obj,\"channel_path\")"); file.WriteLine("cmd.load_cgo(obj,\"" + objname + "\")"); file.WriteLine(); } file.Close(); }
public static void WriteLineStrip(string pmlpath , string objname , IList <Vector> pathcoords , double?linewidth = null , double alpha = 1.0, double red = 1.0, double green = 1.0, double blue = 1.0 , bool append = false ) { StreamWriter file; if (append) { file = HFile.AppendText(pmlpath); } else { file = HFile.CreateText(pmlpath); } { //StreamWriter file = File.AppendText(pypath); file.WriteLine("from pymol.cgo import *"); file.WriteLine("from pymol import cmd"); file.WriteLine("obj = ["); file.WriteLine("BEGIN, LINE_STRIP,"); if (linewidth != null) { file.WriteLine("LINEWIDTH, {0:0.000},", linewidth); } file.WriteLine("ALPHA, {0:0.000}, COLOR, {1:0.000}, {2:0.000}, {3:0.000}, ", alpha, red, green, blue); for (int i = 0; i < pathcoords.Count; i++) { Vector vert = pathcoords[i]; file.Write("VERTEX, {0:0.000}, {1:0.000}, {2:0.000}, ", vert[0], vert[1], vert[2]); } file.WriteLine(); file.WriteLine("END"); file.WriteLine("]"); // file.WriteLine("cmd.load_cgo(obj,\"channel_path\")"); file.WriteLine("cmd.load_cgo(obj,\"" + objname + "\")"); file.WriteLine(); } file.Close(); }
public static void WriteSphere(string pmlpath , string objname , IList <Tuple <Vector, double, Tuple <double, double, double, double> > > lst_centercoord_radii_color , double?linewidth = null , bool append = true ) { #region python source //def writeChannelPathAndForcedAtoms(pypath, pathcoords, atomcoords, constfrc): // writeChannelPath(pypath, pathcoords); // file = open(pypath, 'a'); // file.write('\n'); // file.write('sphobj = ['+'\n'); // for idx in range(constfrc['count']): // atm0 = constfrc['key0' ][idx]; atm0 = atomcoords[atm0, :]; // atm1 = constfrc['key1' ][idx]; atm1 = atomcoords[atm1, :]; // frc = constfrc['value'][idx]; // file.write('ALPHA, 0.500, COLOR, 1.000, 0.000, 0.000, '); // file.write('SPHERE, %6.3f, %6.3f, %6.3f, %6.3f, ' % (atm0[0]*10, atm0[1]*10, atm0[2]*10, 0.3)); // file.write('SPHERE, %6.3f, %6.3f, %6.3f, %6.3f, ' % (atm1[0]*10, atm1[1]*10, atm1[2]*10, 0.3)); // file.write('\n'); // pass // file.write(']'+'\n'); // file.write('cmd.load_cgo(sphobj,"forced_atoms")'+'\n'); // file.close(); // return #endregion StreamWriter file; if (append) { file = HFile.AppendText(pmlpath); } else { file = HFile.CreateText(pmlpath); } { file.WriteLine("from pymol.cgo import *"); file.WriteLine("from pymol import cmd"); file.WriteLine("obj = ["); file.Write("BEGIN, "); if (linewidth != null) { file.WriteLine("LINEWIDTH, {0:0.000},", linewidth); } { foreach (var centercoord_radii_color in lst_centercoord_radii_color) { Vector coord = centercoord_radii_color.Item1; double radii = centercoord_radii_color.Item2; double alpha = centercoord_radii_color.Item3.Item1; double red = centercoord_radii_color.Item3.Item2; double green = centercoord_radii_color.Item3.Item3; double blue = centercoord_radii_color.Item3.Item4; file.Write("ALPHA, {0:0.000}, COLOR, {1:0.000}, {2:0.000}, {3:0.000}, ", alpha, red, green, blue); file.Write("SPHERE, {0:0.000}, {1:0.000}, {2:0.000}, {3:0.000}, ", coord[0], coord[1], coord[2], radii); file.WriteLine(); } } file.Write("END, "); file.WriteLine("]"); // file.WriteLine("cmd.load_cgo(sphobj,\"forced_atoms\")"); file.WriteLine("cmd.load_cgo(obj,\"" + objname + "\")"); file.WriteLine(); } file.Close(); }
public static void WriteLines(string pmlpath , string objname , IList <Vector> pathcoords , double?linewidth = null , double alpha = 1.0, double red = 1.0, double green = 1.0, double blue = 1.0 , bool append = false ) { #region python source //def writeChannelPath(pypath, pathcoords): // file = open(pypath, 'w'); // file.write('from pymol.cgo import *'+'\n'); // file.write('from pymol import cmd'+'\n'); // file.write('obj = ['+'\n'); // file.write('BEGIN, LINES,'+'\n'); // for idx in range(pathcoords.shape[0]-1): // vert1 = pathcoords[idx,:]; // vert2 = pathcoords[idx+1,:]; // file.write('ALPHA, 1.000, COLOR, 1.000, 0.000, 0.000, '); // file.write('VERTEX, %6.3f, %6.3f, %6.3f, ' % (vert1[0], vert1[1], vert1[2])); // file.write('VERTEX, %6.3f, %6.3f, %6.3f, ' % (vert2[0], vert2[1], vert2[2])); // file.write('\n'); // pass // file.write('END'+'\n'); // file.write(']'+'\n'); // file.write('cmd.load_cgo(obj,"channel_path")'+'\n'); // file.close(); // return #endregion StreamWriter file; if (append) { file = HFile.AppendText(pmlpath); } else { file = HFile.CreateText(pmlpath); } { //StreamWriter file = File.AppendText(pypath); file.WriteLine("from pymol.cgo import *"); file.WriteLine("from pymol import cmd"); file.WriteLine("obj = ["); file.WriteLine("BEGIN, LINES,"); if (linewidth != null) { file.WriteLine("LINEWIDTH, {0:0.000},", linewidth); } for (int i = 0; i < pathcoords.Count / 2; i++) { Vector vert1 = pathcoords[i * 2 + 0]; Vector vert2 = pathcoords[i * 2 + 1]; file.Write("ALPHA, {0:0.000}, COLOR, {1:0.000}, {2:0.000}, {3:0.000}, ", alpha, red, green, blue); file.Write("VERTEX, {0:0.000}, {1:0.000}, {2:0.000}, ", vert1[0], vert1[1], vert1[2]); file.Write("VERTEX, {0:0.000}, {1:0.000}, {2:0.000}, ", vert2[0], vert2[1], vert2[2]); file.WriteLine(); } file.WriteLine("END"); file.WriteLine("]"); // file.WriteLine("cmd.load_cgo(obj,\"channel_path\")"); file.WriteLine("cmd.load_cgo(obj,\"" + objname + "\")"); file.WriteLine(); } file.Close(); }
public static void WriteCircles(string pmlpath , string objname , IList <Circle> lst_circle //, int numLinesInCircle = 50 //, double? linewidth = null //, double alpha=1.0, double red=1.0, double green=1.0, double blue=1.0 , bool append = false ) { StreamWriter file; if (append) { file = HFile.AppendText(pmlpath); } else { file = HFile.CreateText(pmlpath); } { //StreamWriter file = File.AppendText(pypath); file.WriteLine("from pymol.cgo import *"); file.WriteLine("from pymol import cmd"); file.WriteLine("obj = ["); foreach (var circle in lst_circle) { //Vector center = center_normal_radii_numseg_color_width.Item1; //Vector normal = center_normal_radii_numseg_color_width.Item2; //double radii = center_normal_radii_numseg_color_width.Item3; //int numLinesInCircle = center_normal_radii_numseg_color_width.Item4; //double? alpha = center_normal_radii_numseg_color_width.Item5.Item1; //double? red = center_normal_radii_numseg_color_width.Item5.Item2; //double? green = center_normal_radii_numseg_color_width.Item5.Item3; //double? blue = center_normal_radii_numseg_color_width.Item5.Item4; //double? linewidth = center_normal_radii_numseg_color_width.Item6; Trans3 trans = Trans3.GetTransformNoScale(new double[3] { 0, 0, 0 } , new double[3] { 0, 0, 1 } , circle.center , circle.center + circle.normal.UnitVector() ); Vector[] pts = new Vector[circle.numLinesInCircle + 1]; double di = (2 * Math.PI) / circle.numLinesInCircle; for (int i = 0; i < circle.numLinesInCircle; i++) { Vector lpt = new double[3] { circle.radii *Math.Cos(di * i), circle.radii *Math.Sin(di * i), 0 }; pts[i] = trans.DoTransform(lpt); } pts[circle.numLinesInCircle] = pts[0]; file.Write("BEGIN, LINE_STRIP, "); if (circle.linewidth != null) { file.Write("LINEWIDTH, {0:0.000}, ", circle.linewidth); } if (circle.alpha != null) { file.Write("ALPHA, {0:0.000},", circle.alpha); } if (circle.color != null) { file.Write("COLOR, {0:0.000}, {1:0.000}, {2:0.000}, ", circle.color.Item1, circle.color.Item2, circle.color.Item3); } for (int i = 0; i < pts.Length; i++) { if (i % 10 == 0) { file.WriteLine(); file.Write(" "); } file.Write("VERTEX, {0:0.000}, {1:0.000}, {2:0.000}, ", pts[i][0] + 0.000001, pts[i][1] + 0.000001, pts[i][2] + 0.000001); } file.WriteLine(); file.WriteLine(" END, "); } file.WriteLine("]"); // file.WriteLine("cmd.load_cgo(obj,\"channel_path\")"); file.WriteLine("cmd.load_cgo(obj,\"" + objname + "\")"); file.WriteLine(); } file.Close(); }