3 added 119 characters in body edited Nov 30 '18 at 21:59 Jason B. 50.8k33 gold badges9696 silver badges203203 bronze badges Using a few undocumented functions that have been discussed here on the stack exchange before, {atoms, coords} = Import[ "https://www.dropbox.com/s/q3rwpedngv5wbqi/ben.xyz?dl=1", {"XYZ", {"VertexTypes", "VertexCoordinates"}} ]; mode = Times[ 100,(* import returns coordinates in picometers for some reason*) (* I need Most here because when imported the table has an extra {} element@ *)Import[ Most @ Import["https"https://www.dropbox.com/s/3pjxams7ndr0l7h/19.mode?dl=1","Table"] "Table" ]; mode = 100 * mode; bonds = GraphicsMoleculePlotDumpInferBonds[atoms, coords, 40, 25]; range = Function[Join[#, Reverse @ #]][Range[Range[-0.5, 0.5, 0.025]]; ListAnimate[ Map; range = Join[range, Reverse @ Function[range]; plot[v_] := ImportExportMoleculePlot3D[ { "VertexCoordinates" -> (coords + #v * mode), "VertexTypes" -> {"C", "C", "C", "C", "C", "C", "H", "H", "H", "H", "H"atoms, "H"}, "EdgeRules" -> bonds } ]]; ListAnimate @ ]Map[plot, range ] ]range] When importing the mode file, it returns an empty list as the last element so I need to use Most to make it a matrix. Then I multiplied it by 100 to convert to picometers. Finally I had to precompute the bonds, because as the molecule moves along the normal coordinate, the atoms could get far enough apart that the bonds wouldn't be detected by MoleculePlot3D. Sources: Using a few undocumented functions that have been discussed here on the stack exchange before, {atoms, coords} = Import[ "https://www.dropbox.com/s/q3rwpedngv5wbqi/ben.xyz?dl=1", {"XYZ", {"VertexTypes", "VertexCoordinates"}} ]; mode = Times[ 100,(* import returns coordinates in picometers for some reason*) (* I need Most here because when imported the table has an extra {} element *) Most @ Import["https://www.dropbox.com/s/3pjxams7ndr0l7h/19.mode?dl=1","Table"] ]; bonds = GraphicsMoleculePlotDumpInferBonds[atoms, coords, 40, 25]; range = Function[Join[#, Reverse @ #]][Range[-0.5, 0.5, 0.025]]; ListAnimate[ Map[ Function[ ImportExportMoleculePlot3D[ { "VertexCoordinates" -> (coords + # * mode), "VertexTypes" -> {"C", "C", "C", "C", "C", "C", "H", "H", "H", "H", "H", "H"}, "EdgeRules" -> bonds } ] ], range ] ] Sources: Using a few undocumented functions that have been discussed here on the stack exchange before, {atoms, coords} = Import[ "https://www.dropbox.com/s/q3rwpedngv5wbqi/ben.xyz?dl=1", {"XYZ", {"VertexTypes", "VertexCoordinates"}} ]; mode = Most @ Import[ "https://www.dropbox.com/s/3pjxams7ndr0l7h/19.mode?dl=1", "Table" ]; mode = 100 * mode; bonds = GraphicsMoleculePlotDumpInferBonds[atoms, coords, 40, 25]; range = Range[-0.5, 0.5, 0.025]; range = Join[range, Reverse @ range]; plot[v_] := ImportExportMoleculePlot3D[ { "VertexCoordinates" -> (coords + v * mode), "VertexTypes" -> atoms, "EdgeRules" -> bonds } ]; ListAnimate @ Map[plot, range] When importing the mode file, it returns an empty list as the last element so I need to use Most to make it a matrix. Then I multiplied it by 100 to convert to picometers. Finally I had to precompute the bonds, because as the molecule moves along the normal coordinate, the atoms could get far enough apart that the bonds wouldn't be detected by MoleculePlot3D. Sources: 2 added 497 characters in body edited Nov 30 '18 at 20:10 Jason B. 50.8k33 gold badges9696 silver badges203203 bronze badges Using a few undocumented functions that have been discussed here on the stack exchange before, {atoms, coords} = Import[ "https://www.dropbox.com/s/q3rwpedngv5wbqi/ben.xyz?dl=1", {"XYZ", {"VertexTypes", "VertexCoordinates"}} ]; mode = Times[ 100,(* import returns coordinates in picometers for some reason*) (* I need Most here because when imported the table has an extra {} element *) Most @ Import["https://www.dropbox.com/s/3pjxams7ndr0l7h/19.mode?dl=1", "Table" ]"Table"] ]; bonds = GraphicsMoleculePlotDumpInferBonds[atoms, coords, 40, 25]; range = Function[Join[#, Reverse @ #]][Range[-0.5, 0.5, 0.025]]; ListAnimate[ Map[ Function[ ImportExportMoleculePlot3D[ { "VertexCoordinates" -> (coords + # * mode), "VertexTypes" -> {"C", "C", "C", "C", "C", "C", "H", "H", "H", "H", "H", "H"}, "EdgeRules" -> bonds } ] ], range ] ] Sources: Using a few undocumented functions that have been discussed here on the stack exchange before, {atoms, coords} = Import[ "https://www.dropbox.com/s/q3rwpedngv5wbqi/ben.xyz?dl=1", {"XYZ", {"VertexTypes", "VertexCoordinates"}} ]; mode = Times[ 100, Most @ Import["https://www.dropbox.com/s/3pjxams7ndr0l7h/19.mode?dl=1", "Table" ] ]; bonds = GraphicsMoleculePlotDumpInferBonds[atoms, coords, 40, 25]; range = Function[Join[#, Reverse @ #]][Range[-0.5, 0.5, 0.025]]; ListAnimate[ Map[ Function[ ImportExportMoleculePlot3D[ { "VertexCoordinates" -> (coords + # * mode), "VertexTypes" -> {"C", "C", "C", "C", "C", "C", "H", "H", "H", "H", "H", "H"}, "EdgeRules" -> bonds } ] ], range ] ] Using a few undocumented functions that have been discussed here on the stack exchange before, {atoms, coords} = Import[ "https://www.dropbox.com/s/q3rwpedngv5wbqi/ben.xyz?dl=1", {"XYZ", {"VertexTypes", "VertexCoordinates"}} ]; mode = Times[ 100,(* import returns coordinates in picometers for some reason*) (* I need Most here because when imported the table has an extra {} element *) Most @ Import["https://www.dropbox.com/s/3pjxams7ndr0l7h/19.mode?dl=1","Table"] ]; bonds = GraphicsMoleculePlotDumpInferBonds[atoms, coords, 40, 25]; range = Function[Join[#, Reverse @ #]][Range[-0.5, 0.5, 0.025]]; ListAnimate[ Map[ Function[ ImportExportMoleculePlot3D[ { "VertexCoordinates" -> (coords + # * mode), "VertexTypes" -> {"C", "C", "C", "C", "C", "C", "H", "H", "H", "H", "H", "H"}, "EdgeRules" -> bonds } ] ], range ] ] Sources: 1 answered Nov 30 '18 at 20:05 Jason B. 50.8k33 gold badges9696 silver badges203203 bronze badges Using a few undocumented functions that have been discussed here on the stack exchange before, {atoms, coords} = Import[ "https://www.dropbox.com/s/q3rwpedngv5wbqi/ben.xyz?dl=1", {"XYZ", {"VertexTypes", "VertexCoordinates"}} ]; mode = Times[ 100, Most @ Import["https://www.dropbox.com/s/3pjxams7ndr0l7h/19.mode?dl=1", "Table" ] ]; bonds = GraphicsMoleculePlotDumpInferBonds[atoms, coords, 40, 25]; range = Function[Join[#, Reverse @ #]][Range[-0.5, 0.5, 0.025]]; ListAnimate[ Map[ Function[ ImportExportMoleculePlot3D[ { "VertexCoordinates" -> (coords + # * mode), "VertexTypes" -> {"C", "C", "C", "C", "C", "C", "H", "H", "H", "H", "H", "H"}, "EdgeRules" -> bonds } ] ], range ] ] ` 