From swift at ci.uchicago.edu Sun Dec 2 00:20:04 2012 From: swift at ci.uchicago.edu (swift at ci.uchicago.edu) Date: Sun, 2 Dec 2012 00:20:04 -0600 (CST) Subject: [Swift-commit] cog r3525 Message-ID: <20121202062005.714DE8D00090@bridled.ci.uchicago.edu> ------------------------------------------------------------------------ r3525 | davidkelly999 | 2012-12-02 00:18:55 -0600 (Sun, 02 Dec 2012) | 2 lines Allow more user defined condor attributes ------------------------------------------------------------------------ Index: modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java =================================================================== --- modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java (revision 3524) +++ modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java (working copy) @@ -32,20 +32,18 @@ super(task, listener); } - protected void writeAttr(String attrName, String arg, Writer wr) - throws IOException { + protected void writeAttr(String attrName, String arg, Writer wr) throws IOException { Object value = getSpec().getAttribute(attrName); if (value != null) { wr.write(arg + String.valueOf(value) + '\n'); } } - protected void writeScript(Writer wr, String exitcodefile, String stdout, - String stderr) throws IOException { + protected void writeScript(Writer wr, String exitcodefile, String stdout, String stderr) throws IOException { boolean grid = false; - Task task = getTask(); JobSpecification spec = getSpec(); - getSpec().unpackProviderAttributes(); + + // Handle some predefined jobTypes String type = (String) spec.getAttribute("jobType"); if (logger.isDebugEnabled()) { logger.debug("Job type: " + type); @@ -58,27 +56,31 @@ String gridResource = (String) spec.getAttribute("gridResource"); wr.write("universe = grid\n"); wr.write("grid_resource = "+gridResource+"\n"); - -// the below two lines are needed to cause the gridmonitor to be used -// which is the point of all this... + // the below two lines are needed to cause the gridmonitor to be used + // which is the point of all this... wr.write("stream_output = False\n"); wr.write("stream_error = False\n"); - wr.write("Transfer_Executable = false\n"); } else { - wr.write("universe = vanilla\n"); + if(spec.getAttribute("condor.universe") == null) { + wr.write("universe = vanilla\n"); + } } + if ("true".equals(spec.getAttribute("holdIsFailure"))) { wr.write("periodic_remove = JobStatus == 5\n"); } + writeAttr("count", "machine_count = ", wr); + wr.write("output = " + quote(stdout) + '\n'); + wr.write("error = " + quote(stderr) + '\n'); + if (spec.getStdInput() != null) { wr.write("input = " + quote(spec.getStdInput()) + "\n"); } - wr.write("output = " + quote(stdout) + '\n'); - wr.write("error = " + quote(stderr) + '\n'); - Iterator i = spec.getEnvironmentVariableNames().iterator(); + + Iterator i = spec.getEnvironmentVariableNames().iterator(); if (i.hasNext()) { wr.write("environment = "); } @@ -99,7 +101,7 @@ } } wr.write("executable = " + quote(spec.getExecutable()) + "\n"); - List args = spec.getArgumentsAsList(); + List args = spec.getArgumentsAsList(); if (args != null && args.size() > 0) { wr.write("arguments = "); i = args.iterator(); @@ -112,18 +114,15 @@ } wr.write('\n'); - String request_memory = (String) spec.getAttribute("request_memory"); - if(request_memory != null) { - wr.write("request_memory = " + request_memory + '\n'); - } - - String resources = (String) spec.getAttribute("condor.resource_list"); - if (resources != null && resources.length() > 0) { - if (logger.isDebugEnabled()) - logger.debug("condor.resource_list: " + resources); - wr.write(resources + '\n'); - } - + // Handle all condor attributes specified by the user + for(String a : spec.getAttributeNames()) { + if(a != null && a.startsWith("condor.")) { + String attributeName[] = a.split("condor."); + System.out.println(attributeName[1] + " = " + spec.getAttribute(a)); + wr.write(attributeName[1] + " = " + spec.getAttribute(a) + '\n'); + } + } + wr.write("notification = Never\n"); wr.write("leave_in_queue = TRUE\n"); wr.write("queue\n"); From swift at ci.uchicago.edu Sun Dec 2 00:45:04 2012 From: swift at ci.uchicago.edu (swift at ci.uchicago.edu) Date: Sun, 2 Dec 2012 00:45:04 -0600 (CST) Subject: [Swift-commit] cog r3526 Message-ID: <20121202064505.8DFF08D00090@bridled.ci.uchicago.edu> ------------------------------------------------------------------------ r3526 | davidkelly999 | 2012-12-02 00:40:20 -0600 (Sun, 02 Dec 2012) | 2 lines Remove debug statement ------------------------------------------------------------------------ Index: modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java =================================================================== --- modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java (revision 3525) +++ modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java (working copy) @@ -118,7 +118,6 @@ for(String a : spec.getAttributeNames()) { if(a != null && a.startsWith("condor.")) { String attributeName[] = a.split("condor."); - System.out.println(attributeName[1] + " = " + spec.getAttribute(a)); wr.write(attributeName[1] + " = " + spec.getAttribute(a) + '\n'); } } From swift at ci.uchicago.edu Mon Dec 3 11:40:09 2012 From: swift at ci.uchicago.edu (swift at ci.uchicago.edu) Date: Mon, 3 Dec 2012 11:40:09 -0600 (CST) Subject: [Swift-commit] cog r3527 Message-ID: <20121203174010.481208D00090@bridled.ci.uchicago.edu> ------------------------------------------------------------------------ r3527 | davidkelly999 | 2012-12-03 11:38:59 -0600 (Mon, 03 Dec 2012) | 2 lines Some fixes to make condor more flexible ------------------------------------------------------------------------ Index: modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java =================================================================== --- modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java (revision 3526) +++ modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java (working copy) @@ -9,8 +9,12 @@ */ package org.globus.cog.abstraction.impl.scheduler.condor; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.Writer; +import java.nio.channels.FileChannel; import java.util.Iterator; import java.util.List; @@ -20,10 +24,12 @@ import org.globus.cog.abstraction.impl.scheduler.common.AbstractProperties; import org.globus.cog.abstraction.impl.scheduler.common.AbstractQueuePoller; import org.globus.cog.abstraction.impl.scheduler.common.Job; +import org.globus.cog.abstraction.impl.scheduler.common.ProcessException; import org.globus.cog.abstraction.impl.scheduler.common.ProcessListener; import org.globus.cog.abstraction.interfaces.FileLocation; import org.globus.cog.abstraction.interfaces.JobSpecification; import org.globus.cog.abstraction.interfaces.Task; +import org.globus.gsi.gssapi.auth.AuthorizationException; public class CondorExecutor extends AbstractExecutor { public static final Logger logger = Logger.getLogger(CondorExecutor.class); @@ -32,20 +38,95 @@ super(task, listener); } - protected void writeAttr(String attrName, String arg, Writer wr) - throws IOException { + protected void writeAttr(String attrName, String arg, Writer wr) throws IOException { Object value = getSpec().getAttribute(attrName); if (value != null) { wr.write(arg + String.valueOf(value) + '\n'); } } - protected void writeScript(Writer wr, String exitcodefile, String stdout, - String stderr) throws IOException { + public void start() + throws AuthorizationException, IOException, ProcessException { + File scriptdir = new File("."); + script = File.createTempFile(getName(), ".submit", scriptdir); + if (!logger.isDebugEnabled()) { + script.deleteOnExit(); + } + stdout = spec.getStdOutput() == null ? script.getAbsolutePath() + + ".stdout" : spec.getStdOutput(); + stderr = spec.getStdError() == null ? script.getAbsolutePath() + + ".stderr" : spec.getStdError(); + exitcode = script.getAbsolutePath() + ".exitcode"; + + if (logger.isDebugEnabled()) { + logger.debug("Writing " + getName() + " script to " + script); + } + + String[] cmdline = buildCommandLine(scriptdir, script, exitcode, + stdout, stderr); + + if (logger.isDebugEnabled()) { + logCommandLine(cmdline); + } + Process process = Runtime.getRuntime().exec(cmdline, null, null); + + try { + process.getOutputStream().close(); + } + catch (IOException e) { + } + + try { + int code = process.waitFor(); + if (code != 0) { + String errorText = getOutput(process.getInputStream()) + + getOutput(process.getErrorStream()); + throw new ProcessException("Could not submit job (" + + getProperties().getSubmitCommandName() + + " reported an exit code of " + code + "). " + + errorText); + } + if (logger.isDebugEnabled()) { + logger.debug(getProperties().getSubmitCommandName() + + " done (exit code " + code + ")"); + } + } + catch (InterruptedException e) { + if (logger.isDebugEnabled()) { + logger.debug("Interrupted exception while waiting for " + + getProperties().getSubmitCommandName(), e); + } + if (listener != null) { + listener + .processFailed("The submission process was interrupted"); + } + } + + String output = getOutput(process.getInputStream()); + jobid = parseSubmitCommandOutput(output); + if (logger.isDebugEnabled()) { + logger.debug("Submitted job with id '" + jobid + "'"); + } + + if (jobid.length() == 0) { + String errorText = getOutput(process.getErrorStream()); + if (listener != null) + listener.processFailed("Received empty jobid!\n" + + output + "\n" + errorText); + } + + process.getInputStream().close(); + + getQueuePoller().addJob( + job = createJob(jobid, stdout, spec.getStdOutputLocation(), stderr, + spec.getStdErrorLocation(), exitcode, this)); + } + + protected void writeScript(Writer wr, String exitcodefile, String stdout, String stderr) throws IOException { boolean grid = false; - Task task = getTask(); JobSpecification spec = getSpec(); - getSpec().unpackProviderAttributes(); + + // Handle some predefined jobTypes String type = (String) spec.getAttribute("jobType"); if (logger.isDebugEnabled()) { logger.debug("Job type: " + type); @@ -58,27 +139,31 @@ String gridResource = (String) spec.getAttribute("gridResource"); wr.write("universe = grid\n"); wr.write("grid_resource = "+gridResource+"\n"); - -// the below two lines are needed to cause the gridmonitor to be used -// which is the point of all this... + // the below two lines are needed to cause the gridmonitor to be used + // which is the point of all this... wr.write("stream_output = False\n"); wr.write("stream_error = False\n"); - wr.write("Transfer_Executable = false\n"); } else { - wr.write("universe = vanilla\n"); + if(spec.getAttribute("condor.universe") == null) { + wr.write("universe = vanilla\n"); + } } + if ("true".equals(spec.getAttribute("holdIsFailure"))) { wr.write("periodic_remove = JobStatus == 5\n"); } + writeAttr("count", "machine_count = ", wr); + wr.write("output = " + quote(stdout) + '\n'); + wr.write("error = " + quote(stderr) + '\n'); + if (spec.getStdInput() != null) { wr.write("input = " + quote(spec.getStdInput()) + "\n"); } - wr.write("output = " + quote(stdout) + '\n'); - wr.write("error = " + quote(stderr) + '\n'); - Iterator i = spec.getEnvironmentVariableNames().iterator(); + + Iterator i = spec.getEnvironmentVariableNames().iterator(); if (i.hasNext()) { wr.write("environment = "); } @@ -98,8 +183,17 @@ wr.write("remote_initialdir = " + quote(spec.getDirectory()) + "\n"); } } + + String basename[] = spec.getExecutable().split("/"); + FileChannel from = new FileInputStream(spec.getExecutable()).getChannel(); + FileChannel to = new FileOutputStream(basename[basename.length-1]).getChannel(); + to.transferFrom(from, 0, from.size()); + from.close(); + to.close(); + + spec.getExecutable(); wr.write("executable = " + quote(spec.getExecutable()) + "\n"); - List args = spec.getArgumentsAsList(); + List args = spec.getArgumentsAsList(); if (args != null && args.size() > 0) { wr.write("arguments = "); i = args.iterator(); @@ -110,20 +204,16 @@ } } } - wr.write('\n'); + wr.write('\n'); - String request_memory = (String) spec.getAttribute("request_memory"); - if(request_memory != null) { - wr.write("request_memory = " + request_memory + '\n'); - } - - String resources = (String) spec.getAttribute("condor.resource_list"); - if (resources != null && resources.length() > 0) { - if (logger.isDebugEnabled()) - logger.debug("condor.resource_list: " + resources); - wr.write(resources + '\n'); - } - + // Handle all condor attributes specified by the user + for(String a : spec.getAttributeNames()) { + if(a != null && a.startsWith("condor.")) { + String attributeName[] = a.split("condor."); + wr.write(attributeName[1] + " = " + spec.getAttribute(a) + '\n'); + } + } + wr.write("notification = Never\n"); wr.write("leave_in_queue = TRUE\n"); wr.write("queue\n"); From davidk at ci.uchicago.edu Mon Dec 3 16:41:08 2012 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Mon, 3 Dec 2012 16:41:08 -0600 (CST) Subject: [Swift-commit] r6096 - branches/release-0.94/libexec Message-ID: <20121203224108.7405A9CCC2@svn.ci.uchicago.edu> Author: davidk Date: 2012-12-03 16:41:08 -0600 (Mon, 03 Dec 2012) New Revision: 6096 Modified: branches/release-0.94/libexec/_swiftwrap Log: Fix for #887 Modified: branches/release-0.94/libexec/_swiftwrap =================================================================== --- branches/release-0.94/libexec/_swiftwrap 2012-11-29 21:39:48 UTC (rev 6095) +++ branches/release-0.94/libexec/_swiftwrap 2012-12-03 22:41:08 UTC (rev 6096) @@ -1,3 +1,4 @@ + #!/bin/bash # this script must be invoked inside of bash, not plain sh # note that this script modifies $IFS @@ -475,17 +476,33 @@ fail 254 "The executable $EXEC does not have the executable bit set" fi if [ "$KICKSTART" == "" ]; then + + TIMEARGS=(-o swiftapp.resources -f APP_RESOURCES=real_time:%E,real_secs:%e,kernel_secs:%S,user_secs:%U,percent_cpu:%P,max_rss:%M,avg_rss:%t,avg_tot_vm:%K,avg_priv_data:%D,avg_priv_stack:%p,avg_shared_text:%X,page_size:%Z,major_pgfaults:%F,minor_pgfaults:%R,swaps:%W,invol_context_switches:%c,vol_waits%w,fs_reads:%I,fs_writes:%O,sock_recv:%r,sock_send:%s,signals:%k,exit_status:%x,command:%C) + + if [ -x /usr/bin/time ]; then + TIMECMD="/usr/bin/time" + elif [ -x $HOME/swift.time ]; then + TIMECMD="$HOME/swift.time" + else + TIMECMD="" + TIMEARGS="" + fi if [ "$STDIN" == "" ]; then if [ "$SWIFT_GEN_SCRIPTS" != "" ]; then genScripts fi - "$EXEC" "${CMDARGS[@]}" 1>>"$STDOUT" 2>>"$STDERR" + "$TIMECMD" "${TIMEARGS[@]}" "$EXEC" "${CMDARGS[@]}" 1>>"$STDOUT" 2>>"$STDERR" else if [ "$SWIFT_GEN_SCRIPTS" != "" ]; then genScripts fi - "$EXEC" "${CMDARGS[@]}" 1>>"$STDOUT" 2>>"$STDERR" <"$STDIN" + "$TIMECMD" "${TIMEARGS[@]}" "$EXEC" "${CMDARGS[@]}" 1>>"$STDOUT" 2>>"$STDERR" <"$STDIN" fi + TIME_EC=$? + if [ "_$TIMECMD" != _ ]; then + log "$(cat swiftapp.resources)" + fi + sh -c "exit $TIME_EC" checkError $? "Application $EXEC failed with an exit code of $?" else if [ ! -f "$KICKSTART" ]; then From davidk at ci.uchicago.edu Mon Dec 3 16:42:32 2012 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Mon, 3 Dec 2012 16:42:32 -0600 (CST) Subject: [Swift-commit] r6097 - trunk/libexec Message-ID: <20121203224232.C00E89CCC2@svn.ci.uchicago.edu> Author: davidk Date: 2012-12-03 16:42:32 -0600 (Mon, 03 Dec 2012) New Revision: 6097 Modified: trunk/libexec/_swiftwrap Log: Fix for #887 Modified: trunk/libexec/_swiftwrap =================================================================== --- trunk/libexec/_swiftwrap 2012-12-03 22:41:08 UTC (rev 6096) +++ trunk/libexec/_swiftwrap 2012-12-03 22:42:32 UTC (rev 6097) @@ -477,7 +477,7 @@ fi if [ "$KICKSTART" == "" ]; then - TIMEARGS="-o swiftapp.resources -f APP_RESOURCES=real_time:%E,real_secs:%e,kernel_secs:%S,user_secs:%U,percent_cpu:%P,max_rss:%M,avg_rss:%t,avg_tot_vm:%K,avg_priv_data:%D,avg_priv_stack:%p,avg_shared_text:%X,page_size:%Z,major_pgfaults:%F,minor_pgfaults:%R,swaps:%W,invol_context_switches:%c,vol_waits%w,fs_reads:%I,fs_writes:%O,sock_recv:%r,sock_send:%s,signals:%k,exit_status:%x,command:%C" + TIMEARGS=(-o swiftapp.resources -f APP_RESOURCES=real_time:%E,real_secs:%e,kernel_secs:%S,user_secs:%U,percent_cpu:%P,max_rss:%M,avg_rss:%t,avg_tot_vm:%K,avg_priv_data:%D,avg_priv_stack:%p,avg_shared_text:%X,page_size:%Z,major_pgfaults:%F,minor_pgfaults:%R,swaps:%W,invol_context_switches:%c,vol_waits%w,fs_reads:%I,fs_writes:%O,sock_recv:%r,sock_send:%s,signals:%k,exit_status:%x,command:%C) if [ -x /usr/bin/time ]; then TIMECMD="/usr/bin/time" @@ -491,16 +491,18 @@ if [ "$SWIFT_GEN_SCRIPTS" != "" ]; then genScripts fi - eval $TIMECMD $TIMEARGS "$EXEC" "${CMDARGS[@]}" 1>>"$STDOUT" 2>>"$STDERR" + "$TIMECMD" "${TIMEARGS[@]}" "$EXEC" "${CMDARGS[@]}" 1>>"$STDOUT" 2>>"$STDERR" else if [ "$SWIFT_GEN_SCRIPTS" != "" ]; then genScripts fi - eval $TIMECMD $TIMEARGS "$EXEC" "${CMDARGS[@]}" 1>>"$STDOUT" 2>>"$STDERR" <"$STDIN" + "$TIMECMD" "${TIMEARGS[@]}" "$EXEC" "${CMDARGS[@]}" 1>>"$STDOUT" 2>>"$STDERR" <"$STDIN" fi + TIME_EC=$? if [ "_$TIMECMD" != _ ]; then log "$(cat swiftapp.resources)" fi + sh -c "exit $TIME_EC" checkError $? "Application $EXEC failed with an exit code of $?" else if [ ! -f "$KICKSTART" ]; then From swift at ci.uchicago.edu Mon Dec 3 22:40:06 2012 From: swift at ci.uchicago.edu (swift at ci.uchicago.edu) Date: Mon, 3 Dec 2012 22:40:06 -0600 (CST) Subject: [Swift-commit] cog r3528 Message-ID: <20121204044006.4B0AC8D00087@bridled.ci.uchicago.edu> ------------------------------------------------------------------------ r3528 | davidkelly999 | 2012-12-03 22:35:29 -0600 (Mon, 03 Dec 2012) | 2 lines Fix compilation error ------------------------------------------------------------------------ Index: modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/common/AbstractExecutor.java =================================================================== --- modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/common/AbstractExecutor.java (revision 3527) +++ modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/common/AbstractExecutor.java (working copy) @@ -47,12 +47,12 @@ TRIGGERS['<'] = true; } - private File script; - private String stdout, stderr, exitcode, jobid; - private final JobSpecification spec; - private final Task task; - private final ProcessListener listener; - private Job job; + protected File script; + protected String stdout, stderr, exitcode, jobid; + protected final JobSpecification spec; + protected final Task task; + protected final ProcessListener listener; + protected Job job; protected AbstractExecutor(Task task, ProcessListener listener) { this.task = task; From davidk at ci.uchicago.edu Wed Dec 5 14:20:15 2012 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 5 Dec 2012 14:20:15 -0600 (CST) Subject: [Swift-commit] r6098 - SwiftTutorials Message-ID: <20121205202015.039B89D050@svn.ci.uchicago.edu> Author: davidk Date: 2012-12-05 14:20:14 -0600 (Wed, 05 Dec 2012) New Revision: 6098 Added: SwiftTutorials/UofC_2012-11-27-fusion/ Log: Creating fusion version of this tutorial From davidk at ci.uchicago.edu Tue Dec 11 11:43:36 2012 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 11 Dec 2012 11:43:36 -0600 (CST) Subject: [Swift-commit] r6100 - in trunk/tests: language/working language-behaviour/IO Message-ID: <20121211174336.18ECF9CCAA@svn.ci.uchicago.edu> Author: davidk Date: 2012-12-11 11:43:35 -0600 (Tue, 11 Dec 2012) New Revision: 6100 Removed: trunk/tests/language-behaviour/IO/q7.swift trunk/tests/language/working/q7.swift Log: Removing two invalid tests from suite (bug #891) Deleted: trunk/tests/language/working/q7.swift =================================================================== --- trunk/tests/language/working/q7.swift 2012-12-05 20:21:35 UTC (rev 6099) +++ trunk/tests/language/working/q7.swift 2012-12-11 17:43:35 UTC (rev 6100) @@ -1,16 +0,0 @@ -type file {} - -(file t) echo (string s) { - app { - echo s stdout=@filename(t); - } -} - -string outputNames[] = ["one", "two", "three"]; - -file outputFiles[] ; - -foreach f in outputFiles { - f = echo("hello"); -} - Deleted: trunk/tests/language-behaviour/IO/q7.swift =================================================================== --- trunk/tests/language-behaviour/IO/q7.swift 2012-12-05 20:21:35 UTC (rev 6099) +++ trunk/tests/language-behaviour/IO/q7.swift 2012-12-11 17:43:35 UTC (rev 6100) @@ -1,14 +0,0 @@ -type file {} - -app (file t) echo (string s) { - echo s stdout=@filename(t); -} - -string outputNames[]= ["one", "two", "three"]; - -file outputFiles[] ; - -foreach f in outputFiles { - f = echo("hello"); -} - From davidk at ci.uchicago.edu Tue Dec 11 12:03:26 2012 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 11 Dec 2012 12:03:26 -0600 (CST) Subject: [Swift-commit] r6101 - branches/release-0.94/libexec Message-ID: <20121211180326.3CDC69CCAA@svn.ci.uchicago.edu> Author: davidk Date: 2012-12-11 12:03:25 -0600 (Tue, 11 Dec 2012) New Revision: 6101 Modified: branches/release-0.94/libexec/release.txt Log: Update release name Modified: branches/release-0.94/libexec/release.txt =================================================================== --- branches/release-0.94/libexec/release.txt 2012-12-11 17:43:35 UTC (rev 6100) +++ branches/release-0.94/libexec/release.txt 2012-12-11 18:03:25 UTC (rev 6101) @@ -1 +1 @@ -trunk +0.94RC2 From davidk at ci.uchicago.edu Wed Dec 12 12:49:10 2012 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 12 Dec 2012 12:49:10 -0600 (CST) Subject: [Swift-commit] r6102 - branches/release-0.94 Message-ID: <20121212184910.8B64C9CD0C@svn.ci.uchicago.edu> Author: davidk Date: 2012-12-12 12:49:10 -0600 (Wed, 12 Dec 2012) New Revision: 6102 Modified: branches/release-0.94/build.xml Log: slurm-qsub-emulator needs an x bit Modified: branches/release-0.94/build.xml =================================================================== --- branches/release-0.94/build.xml 2012-12-11 18:03:25 UTC (rev 6101) +++ branches/release-0.94/build.xml 2012-12-12 18:49:10 UTC (rev 6102) @@ -115,6 +115,7 @@ + From swift at ci.uchicago.edu Thu Dec 13 14:15:07 2012 From: swift at ci.uchicago.edu (swift at ci.uchicago.edu) Date: Thu, 13 Dec 2012 14:15:07 -0600 (CST) Subject: [Swift-commit] cog r3529 Message-ID: <20121213201507.7B6268D0009D@bridled.ci.uchicago.edu> ------------------------------------------------------------------------ r3529 | hategan | 2012-12-13 14:12:59 -0600 (Thu, 13 Dec 2012) | 1 line fixed block comparator ------------------------------------------------------------------------ Index: modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/BlockQueueProcessor.java =================================================================== --- modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/BlockQueueProcessor.java (revision 3528) +++ modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/BlockQueueProcessor.java (working copy) @@ -437,7 +437,10 @@ public int compare(Block b1, Block b2) { double s1 = b1.sizeLeft(); double s2 = b2.sizeLeft(); - if (s1 < s2) { + if (s1 == s2) { + return 0; + } + else if (s1 < s2) { return -1; } else { From hategan at ci.uchicago.edu Thu Dec 13 17:38:36 2012 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Thu, 13 Dec 2012 17:38:36 -0600 (CST) Subject: [Swift-commit] r6103 - trunk/resources Message-ID: <20121213233836.308AB9CD0A@svn.ci.uchicago.edu> Author: hategan Date: 2012-12-13 17:38:36 -0600 (Thu, 13 Dec 2012) New Revision: 6103 Modified: trunk/resources/swiftscript.g Log: escape "<", ">", and "&" in string literals when compiling Modified: trunk/resources/swiftscript.g =================================================================== --- trunk/resources/swiftscript.g 2012-12-12 18:49:10 UTC (rev 6102) +++ trunk/resources/swiftscript.g 2012-12-13 23:38:36 UTC (rev 6103) @@ -1147,7 +1147,7 @@ | s:STRING_LITERAL { code=template("sConst"); - code.setAttribute("value",quote(s.getText())); + code.setAttribute("value",quote(escape(s.getText()))); } | t:"true" { From hategan at ci.uchicago.edu Thu Dec 13 17:38:53 2012 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Thu, 13 Dec 2012 17:38:53 -0600 (CST) Subject: [Swift-commit] r6104 - trunk/src/org/griphyn/vdl/engine Message-ID: <20121213233853.ADE5F9CD0A@svn.ci.uchicago.edu> Author: hategan Date: 2012-12-13 17:38:53 -0600 (Thu, 13 Dec 2012) New Revision: 6104 Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java Log: escape "<", ">", and "&" in string literals when compiling Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java =================================================================== --- trunk/src/org/griphyn/vdl/engine/Karajan.java 2012-12-13 23:38:36 UTC (rev 6103) +++ trunk/src/org/griphyn/vdl/engine/Karajan.java 2012-12-13 23:38:53 UTC (rev 6104) @@ -1629,7 +1629,7 @@ for (String key : stringInternMap.keySet()) { String variableName = stringInternMap.get(key); StringTemplate st = template("sConst"); - st.setAttribute("innervalue",escapeQuotes(key)); + st.setAttribute("innervalue",escapeQuotesAndMarkup(key)); StringTemplate vt = template("globalConstant"); vt.setAttribute("name",variableName); vt.setAttribute("expr",st); @@ -1661,6 +1661,30 @@ return in.replaceAll("\"", """); } + String escapeQuotesAndMarkup(String in) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < in.length(); i++) { + char c = in.charAt(i); + switch (c) { + case '<': + sb.append("<"); + break; + case '>': + sb.append(">"); + break; + case '"': + sb.append("""); + break; + case '&': + sb.append("&"); + break; + default: + sb.append(c); + } + } + return sb.toString(); + } + public static String normalize(String type) { return org.griphyn.vdl.type.Types.normalize(type); } From wilde at ci.uchicago.edu Mon Dec 17 14:43:23 2012 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Mon, 17 Dec 2012 14:43:23 -0600 (CST) Subject: [Swift-commit] r6105 - SwiftApps/SciColSim Message-ID: <20121217204323.0E44D9CCE6@svn.ci.uchicago.edu> Author: wilde Date: 2012-12-17 14:43:22 -0600 (Mon, 17 Dec 2012) New Revision: 6105 Modified: SwiftApps/SciColSim/Makefile SwiftApps/SciColSim/gengraphs.sh SwiftApps/SciColSim/graphsim.cpp SwiftApps/SciColSim/testgraph.py SwiftApps/SciColSim/trimgraph.sh Log: Updates for graph testing. Modified: SwiftApps/SciColSim/Makefile =================================================================== --- SwiftApps/SciColSim/Makefile 2012-12-13 23:38:53 UTC (rev 6104) +++ SwiftApps/SciColSim/Makefile 2012-12-17 20:43:22 UTC (rev 6105) @@ -2,7 +2,7 @@ ifeq ($(UNAME), Linux) -all: openmp-optimizer graphsim +all: openmp-optimizer graphsim openmptest openmp-optimizer: optimizer.cpp g++ -DP_OPENMP -static -O -fopenmp -I boost_1_47_0 -o openmp-optimizer optimizer.cpp @@ -10,6 +10,9 @@ graphsim: graphsim.cpp g++ -DP_OPENMP -static -pg -O -fopenmp -I boost_1_47_0 -o graphsim graphsim.cpp +openmptest: openmptest.cpp + g++ -DP_OPENMP -static -O -fopenmp -o openmptest openmptest.cpp + clean: @rm -rvf openmp-optimizer @@ -17,11 +20,17 @@ ifeq ($(UNAME), Darwin) -all: openmp-optimizer dispatch-optimizer orig-optimizer +all: openmp-optimizer dispatch-optimizer orig-optimizer graphsim openmptest openmp-optimizer: optimizer.cpp g++ -DP_OPENMP -fopenmp -I boost_1_47_0 -o openmp-optimizer optimizer.cpp +graphsim: graphsim.cpp + g++ -DP_OPENMP -fopenmp -I boost_1_47_0 -g -o graphsim graphsim.cpp + +openmptest: openmptest.cpp + g++ -DP_OPENMP -fopenmp -g -o openmptest openmptest.cpp + dispatch-optimizer: optimizer.cpp g++ -DP_DISPATCH -I boost_1_47_0 -o dispatch-optimizer optimizer.cpp Modified: SwiftApps/SciColSim/gengraphs.sh =================================================================== --- SwiftApps/SciColSim/gengraphs.sh 2012-12-13 23:38:53 UTC (rev 6104) +++ SwiftApps/SciColSim/gengraphs.sh 2012-12-17 20:43:22 UTC (rev 6105) @@ -2,7 +2,8 @@ mkdir -p graph -for s in $(seq 1000 1000 10000); do +# for s in $(seq 1000 1000 10000); do +for s in 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000; do ./trimgraph.sh $s 1.0 > graph/$s.100 ./trimgraph.sh $s 0.1 > graph/$s.10 ./trimgraph.sh $s 0.5 > graph/$s.50 Modified: SwiftApps/SciColSim/graphsim.cpp =================================================================== --- SwiftApps/SciColSim/graphsim.cpp 2012-12-13 23:38:53 UTC (rev 6104) +++ SwiftApps/SciColSim/graphsim.cpp 2012-12-17 20:43:22 UTC (rev 6105) @@ -800,56 +800,65 @@ //============================================================= - void update_probabilities(void){ + void update_probabilities(void){ - //========================= - // Compute sampling probabilities - // first pass: \xi_i,j - for(int i=0; i 0.){ + double bg = 0.; - double k = Dist[i][j]; - if (k >= k_max){ - k = k_max-1; - } + Prob[i][j] = alpha_i*log(min(Rank[i]+1.,Rank[j]+1.)) + + alpha_m*log(max(Rank[i]+1.,Rank[j]+1.)); - bg = beta * log(k/k_max) + gamma * log(1. - k/k_max); + if (Dist[i][j] > 0.){ - } else { - bg = delta; - } + double k = Dist[i][j]; + if (k >= k_max){ + k = k_max-1; + } - Prob[i][j] = exp(Prob[i][j] + bg); - } - } + bg = beta * log(k/k_max) + gamma * log(1. - k/k_max); + } else { + bg = delta; + } - // second pass: sum - double Summa = 0.; + Prob[i][j] = exp(Prob[i][j] + bg); + } + } - for(int i=0; i0. && Final[i][j]>0.){ novel+=1.; +std::cout << "failed:1 novel: " << novel << std::endl; } } } +std::cout << "failed:1 after for\n"; } //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -901,6 +920,7 @@ int n_failed; //, n_check = 0; +std::cout << "failed:0 before for\n"; for(int i=0; i0. && Final[i][j]>0.){ novel+=1.; +std::cout << "failed:0 novel: " << novel << std::endl; + } } } @@ -943,6 +970,7 @@ //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +verbose_level = 2; if (verbose_level == 2){ std::cout << (current_repeat+1) << " epoch=" << (current_epoch+1) @@ -1887,7 +1915,7 @@ double T_start=params2[0], T_end=params2[1], Target_rejection=params2[3], starting_jump=params2[4]; int Annealing_repeats = (int) params2[2]; - print_memory_status(); + // print_memory_status(); #ifdef P_DISPATCH dispatch_group_t group = dispatch_group_create(); Modified: SwiftApps/SciColSim/testgraph.py =================================================================== --- SwiftApps/SciColSim/testgraph.py 2012-12-13 23:38:53 UTC (rev 6104) +++ SwiftApps/SciColSim/testgraph.py 2012-12-17 20:43:22 UTC (rev 6105) @@ -140,7 +140,7 @@ optimizerRepeats = 1 evolveReruns = 1 annealingSteps = 1 - NWorkers = "1" + NWorkers = "2" openmp = "OMP_NUM_THREADS=" + NWorkers operation = "m" # n=normal, m=manual (runs 1 multi_loss call) seed = "" # "123456" @@ -159,8 +159,9 @@ for target in range(startTarget,endTarget,incrTarget): for i in range(optimizerRepeats): args = "rm -f bestdb.txt; " + \ - openmp + " " + app + " 0 0 0 0 0 " + str(target) + " 40000 20 " + str(evolveReruns) + \ - " 2 1 2. 0.01 " + str(annealingSteps) + " 0.3 2.3 0 0 0 0 0 " + operation + " " + NWorkers + " " + seed + \ + openmp + " " + "/usr/bin/time -l " + \ + app + " 0 0 0 0 0 " + str(target) + " 40000 20 " + str(evolveReruns) + \ + " 2 2 2. 0.01 " + str(annealingSteps) + " 0.3 2.3 0 0 0 0 0 " + operation + " " + NWorkers + " " + seed + \ " # >& out.T"+str(target)+".i"+str(i) + "; #mv bestdb.txt best.T" + str(target) + ".i" + str(i) print("\n**** Calling optimizer: "+args+"\n") os.system(args); Modified: SwiftApps/SciColSim/trimgraph.sh =================================================================== --- SwiftApps/SciColSim/trimgraph.sh 2012-12-13 23:38:53 UTC (rev 6104) +++ SwiftApps/SciColSim/trimgraph.sh 2012-12-17 20:43:22 UTC (rev 6105) @@ -3,7 +3,7 @@ vertices=${1:-100} fraction=${2:-1.0} -tmp=$(mktemp) +tmp=$(mktemp -t trimgraph) awk ' NR == 1 { } From wilde at ci.uchicago.edu Mon Dec 17 16:17:26 2012 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Mon, 17 Dec 2012 16:17:26 -0600 (CST) Subject: [Swift-commit] r6106 - SwiftApps/SciColSim Message-ID: <20121217221726.3D15A9CCE6@svn.ci.uchicago.edu> Author: wilde Date: 2012-12-17 16:17:26 -0600 (Mon, 17 Dec 2012) New Revision: 6106 Added: SwiftApps/SciColSim/openmptest.cpp Log: Add openmptest.cpp test program to verify concurrency levels. Added: SwiftApps/SciColSim/openmptest.cpp =================================================================== --- SwiftApps/SciColSim/openmptest.cpp (rev 0) +++ SwiftApps/SciColSim/openmptest.cpp 2012-12-17 22:17:26 UTC (rev 6106) @@ -0,0 +1,103 @@ +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include "unistd.h" + +#include +#include + +//#define N 23000 +#define N 10000 + +float Prob[N][N]; +float Rank[N]; +float Dist[N][N]; + +float alpha_i = 1.0; +float alpha_m = 1.0; +float beta = 1.0; +float gam = 1.0; +float delta = 1.0; +float k_max = 1.0; + +float min(float a, float b) +{ + if(ab) return(a); else return(b); +} + +void update(void){ + + int i, j; + float Summa = 0.; + +printf("Loop 1\n"); + //#pragma omp parallel for private (j) +#pragma omp parallel for default(none) shared( Prob, alpha_i, alpha_m, beta, k_max, gam, delta, Rank, Dist) private(i,j) + for( i=0; i 0.){ + float k = Dist[i][j]; + if (k >= k_max){ + k = k_max-1; + } + bg = beta * log(k/k_max) + gam * log(1. - k/k_max); + } else { + bg = delta; + } + Prob[i][j] = exp(Prob[i][j] + bg); + } + } + +printf("Loop 2\n"); + #pragma omp parallel for private(i) + for(i=0; i Author: wilde Date: 2012-12-17 18:15:14 -0600 (Mon, 17 Dec 2012) New Revision: 6107 Added: SwiftApps/SciColSim/samplegraph.sh Log: add script to downsample the graph Added: SwiftApps/SciColSim/samplegraph.sh =================================================================== --- SwiftApps/SciColSim/samplegraph.sh (rev 0) +++ SwiftApps/SciColSim/samplegraph.sh 2012-12-18 00:15:14 UTC (rev 6107) @@ -0,0 +1,52 @@ +#! /bin/sh + +fraction=${1:-1.0} + +tmp=$(mktemp -t samplegraph) + +awk ' + +function crand() +{ + _cliff_seed = (100 * log(_cliff_seed)) % 1 + if (_cliff_seed < 0) + _cliff_seed = - _cliff_seed + return _cliff_seed +} + +BEGIN { + getmsec="perl -MTime::HiRes=gettimeofday -e \"print int(1000*gettimeofday()).qq(\\n);\"" + getmsec | getline msec + close(getmsec) + _cliff_seed = (msec % 10000) / 10000 + nv=0 +} + +NR == 1 { } + +(NR > 1) && (crand() < fraction) { + if ( $1 in vertices ) { + v1 = vertices[$1] + } + else { + vertices[$1] = v1 = nv++; + } + if ( $2 in vertices ) { + v2 = vertices[$2] + } + else { + vertices[$2] = v2 = nv++; + } + print v1, v2 +} + +END {print nv} + +' fraction=$fraction < big_graph.v01.txt >$tmp + +edges=$(wc -l <$tmp) +vertices=$(tail -1 $tmp) + +echo $vertices $edges +sed -e '$d' <$tmp +rm $tmp Property changes on: SwiftApps/SciColSim/samplegraph.sh ___________________________________________________________________ Added: svn:executable + * From lgadelha at ci.uchicago.edu Wed Dec 19 07:58:29 2012 From: lgadelha at ci.uchicago.edu (lgadelha at ci.uchicago.edu) Date: Wed, 19 Dec 2012 07:58:29 -0600 (CST) Subject: [Swift-commit] r6108 - provenancedb Message-ID: <20121219135831.0805D9CD0C@svn.ci.uchicago.edu> Author: lgadelha Date: 2012-12-19 07:57:43 -0600 (Wed, 19 Dec 2012) New Revision: 6108 Modified: provenancedb/README.asciidoc provenancedb/info-to-runtime provenancedb/prov-init.sql provenancedb/prov-to-sql.sh Log: Update to provenance extraction scripts to match new format of runtime information in wrapper logs. Modified: provenancedb/README.asciidoc =================================================================== --- provenancedb/README.asciidoc 2012-12-18 00:15:14 UTC (rev 6107) +++ provenancedb/README.asciidoc 2012-12-19 13:57:43 UTC (rev 6108) @@ -188,10 +188,15 @@ === Example: MODIS -Run MODIS. +Run MODIS: -------------------------------------- swift modis.swift +-------------------------------------- + +After running MODIS, one can import provenenace information into the database using: + +-------------------------------------- swift-prov-import-all-logs -------------------------------------- @@ -213,8 +218,8 @@ modis.swift | 5483 | 3339 | SUCCESS | 2012-10-26 11:44:59.909-02 | 85.050 -------------------------------------- +List the - -------------------------------------- select * from ancestors('dataset:20121026-1146-jng6bir4:720000001604'); Modified: provenancedb/info-to-runtime =================================================================== --- provenancedb/info-to-runtime 2012-12-18 00:15:14 UTC (rev 6107) +++ provenancedb/info-to-runtime 2012-12-19 13:57:43 UTC (rev 6108) @@ -10,7 +10,7 @@ if [ "X$record" != "X" ] && [ -f $record ] ; then - grep '^RUNTIME_INFO=' $record | sed "s/^RUNTIME_INFO=\(.*\)$/$globalid \1/" + grep '^APP_RESOURCES=' $record | sed "s/^APP_RESOURCES=\(.*\)$/$globalid \1/" else echo no wrapper log for $id >&2 Modified: provenancedb/prov-init.sql =================================================================== --- provenancedb/prov-init.sql 2012-12-18 00:15:14 UTC (rev 6107) +++ provenancedb/prov-init.sql 2012-12-19 13:57:43 UTC (rev 6108) @@ -117,8 +117,31 @@ start_time numeric, duration numeric, final_state varchar(32), - site varchar(256) + site varchar(256), + real_secs numeric, + kernel_secs numeric, + user_secs numeric, + percent_cpu numeric, + max_rss numeric, + avg_rss numeric, + avg_tot_vm numeric, + avg_priv_data numeric, + avg_priv_stack numeric, + avg_shared_text numeric, + page_size numeric, + major_pgfaults numeric, + minor_pgfaults numeric, + swaps numeric, + invol_context_switches numeric, + vol_waits numeric, + fs_reads numeric, + fs_writes numeric, + sock_recv numeric, + sock_send numeric, + signals numeric, + exit_status numeric ); + -- maxrss numeric, -- walltime numeric, -- systime numeric, @@ -291,7 +314,13 @@ ); create view provenance_graph_edge as - select function_call_id as parent, dataset_id as child from dataset_out - union all - select dataset_id as parent, function_call_id as child from dataset_in; + select function_call_id as parent, dataset_id as child + from dataset_out + union all + select dataset_id as parent, function_call_id as child + from dataset_in; +create view script_run_summary as + select id,swift_version,cog_version,final_state, + start_time,duration,script_filename + from script_run; \ No newline at end of file Modified: provenancedb/prov-to-sql.sh =================================================================== --- provenancedb/prov-to-sql.sh 2012-12-18 00:15:14 UTC (rev 6107) +++ provenancedb/prov-to-sql.sh 2012-12-19 13:57:43 UTC (rev 6108) @@ -129,13 +129,31 @@ echo " - Wrapper log resource consumption info." if [ -f runtime.txt ]; then while read execute2_id runtime; do - timestamp=$(echo $runtime | awk -F "," '{print $1}' | awk -F ":" '{print $2}') - cpu_usage=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') - max_phys_mem=$(echo $runtime | awk -F "," '{print $3}' | awk -F ":" '{print $2}') - max_virtual_mem=$(echo $runtime | awk -F "," '{print $4}' | awk -F ":" '{print $2}') - io_read_bytes=$(echo $runtime | awk -F "," '{print $5}' | awk -F ":" '{print $2}') - io_write_bytes=$(echo $runtime | awk -F "," '{print $6}' | awk -F ":" '{print $2}') - echo "INSERT INTO rt_info (app_exec_id, timestamp, cpu_usage, max_phys_mem, max_virt_mem, io_read, io_write) VALUES ('$execute2_id', $timestamp, $cpu_usage, $max_phys_mem, $max_virtual_mem, $io_read_bytes, $io_write_bytes);" >> /tmp/$RUNID.sql + real_secs=$(echo $runtime | awk -F "," '{print $1}' | awk -F ":" '{print $2}') + kernel_secs=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + user_secs=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + percent_cpu=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + max_rss=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + avg_rss=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + avg_tot_vm=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + avg_priv_data=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + avg_priv_stack=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + avg_shared_text=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + page_size=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + major_pgfaults=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + minor_pgfaults=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + swaps=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + invol_context_switches=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + vol_waits=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + fs_reads=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + fs_writes=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + sock_recv=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + sock_send=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + signals=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + exit_status=$(echo $runtime | awk -F "," '{print $2}' | awk -F ":" '{print $2}') + + echo "UPDATE app_exec SET real_secs='$real_secs', kernel_secs='$kernel_secs', user_secs='$user_secs', percent_cpu='$percent_cpu', max_rss='$max_rss', avg_rss='$avg_rss', avg_tot_vm='$avg_tot_vm', avg_priv_data='$avg_priv_data', avg_priv_stack='$avg_priv_stack', avg_priv_stack='$avg_priv_stack', avg_shared_text='$avg_shared_text', page_size='$page_size', major_pgfaults='$major_pgfaults', minor_pgfaults='$minor_pgfaults', swaps='$swaps', invol_context_switches='$invol_context_switches', vol_waits='$vol_waits', fs_reads='$fs_reads', fs_writes='$fs_writes', sock_recv='$sock_recv', sock_send='$sock_send', signals='$signals', exit_status='$exit_status' WHERE app_exec_id='$execute2_id';" + #echo "INSERT INTO rt_info (app_exec_id, timestamp, cpu_usage, max_phys_mem, max_virt_mem, io_read, io_write) VALUES ('$execute2_id', $timestamp, $cpu_usage, $max_phys_mem, $max_virtual_mem, $io_read_bytes, $io_write_bytes);" >> /tmp/$RUNID.sql # for key in $(echo maxrss walltime systime usertime cpu fsin fsout timesswapped socketrecv socketsent majorpagefaults minorpagefaults contextswitchesinv contextswitchesvol); do # value=$(echo $runtime | awk -F "," '{print $1}' | awk -F ":" '{print $2}') From lgadelha at ci.uchicago.edu Wed Dec 19 08:06:35 2012 From: lgadelha at ci.uchicago.edu (lgadelha at ci.uchicago.edu) Date: Wed, 19 Dec 2012 08:06:35 -0600 (CST) Subject: [Swift-commit] r6109 - trunk/libexec Message-ID: <20121219140635.DF9E49CD0C@svn.ci.uchicago.edu> Author: lgadelha Date: 2012-12-19 08:06:35 -0600 (Wed, 19 Dec 2012) New Revision: 6109 Modified: trunk/libexec/_swiftwrap Log: - fixed missing delimiter - removed "command" since it is already in the wrapper log - removed "real_time" since it is the same as "real_secs", in a different format Modified: trunk/libexec/_swiftwrap =================================================================== --- trunk/libexec/_swiftwrap 2012-12-19 13:57:43 UTC (rev 6108) +++ trunk/libexec/_swiftwrap 2012-12-19 14:06:35 UTC (rev 6109) @@ -477,7 +477,7 @@ fi if [ "$KICKSTART" == "" ]; then - TIMEARGS=(-o swiftapp.resources -f APP_RESOURCES=real_time:%E,real_secs:%e,kernel_secs:%S,user_secs:%U,percent_cpu:%P,max_rss:%M,avg_rss:%t,avg_tot_vm:%K,avg_priv_data:%D,avg_priv_stack:%p,avg_shared_text:%X,page_size:%Z,major_pgfaults:%F,minor_pgfaults:%R,swaps:%W,invol_context_switches:%c,vol_waits%w,fs_reads:%I,fs_writes:%O,sock_recv:%r,sock_send:%s,signals:%k,exit_status:%x,command:%C) + TIMEARGS=(-o swiftapp.resources -f APP_RESOURCES=real_secs:%e,kernel_secs:%S,user_secs:%U,percent_cpu:%P,max_rss:%M,avg_rss:%t,avg_tot_vm:%K,avg_priv_data:%D,avg_priv_stack:%p,avg_shared_text:%X,page_size:%Z,major_pgfaults:%F,minor_pgfaults:%R,swaps:%W,invol_context_switches:%c,vol_waits:%w,fs_reads:%I,fs_writes:%O,sock_recv:%r,sock_send:%s,signals:%k,exit_status:%x) if [ -x /usr/bin/time ]; then TIMECMD="/usr/bin/time" From swift at ci.uchicago.edu Wed Dec 19 14:35:26 2012 From: swift at ci.uchicago.edu (swift at ci.uchicago.edu) Date: Wed, 19 Dec 2012 14:35:26 -0600 (CST) Subject: [Swift-commit] cog r3530 Message-ID: <20121219203526.CFE2F8D0009F@bridled.ci.uchicago.edu> ------------------------------------------------------------------------ r3530 | davidkelly999 | 2012-12-19 14:31:15 -0600 (Wed, 19 Dec 2012) | 3 lines Ability to run condor easily in environments with non-shared filesystems (using condor transfer mechanisms for the wrapper scripts and relative paths) New "nonshared" jobtype ------------------------------------------------------------------------ Index: modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/QueuePoller.java =================================================================== --- modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/QueuePoller.java (revision 3529) +++ modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/QueuePoller.java (working copy) @@ -18,7 +18,6 @@ import org.globus.cog.abstraction.impl.scheduler.common.AbstractProperties; import org.globus.cog.abstraction.impl.scheduler.common.AbstractQueuePoller; import org.globus.cog.abstraction.impl.scheduler.common.Job; -import org.globus.cog.abstraction.interfaces.JobSpecification; public class QueuePoller extends AbstractQueuePoller { public static final Logger logger = Logger.getLogger(QueuePoller.class); Index: modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java =================================================================== --- modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java (revision 3529) +++ modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/CondorExecutor.java (working copy) @@ -9,12 +9,8 @@ */ package org.globus.cog.abstraction.impl.scheduler.condor; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.io.Writer; -import java.nio.channels.FileChannel; import java.util.Iterator; import java.util.List; @@ -24,12 +20,10 @@ import org.globus.cog.abstraction.impl.scheduler.common.AbstractProperties; import org.globus.cog.abstraction.impl.scheduler.common.AbstractQueuePoller; import org.globus.cog.abstraction.impl.scheduler.common.Job; -import org.globus.cog.abstraction.impl.scheduler.common.ProcessException; import org.globus.cog.abstraction.impl.scheduler.common.ProcessListener; import org.globus.cog.abstraction.interfaces.FileLocation; import org.globus.cog.abstraction.interfaces.JobSpecification; import org.globus.cog.abstraction.interfaces.Task; -import org.globus.gsi.gssapi.auth.AuthorizationException; public class CondorExecutor extends AbstractExecutor { public static final Logger logger = Logger.getLogger(CondorExecutor.class); @@ -44,86 +38,10 @@ wr.write(arg + String.valueOf(value) + '\n'); } } - - public void start() - throws AuthorizationException, IOException, ProcessException { - File scriptdir = new File("."); - script = File.createTempFile(getName(), ".submit", scriptdir); - if (!logger.isDebugEnabled()) { - script.deleteOnExit(); - } - stdout = spec.getStdOutput() == null ? script.getAbsolutePath() - + ".stdout" : spec.getStdOutput(); - stderr = spec.getStdError() == null ? script.getAbsolutePath() - + ".stderr" : spec.getStdError(); - exitcode = script.getAbsolutePath() + ".exitcode"; - - if (logger.isDebugEnabled()) { - logger.debug("Writing " + getName() + " script to " + script); - } - - String[] cmdline = buildCommandLine(scriptdir, script, exitcode, - stdout, stderr); - - if (logger.isDebugEnabled()) { - logCommandLine(cmdline); - } - Process process = Runtime.getRuntime().exec(cmdline, null, null); - - try { - process.getOutputStream().close(); - } - catch (IOException e) { - } - - try { - int code = process.waitFor(); - if (code != 0) { - String errorText = getOutput(process.getInputStream()) - + getOutput(process.getErrorStream()); - throw new ProcessException("Could not submit job (" - + getProperties().getSubmitCommandName() - + " reported an exit code of " + code + "). " - + errorText); - } - if (logger.isDebugEnabled()) { - logger.debug(getProperties().getSubmitCommandName() - + " done (exit code " + code + ")"); - } - } - catch (InterruptedException e) { - if (logger.isDebugEnabled()) { - logger.debug("Interrupted exception while waiting for " - + getProperties().getSubmitCommandName(), e); - } - if (listener != null) { - listener - .processFailed("The submission process was interrupted"); - } - } - - String output = getOutput(process.getInputStream()); - jobid = parseSubmitCommandOutput(output); - if (logger.isDebugEnabled()) { - logger.debug("Submitted job with id '" + jobid + "'"); - } - - if (jobid.length() == 0) { - String errorText = getOutput(process.getErrorStream()); - if (listener != null) - listener.processFailed("Received empty jobid!\n" + - output + "\n" + errorText); - } - - process.getInputStream().close(); - - getQueuePoller().addJob( - job = createJob(jobid, stdout, spec.getStdOutputLocation(), stderr, - spec.getStdErrorLocation(), exitcode, this)); - } protected void writeScript(Writer wr, String exitcodefile, String stdout, String stderr) throws IOException { boolean grid = false; + boolean nonshared = false; JobSpecification spec = getSpec(); // Handle some predefined jobTypes @@ -145,6 +63,13 @@ wr.write("stream_error = False\n"); wr.write("Transfer_Executable = false\n"); } + else if("nonshared".equals(type)) { + nonshared = true; + wr.write("universe = vanilla\n"); + wr.write("should_transfer_files = YES\n"); + wr.write("when_to_transfer_output = ON_EXIT_OR_EVICT\n"); + wr.write("Transfer_Executable = false\n"); + } else { if(spec.getAttribute("condor.universe") == null) { wr.write("universe = vanilla\n"); @@ -177,23 +102,26 @@ wr.write("\n"); if (spec.getDirectory() != null) { - if(!grid) { - wr.write("initialdir = " + quote(spec.getDirectory()) + "\n"); - } else { + if(grid) { wr.write("remote_initialdir = " + quote(spec.getDirectory()) + "\n"); } + else if(!nonshared) { + wr.write("initialdir = " + quote(spec.getDirectory()) + "\n"); + } } - - String basename[] = spec.getExecutable().split("/"); - FileChannel from = new FileInputStream(spec.getExecutable()).getChannel(); - FileChannel to = new FileOutputStream(basename[basename.length-1]).getChannel(); - to.transferFrom(from, 0, from.size()); - from.close(); - to.close(); spec.getExecutable(); wr.write("executable = " + quote(spec.getExecutable()) + "\n"); List args = spec.getArgumentsAsList(); + String wrapper = args.get(0); + + // Use a relative path to the wrapper script + if(nonshared && args.size() > 1) { + String wrapperSplit[] = args.get(0).split("/"); + String basename = wrapperSplit[wrapperSplit.length-1]; + args.set(0, basename); + } + if (args != null && args.size() > 0) { wr.write("arguments = "); i = args.iterator(); @@ -206,7 +134,14 @@ } wr.write('\n'); - // Handle all condor attributes specified by the user + // Transfer wrapper and remove full path name from executable arguments + if(nonshared) { + if(wrapper != null) { + wr.write("transfer_input_files = " + wrapper + '\n'); + } + } + + // Handle all condor attributes specified by the user for(String a : spec.getAttributeNames()) { if(a != null && a.startsWith("condor.")) { String attributeName[] = a.split("condor."); Index: modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/Properties.java =================================================================== --- modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/Properties.java (revision 3529) +++ modules/provider-localscheduler/src/org/globus/cog/abstraction/impl/scheduler/condor/Properties.java (working copy) @@ -8,12 +8,10 @@ * Created on Oct 20, 2005 */ package org.globus.cog.abstraction.impl.scheduler.condor; - -import org.apache.log4j.Logger; import org.globus.cog.abstraction.impl.scheduler.common.AbstractProperties; public class Properties extends AbstractProperties { - private static Logger logger = Logger.getLogger(Properties.class); + private static final long serialVersionUID = 1L; public static final String PROPERTIES = "provider-condor.properties"; From wilde at ci.uchicago.edu Fri Dec 28 18:38:49 2012 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Fri, 28 Dec 2012 18:38:49 -0600 (CST) Subject: [Swift-commit] r6111 - SwiftApps/SciColSim Message-ID: <20121229003849.B30159CCF8@svn.ci.uchicago.edu> Author: wilde Date: 2012-12-28 18:38:49 -0600 (Fri, 28 Dec 2012) New Revision: 6111 Added: SwiftApps/SciColSim/annealing.osg.swift Log: Save OSG-enabled version as a separate file for time being. Added: SwiftApps/SciColSim/annealing.osg.swift =================================================================== --- SwiftApps/SciColSim/annealing.osg.swift (rev 0) +++ SwiftApps/SciColSim/annealing.osg.swift 2012-12-29 00:38:49 UTC (rev 6111) @@ -0,0 +1,460 @@ +import "math"; +import "colortext"; + +/* + *TODO: + */ + +type file; + +type Res +{ + float loss; + float sdev; + float tavg; + float tsdev; +} + +global boolean FIX_VARIABLES = true; +global int var_fixed[] = [0,0,0,0,0]; +global int Nworkers = @toint(@arg("nworkers","4")); +global int rerunsPerApp= @toint(@arg("rerunsperapp", "100")); + +( float nx ) newx( float x, float dx ) +{ + float r = (random()); + + if (r > 0.5) + { + nx = x + (random())*dx; //Java already returns a float between [0-1] + } + else + { + nx = x - (random())*dx; + } + // tracef("newx(%f,%f)=%f\n",x,dx,nx); +} + +app (file outfile, file loss ) evolve_wget ( string args[], file graph ) +{ + bash "-c" @strcat("wget http://www.ci.uchicago.edu/~davidk/SciColSim/evolve-wrapper.sh; ", + "chmod +x ./evolve-wrapper.sh; ./evolve-wrapper.sh ", @loss, " ", + args[0], " ", args[1], " ", args[2], " ", args[3], " ", args[4], " ", + args[5], " ", args[6], " ", args[7], " ", args[8], " ", args[9], " ", + args[10], " ", args[11], " ", args[12], " ", args[13], " ", args[14], + " ", args[15], " ", args[16], " ", args[17], " ", args[18], " ", + args[19], " ", args[20], " ", args[21], " ", args[22], " ", args[23]) + stdout=@outfile; +} + +app (file outfile, file loss ) evolve_wget_short ( string args[], file graph ) +{ + bash_short "-c" @strcat("wget http://www.ci.uchicago.edu/~davidk/SciColSim/evolve-wrapper.sh; ", + "chmod +x ./evolve-wrapper.sh; ./evolve-wrapper.sh ", @loss, " ", + args[0], " ", args[1], " ", args[2], " ", args[3], " ", args[4], " ", + args[5], " ", args[6], " ", args[7], " ", args[8], " ", args[9], " ", + args[10], " ", args[11], " ", args[12], " ", args[13], " ", args[14], + " ", args[15], " ", args[16], " ", args[17], " ", args[18], " ", + args[19], " ", args[20], " ", args[21], " ", args[22], " ", args[23]) + stdout=@outfile; +} + +app (file outfile, file loss ) evolve_wget_long ( string args[], file graph ) +{ + bash_long "-c" @strcat("wget http://www.ci.uchicago.edu/~davidk/SciColSim/evolve-wrapper.sh; ", + "chmod +x ./evolve-wrapper.sh; ./evolve-wrapper.sh ", @loss, " ", + args[0], " ", args[1], " ", args[2], " ", args[3], " ", args[4], " ", + args[5], " ", args[6], " ", args[7], " ", args[8], " ", args[9], " ", + args[10], " ", args[11], " ", args[12], " ", args[13], " ", args[14], + " ", args[15], " ", args[16], " ", args[17], " ", args[18], " ", + args[19], " ", args[20], " ", args[21], " ", args[22], " ", args[23]) + stdout=@outfile; +} + +app (file outfile, file loss ) evolve ( string args[], file graph ) +{ + evolve @loss args stdout=@outfile; // graph is passed implicitly +} + +app ( file x ) sumloss( file loss[] ) +{ + sumloss @filenames(loss) stdout=@x; +} + +/* + + Program structure: + + main + optimizer_sweep() - formerly, python script + multi_annealing() + multi_loss() + evolve() + sumloss() +*/ + +( file bestfile, file maxfile ) multi_annealing ( string some_out_filename, + float T_start, + float T_end, + float Target_rejection, + int evolve_reruns, + float starting_jump, + float params0[], + float target_innov, + int annealing_cycles ) +{ + int cycle = 10; // const + int NEVOPARAMS = 5; // const - 5 params, alpha 1,m through delta, does not include target_innovation + + float rejection[][]; // [i][j] where i is cycle and j is evolve-parameter (alpha_i, alpha_m, beta, gamma, delta) + float trejection[][]; + + float x[][], dx[][], curr_loss[], curr_sdev[]; + + Res mlres[][]; + + mlres[0][0] = multi_loss( T_start, T_end, annealing_cycles, Target_rejection, starting_jump, 0, 0, params0, target_innov, evolve_reruns ); // FIXME: serves for all evolve-params ??? + tracef( "multi_annealing: AR: initial: %f +- %f\n", mlres[0][0].loss, mlres[0][0].sdev ); + + foreach j in [0:NEVOPARAMS-1] + { + x[0][j] = params0[j]; + dx[0][j] = starting_jump; + rejection[0][j] = 0.0; + curr_loss[j] = mlres[0][0].loss; + curr_sdev[j] = mlres[0][0].sdev; + } + + iterate iter_i // number of annealing cycles + { + int i = iter_i + 1; // i ranges [1:n] in the swift script so that [0] can be the initial condition + + // set new temperature, rejection threshold, and dx values for this cycle + float temperature = T_start*exp( @tofloat( i-1 ) * ( jlog( T_end ) - jlog( T_start ) ) / @tofloat( annealing_cycles ) ); + + tracef( @strcat( "multi_annealing: AR: i=%i ....T = ", color( 3, "%f" ),"\n" ), i, temperature ); + + // On each new "major" cycle within the annealing_cycles (other than the first) set new rejection and dx values + + if ( i %% cycle == 1 && i > 1 ) + { + tracef( "multi_annealing: new cycle at i=%i\n", i ); + tracef( color( Pink, "multi_annealing: AR: New cycle at %i: prev dx[0-4]=[%f %f %f %f %f]\n" ), i, dx[i-1][0], dx[i-1][1], dx[i-1][2], dx[i-1][3], dx[i-1][4] ); + foreach k in [0:NEVOPARAMS-1] + { + float newrejection = rejection[i-1][k] / @tofloat( cycle ); + if ( newrejection > 0.0 ) + { + dx[i][k] = dx[i-1][k] / ( newrejection / Target_rejection ); + // FIXME: re-enable: rejection[i][k]=0.0; + trejection[i][k]=0.0; + } + else + { + dx[i][k] = dx[i-1][k] * 2.0; + // FIXME: re-enable: rejection[i][k]=rejection[i-1][k]; + trejection[i][k]=newrejection; + } + // FIXME: HANGS? : tracef(color(Red,"Recomputed rejection: i=%d k=%d dx[i][k]=%f\n"), i, k, dx[i][k]); + } + tracef( color( Blue, "multi_annealing: AR: New cycle at %i: dx[0-4]=[%f %f %f %f %f]\n" ), i, dx[i][0], dx[i][1], dx[i][2], dx[i][3], dx[i][4] ); + } + else // If not new cycle, set dx[i][*] from previous dx ([i-1]). rejection[i][j] is set later. + { + foreach k in [0:NEVOPARAMS-1] + { + dx[i][k] = dx[i-1][k]; + } + } + + iterate j // Try a new value for each non-fixed param; then write results and accept or reject + { + int curr = ( i * NEVOPARAMS ) + j; + int prev = curr-1; + + if ( /* (!FIX_VARIABLES) || */ ( var_fixed[j] == 0 ) ) { // Adjustable vars + // fixed=1,1,0,0,0: FIXME: FIX_VARIABLES flag has faulty logic but OK when TRUE + float try_x[]; + foreach k in [0:NEVOPARAMS-1] // Select the evolve params to try + { + if ( k < j ) + { + try_x[k] = x[i][k]; // already set x[i][k] + } + else + { + if ( k == j ) + { + try_x[k] = newx(x[i-1][j], dx[i-1][j]); // permute x[i-1][j] + } + else // k > j + { + try_x[k] = x[i-1][k]; // use x[i-1][k] (from prior cycle) + } + } + } + tracef( @strcat( "multi_annealing: AR: ", color( 10,"%f" ), " ", color( 9,"%i" ),"\n" ), try_x[j], j ); + + mlres[i][j] = multi_loss( T_start, T_end, annealing_cycles, Target_rejection, starting_jump, i, j, try_x, target_innov, evolve_reruns ); // do the N evolve()'s, N=evolve_rerusn + + tracef( "multi_annealing: AR: %f +- %f\n", mlres[i][j].loss, mlres[i][j].sdev ); + // Beyond this point, x[] and dx[] are being set for this i,j + + float ALOT = 100000000000.0; // 100,000,000,000. = 10^11 + + if ( mlres[i][j].loss < ALOT ) + { + fprintf( some_out_filename, "N, %fs, %i, %i, %f, %f, |, %i, %f, [, %f, %f, %f, %f, %f, ], %f\n", + mlres[i][j].tavg, i-1, j, dx[i][j], rejection[i][j], @toint(target_innov), mlres[i][j].loss, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4], mlres[i][j].sdev ); // Note i-1 field: print that way to match with C++ output + + // fprintf( "max_dist_swift.txt", color( Red,"multi_annealing: AF: max_dist.txt - tbd\n" ) ); // FIXME: max_dist is global set in evolve() + } + else // does this ever occur? if so did we want to still do the ratio computation above??? + { + fprintf( some_out_filename, "A, %fs, %i, %i, %f, %f, |, %i, %f, [, %f, %f, %f, %f, %f, ], %f\n", + mlres[i][j].tavg, i-1, j, dx[i][j], rejection[i][j], @toint(target_innov), mlres[i][j].loss, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4], mlres[i][j].sdev ); // Note i-1 field: print that way to match with C++ output + + //tracef( "multi_annealing: Loss %f > ALOT at [i][j] = [%d][%d]\n", mlres[i][j].loss, i ,j ); + } + + float ratio = min( 1.0, exp( -( mlres[i][j].loss - curr_loss[prev] ) / temperature ) ); + float r = (random()); //Java already returns a random float between [0.0-1.0] + + tracef("multi_annealing: AR: %f vs %f\n", r, ratio); + + if (r > ratio) // Reject new parameter + { + x[i][j] = x[i-1][j]; + if ( i %% cycle == 1 && i > 1 ) + { + rejection[i][j] = trejection[i][j] + 1.0; // FIXME: triple-check this! + } + else + { + rejection[i][j] = rejection[i-1][j] + 1.0; // FIXME: AR: Is this correct? incr rejection? + } + curr_loss[curr] = curr_loss[prev]; + curr_sdev[curr] = curr_sdev[prev]; + // FIXME: AR: the following prints seem to replicate values in the .cpp version - please clarify. + tracef( "multi_annealing: AR: %i,%i %i Did not accept: %f (%i)\n", i, j, i, try_x[j], j ); + tracef( "multi_annealing: AR: %f %f %f %f %f\n", try_x[0],try_x[1],try_x[2],try_x[3],try_x[4] ); + } + else // Accept new parameter + { + tracef( "multi_annealing: Accepting try_x[j], i=%i j=%i\n",i,j ); + + x[i][j] = try_x[j]; + if ( i %% cycle == 1 && i > 1 ) + { + rejection[i][j] = trejection[i][j]; // FIXME: triple-check this! + } + else + { + rejection[i][j] = rejection[i-1][j]; // FIXME: AR: Is this correct? no incr of rejection? + } + curr_loss[curr] = mlres[i][j].loss; + curr_sdev[curr] = mlres[i][j].sdev; + + tracef( "multi_annealing: Accepting try_x[j], i=%i j=%i try_x[j]=%f\n", i, j, try_x[j] ); + float rj[]; + foreach k in [0:NEVOPARAMS-1] + { + if (k <= j) + { + rj[k] = rejection[i][k]; // Was either set from previous j or just set for this j + } + else + { + rj[k] = rejection[i-1][k]; // Not yet set, use previous + } + } + tracef(@strcat("multi_annealing: AR: [%i][%i] ", color(8,"Rejection counts: "), + color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"), + i, j, rj[0], rj[1], rj[2], rj[3], rj[4]); + tracef(@strcat("multi_annealing: AR: %i ", color(8,"***** Did accept! "), + color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"), + i, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4]); + } + } + else // Fixed Vars + { + x[i][j] = x[i-1][j]; + rejection[i][j] = rejection[i-1][j]; + curr_loss[curr] = curr_loss[prev]; + curr_sdev[curr] = curr_sdev[prev]; + // dx[i][j] not set for fixed vars + } + } until( j == (NEVOPARAMS-1) ); + } until( iter_i == (annealing_cycles-1) ); +} + +(Res r) multi_loss( float t_start, float t_end, int annealing_steps, float t_rejection, float starting_jump, int ci, int cj, float x[], float target_innov, int evolve_reruns ) +{ + tracef("%q\n", x); + file rfile[]; + file ofile[]; // FIXME: to obtain timings and otehr stats + + tracef( "multi_loss: entered: ci=%i cj=%i target_innov=%f evolve_reruns=%i x=%q\n",ci, cj, target_innov,evolve_reruns,x ); + + int appCalls = @toint(@tofloat(evolve_reruns) / @tofloat(rerunsPerApp)); // FIXME: handle fractional issues and rounding etc. For now must divide evenly + + tracef("multi_loss appCalls=%i\n", appCalls); + + foreach i in [1:appCalls] + { // repeats of the evolove() - same as n_reruns + file outfile; // FIXME: map and save in future + string args[] = [ // FIXME: move this to a setargs() function + // alpha_i alpha_m beta gamma delta target_innov + @strcat(x[0]), @strcat(x[1]), @strcat(x[2]), @strcat(x[3]), @strcat(x[4]), @strcat(target_innov), + + // n_epochs n_steps evolve_reruns range + // "40000", "20", @strcat(evolve_reruns), "2", + "40000", "20", @strcat(rerunsPerApp), "2", + + // verbose_level + "1", + + // T_start T_end Annealing_steps Target_rejection Starting_jump + @strcat(t_start), @strcat(t_end), @strcat(annealing_steps), @strcat(t_rejection), @strcat(starting_jump), + + // FREEZE: alpha_i alpha_m beta gamma delta + "0", "0", "0", "0", "0", + + // operation-code:(m,a) Nworkers seed + "m", @strcat(Nworkers), @arg("seed", "0" ) ]; + + file graph <"movie_graph.txt">; + + if(@arg("wget") == "true") { + + // Separate long runs from short runs when longruns option is set + if(@arg("longruns") == "true") { + float mean = @tofloat(@arg("minrange")) + @tofloat(@arg("maxrange")) / 2.0; + if(target_innov <= mean) { + ( outfile, rfile[i] ) = evolve_wget_short( args, graph ); + } + else { + ( outfile, rfile[i] ) = evolve_wget_long( args, graph ); + } + } + + ( outfile, rfile[i] ) = evolve_wget( args, graph ); + } + + else { + ( outfile, rfile[i] ) = evolve( args, graph ); + } + + tracef("multi_loss: i=%i calling evolve, args=%q\n", i, args); + // tracef("multi_loss: after evolve: i=%i %k %k\n", i, outfile, rfile[i]); + } + file sumfile = sumloss(rfile); + r = readData(sumfile); + + tracef("multi_loss: returning: ci=%i cj=%i r.loss=%f r.sdev=%f\n",ci,cj,r.loss,r.sdev); + // file statfile = sumstats(ofile); FIXME: to obtain timings and otehr stats + // s = readStat(statsfile); FIXME: to obtain timings and otehr stats +} + +optimizer_sweep() // Implements logic of python driver script +{ + + int minrange = @toint(@arg("minrange", "58")); + int maxrange = @toint(@arg("maxrange", "59")); + int rangeinc = @toint(@arg("rangeinc", "50")); + + // FIXME: add provision for random priming and random param values when x[i] == -100 (see optimizer.cpp main()) + + int nreps = @toint(@arg("nreps", "1")); + +// file bestfile ; +// file maxfile ; + + foreach target_innov in [minrange:maxrange:rangeinc] + { + foreach rep in [1:nreps] + { + string some_out_filename = @strcat( "best.T", @strcat(target_innov), ".R", @strcat(rep), ".txt" ); + file outfile; // ; + file lossfile; // ; + + ( outfile,lossfile ) = multi_annealing( + some_out_filename, + @tofloat(@arg("tstart", "2.0")), + @tofloat(@arg("tend", "0.01")), + @tofloat(@arg("trejection", "0.3")), + @toint(@arg("evoreruns", "100")), + @tofloat(@arg("startingjump", "2.3")), + [@tofloat(@arg("alphai", "0.0")), @tofloat(@arg("alpham", "0.0")), @tofloat(@arg("beta", "4.0")), @tofloat(@arg("gamma", "50.0")), @tofloat(@arg("delta", "-1.0"))], + @tofloat(target_innov), + @toint(@arg("annealingcycles", "50")) ); + } + } +} + +main() +{ + optimizer_sweep(); +} + +main(); + +/* + + Program structure: + + main + optimizer_sweep() + multi_annealing() + multi_loss() + evolve() + sumloss() + + Example parameter sets: + + for target in range(58,59,50): + for i in range(1): + args="./toptimizer 0 0 4 50 -1 "+target+" 40000 20 75 2 1 2. 0.01 2 0.3 2.3 1 1 1 0 0 m // > out.T"+str(target)+".i"+str(i) + os.system(args); + + string fastargs1[] = [ + "0", "0", "4", "50", "-1", @strcat(target), + "40000", "20", "1000", "2", + "1", + "2.", "0.01", "100", "0.3", "2.3", + "1", "1", "0", "0", "0"]; + string fastargs2[] = [ + "0", "0", "4", "50", "-1", @strcat(target), + "40000", "20", "1000", "2", + "1", + "2.", "0.01", "5", "0.3", "2.3", + "1", "1", "0", "0", "0", "m"]; + string fastargs3[] = [ + "0", "0", "4", "50", "-1", @strcat(target), + "40000", "20", @strcat(repeats), "2", + "1", + "2.", "0.01", "2", "0.3", "2.3", + "1", "1", "0", "0", "0", "m"]; +*/ + +(string args[]) setargs() +{ + // string longargs[] = @strcat("0 0 4 50 -1 ",target," 40000 20 1000 2 1 2. 0.01 100 0.3 2.3 1 1 0 0 0 m"); + + // [alpha_i alpha_m beta gamma delta target_innov + // [n_epochs n_steps n_reruns] [range] + // [verbose_level] + // [T_start T_end Annealing_steps Target_rejection Starting_jump] + // [FREEZE_alpha_i FREEZE_alpha_m FREEZE_beta FREEZE_gamma FREEZE_delta] [operation-code:(m,a) Nworkers] +} + +////////////////// HOLD JUNK + +// tracef(@strcat("multi_annealing: AR: %i ", color(8,"Rejection counts: "), +// color( /* 2 */ 1," %f"), "\n\n"), +// i, rejection[i][j] ); // , rejection[i][1], rejection[i][2], rejection[i][3], rejection[i][4]); +// FIXME: determine correct rejection[] values to avoid hanging: +// tracef(@strcat("multi_annealing: AR: %i ", color(8,"Rejection counts: "), +// color( /* 2 */ 1," %f"), color(7," %f"), color(5," %f"), color(9," %f"), color(6," %f"), "\n\n"), +// rejection[i][0], rejection[i][1], rejection[i][2], rejection[i][3], rejection[i][4]); +// END FIXME From wilde at ci.uchicago.edu Sun Dec 30 13:53:22 2012 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Sun, 30 Dec 2012 13:53:22 -0600 (CST) Subject: [Swift-commit] r6112 - in SwiftApps/SciColSim: . conf Message-ID: <20121230195323.0141C9CCC0@svn.ci.uchicago.edu> Author: wilde Date: 2012-12-30 13:53:21 -0600 (Sun, 30 Dec 2012) New Revision: 6112 Added: SwiftApps/SciColSim/evolve-wrapper.sh Modified: SwiftApps/SciColSim/Makefile SwiftApps/SciColSim/README SwiftApps/SciColSim/TODO SwiftApps/SciColSim/annealing.swift SwiftApps/SciColSim/conf/local.cf SwiftApps/SciColSim/conf/local.xml SwiftApps/SciColSim/gengraphs.sh SwiftApps/SciColSim/optimizer.cpp SwiftApps/SciColSim/sumloss.sh SwiftApps/SciColSim/swiftopt.sh SwiftApps/SciColSim/testopt.py Log: Add dynamic loss-limits and fix std-dev code in optimizer.cpp. Revert swift script to pre-osg version; retain separate osg version. Adjust combine scripts for floating point errors in combining multiple graph-sim (optimizer.cpp) runs. Modified: SwiftApps/SciColSim/Makefile =================================================================== --- SwiftApps/SciColSim/Makefile 2012-12-29 00:38:49 UTC (rev 6111) +++ SwiftApps/SciColSim/Makefile 2012-12-30 19:53:21 UTC (rev 6112) @@ -6,6 +6,7 @@ openmp-optimizer: optimizer.cpp g++ -DP_OPENMP -static -O -fopenmp -I boost_1_47_0 -o openmp-optimizer optimizer.cpp +# g++ -static -O -I boost_1_47_0 -o openmp-optimizer optimizer.cpp #t: t.cpp # g++ -DP_OPENMP -static -O -fopenmp -I boost_1_47_0 -o t t.cpp Modified: SwiftApps/SciColSim/README =================================================================== --- SwiftApps/SciColSim/README 2012-12-29 00:38:49 UTC (rev 6111) +++ SwiftApps/SciColSim/README 2012-12-30 19:53:21 UTC (rev 6112) @@ -246,7 +246,7 @@ -trejection= -evoreruns= - How many times to re-run the evolve.sh app + How many times to re-run the evolve.sh app // MW: # times to rerun evolve() not evolve.sh ??? -startingjump= Controls the dx and/or rejection variable @@ -314,7 +314,7 @@ # 1 multi_loss to initialize # c) 100 Annealing_cycles (serial) # d) 5 repeats (1 per param, serial) of multi_loss: -# e) 1000 to 10000 annealing_repeats (parallel) == multi_loss +# e) 1000 to 10000 annealing_repeats (parallel) == multi_loss # f) evolve() Plots Modified: SwiftApps/SciColSim/TODO =================================================================== --- SwiftApps/SciColSim/TODO 2012-12-29 00:38:49 UTC (rev 6111) +++ SwiftApps/SciColSim/TODO 2012-12-30 19:53:21 UTC (rev 6112) @@ -1,11 +1,12 @@ + --- Questions and Open Issues --- When sampling the graph, we compress the node ids. Is this OK? Same 40K epoch count? Is this really feasible? -What values for otehr loop parameters? +What values for other loop parameters? What sampling? @@ -21,13 +22,53 @@ Graph partitioning? => for greater total parallelism? +*** NEW 12/25/2012: +Code does 1 multi_loss to initialize : what if this returns "ALOT" ? +Should one "alot" among the 1,000 to 10,000 reruns cause the whole batch to be ignored? (because just one causes the entire average to be greater than any possible minimum). + + + x = done, - = in progress - --- Top Prios --- +For Andrey's Dec 2012 campaign: + +[ ] generate test graph set +[ ] make graph file an optimizer parameter +[ ] check state of random number gens for both reprodicbility and diversity +[ ] count number of max_loss exceeded cases for sanity check +[ ] add timer to max_loss exit criter; track seeds that cause max_loss timer or value exceeding for repro testing. +[ ] constrain NUniverses to just those needed for the multiple threaded reruns +[ ] add a time check to ensure the dynamic limiter is kicking in to limit time +[ ] adjust rerunsPerApp to a dynamic value based on a scaling test +[ ] run good scaling tests to see if limiter is working +[ ] run actual annealing runs +[ ] improve output to validate the annealings and graphsims +[ ] do bug runs +[ ] get theresources for above: Beagle, Cloud, etc + + +--- Older notes from graph studies with David: + + +- Runtime, ram, science results (single floating pointer number called loss) for each param +- Params = nodes, edges, and ti +- As edges/nodes increase, time increases +- 1000 osg jobs between 10 seconds and 24 hours +- Example: iterate over ti in units of 100, graph sizes should be +- Automate, return eof when timed out, set max run time +- Ability to see gprof output +- Once with control structure he needs, then one run with large size to show hockey stick +- Generate a table, then generate a graph +- Email uc3 and midway account information + + + +From Jon's work: + [x] Get code in shape for Andrey to do a comparison run between fast .py and .swift runs on his Mac. [-] Get initial tests run on Beagle at scale Modified: SwiftApps/SciColSim/annealing.swift =================================================================== --- SwiftApps/SciColSim/annealing.swift 2012-12-29 00:38:49 UTC (rev 6111) +++ SwiftApps/SciColSim/annealing.swift 2012-12-30 19:53:21 UTC (rev 6112) @@ -35,42 +35,6 @@ // tracef("newx(%f,%f)=%f\n",x,dx,nx); } -app (file outfile, file loss ) evolve_wget ( string args[], file graph ) -{ - bash "-c" @strcat("wget http://www.ci.uchicago.edu/~davidk/SciColSim/evolve-wrapper.sh; ", - "chmod +x ./evolve-wrapper.sh; ./evolve-wrapper.sh ", @loss, " ", - args[0], " ", args[1], " ", args[2], " ", args[3], " ", args[4], " ", - args[5], " ", args[6], " ", args[7], " ", args[8], " ", args[9], " ", - args[10], " ", args[11], " ", args[12], " ", args[13], " ", args[14], - " ", args[15], " ", args[16], " ", args[17], " ", args[18], " ", - args[19], " ", args[20], " ", args[21], " ", args[22], " ", args[23]) - stdout=@outfile; -} - -app (file outfile, file loss ) evolve_wget_short ( string args[], file graph ) -{ - bash_short "-c" @strcat("wget http://www.ci.uchicago.edu/~davidk/SciColSim/evolve-wrapper.sh; ", - "chmod +x ./evolve-wrapper.sh; ./evolve-wrapper.sh ", @loss, " ", - args[0], " ", args[1], " ", args[2], " ", args[3], " ", args[4], " ", - args[5], " ", args[6], " ", args[7], " ", args[8], " ", args[9], " ", - args[10], " ", args[11], " ", args[12], " ", args[13], " ", args[14], - " ", args[15], " ", args[16], " ", args[17], " ", args[18], " ", - args[19], " ", args[20], " ", args[21], " ", args[22], " ", args[23]) - stdout=@outfile; -} - -app (file outfile, file loss ) evolve_wget_long ( string args[], file graph ) -{ - bash_long "-c" @strcat("wget http://www.ci.uchicago.edu/~davidk/SciColSim/evolve-wrapper.sh; ", - "chmod +x ./evolve-wrapper.sh; ./evolve-wrapper.sh ", @loss, " ", - args[0], " ", args[1], " ", args[2], " ", args[3], " ", args[4], " ", - args[5], " ", args[6], " ", args[7], " ", args[8], " ", args[9], " ", - args[10], " ", args[11], " ", args[12], " ", args[13], " ", args[14], - " ", args[15], " ", args[16], " ", args[17], " ", args[18], " ", - args[19], " ", args[20], " ", args[21], " ", args[22], " ", args[23]) - stdout=@outfile; -} - app (file outfile, file loss ) evolve ( string args[], file graph ) { evolve @loss args stdout=@outfile; // graph is passed implicitly @@ -86,315 +50,266 @@ Program structure: main - optimizer_sweep() - formerly, python script - multi_annealing() - multi_loss() - evolve() - sumloss() + optimizer_sweep() - formerly, python script + multi_annealing() + multi_loss() + evolve() + sumloss() */ -( file bestfile, file maxfile ) multi_annealing ( string some_out_filename, - float T_start, - float T_end, - float Target_rejection, - int evolve_reruns, - float starting_jump, - float params0[], - float target_innov, - int annealing_cycles ) +(file bestfile, file maxfile) multi_annealing (string some_out_filename, + float T_start, + float T_end, + float Target_rejection, + int evolve_reruns, + float starting_jump, + float params0[], + float target_innov, + int annealing_cycles) { - int cycle = 10; // const - int NEVOPARAMS = 5; // const - 5 params, alpha 1,m through delta, does not include target_innovation + int cycle = 10; // const + int NEVOPARAMS = 5; // const - 5 params, alpha 1,m through delta, does not include target_innovation - float rejection[][]; // [i][j] where i is cycle and j is evolve-parameter (alpha_i, alpha_m, beta, gamma, delta) - float trejection[][]; + float rejection[][]; // [i][j] where i is cycle and j is evolve-parameter (alpha_i, alpha_m, beta, gamma, delta) + float trejection[][]; - float x[][], dx[][], curr_loss[], curr_sdev[]; + float x[][], dx[][], curr_loss[], curr_sdev[]; - Res mlres[][]; + Res mlres[][]; - mlres[0][0] = multi_loss( T_start, T_end, annealing_cycles, Target_rejection, starting_jump, 0, 0, params0, target_innov, evolve_reruns ); // FIXME: serves for all evolve-params ??? - tracef( "multi_annealing: AR: initial: %f +- %f\n", mlres[0][0].loss, mlres[0][0].sdev ); + mlres[0][0] = multi_loss(T_start, T_end, annealing_cycles, Target_rejection, + starting_jump, 0, 0, params0, target_innov, evolve_reruns ); // FIXME: serves for all evolve-params ??? + tracef( "multi_annealing: AR: initial: %f +- %f\n", mlres[0][0].loss, mlres[0][0].sdev ); - foreach j in [0:NEVOPARAMS-1] - { - x[0][j] = params0[j]; - dx[0][j] = starting_jump; - rejection[0][j] = 0.0; - curr_loss[j] = mlres[0][0].loss; - curr_sdev[j] = mlres[0][0].sdev; - } + foreach j in [0:NEVOPARAMS-1] { + x[0][j] = params0[j]; + dx[0][j] = starting_jump; + rejection[0][j] = 0.0; + curr_loss[j] = mlres[0][0].loss; + curr_sdev[j] = mlres[0][0].sdev; + } - iterate iter_i // number of annealing cycles - { - int i = iter_i + 1; // i ranges [1:n] in the swift script so that [0] can be the initial condition + iterate iter_i { // number of annealing cycles + int i = iter_i + 1; // i ranges [1:n] in the swift script so that [0] can be the initial condition - // set new temperature, rejection threshold, and dx values for this cycle - float temperature = T_start*exp( @tofloat( i-1 ) * ( jlog( T_end ) - jlog( T_start ) ) / @tofloat( annealing_cycles ) ); + // set new temperature, rejection threshold, and dx values for this cycle + float temperature = T_start*exp( @tofloat( i-1 ) * ( jlog( T_end ) - jlog( T_start ) ) / @tofloat( annealing_cycles ) ); - tracef( @strcat( "multi_annealing: AR: i=%i ....T = ", color( 3, "%f" ),"\n" ), i, temperature ); + tracef( @strcat( "multi_annealing: AR: i=%i ....T = ", color( 3, "%f" ),"\n" ), i, temperature ); - // On each new "major" cycle within the annealing_cycles (other than the first) set new rejection and dx values + // On each new "major" cycle within the annealing_cycles (other than the first) set new rejection and dx values - if ( i %% cycle == 1 && i > 1 ) - { - tracef( "multi_annealing: new cycle at i=%i\n", i ); - tracef( color( Pink, "multi_annealing: AR: New cycle at %i: prev dx[0-4]=[%f %f %f %f %f]\n" ), i, dx[i-1][0], dx[i-1][1], dx[i-1][2], dx[i-1][3], dx[i-1][4] ); - foreach k in [0:NEVOPARAMS-1] - { - float newrejection = rejection[i-1][k] / @tofloat( cycle ); - if ( newrejection > 0.0 ) - { - dx[i][k] = dx[i-1][k] / ( newrejection / Target_rejection ); - // FIXME: re-enable: rejection[i][k]=0.0; - trejection[i][k]=0.0; - } - else - { - dx[i][k] = dx[i-1][k] * 2.0; - // FIXME: re-enable: rejection[i][k]=rejection[i-1][k]; + if (i %% cycle == 1 && i > 1) { + tracef( "multi_annealing: new cycle at i=%i\n", i ); + tracef( color( Pink, "multi_annealing: AR: New cycle at %i: prev dx[0-4]=[%f %f %f %f %f]\n" ), + i, dx[i-1][0], dx[i-1][1], dx[i-1][2], dx[i-1][3], dx[i-1][4] ); + foreach k in [0:NEVOPARAMS-1] { + float newrejection = rejection[i-1][k] / @tofloat( cycle ); + if (newrejection > 0.0) { + dx[i][k] = dx[i-1][k] / ( newrejection / Target_rejection ); + // FIXME: re-enable: rejection[i][k]=0.0; + trejection[i][k]=0.0; + } + else { + dx[i][k] = dx[i-1][k] * 2.0; + // FIXME: re-enable: rejection[i][k]=rejection[i-1][k]; trejection[i][k]=newrejection; - } + } // FIXME: HANGS? : tracef(color(Red,"Recomputed rejection: i=%d k=%d dx[i][k]=%f\n"), i, k, dx[i][k]); + } + tracef( color( Blue, "multi_annealing: AR: New cycle at %i: dx[0-4]=[%f %f %f %f %f]\n" ), + i, dx[i][0], dx[i][1], dx[i][2], dx[i][3], dx[i][4] ); + } + else { // If not new cycle, set dx[i][*] from previous dx ([i-1]). rejection[i][j] is set later. + foreach k in [0:NEVOPARAMS-1] { + dx[i][k] = dx[i-1][k]; + } + } + iterate j { // Try a new value for each non-fixed param; then write results and accept or reject + int curr = ( i * NEVOPARAMS ) + j; + int prev = curr-1; + + if ( /* (!FIX_VARIABLES) || */ ( var_fixed[j] == 0 ) ) { // Adjustable vars + // fixed=1,1,0,0,0: FIXME: FIX_VARIABLES flag has faulty logic but OK when TRUE + float try_x[]; + foreach k in [0:NEVOPARAMS-1] { // Select the evolve params to try + if (k < j) { + try_x[k] = x[i][k]; // already set x[i][k] + } + else { + if (k == j) { + try_x[k] = newx(x[i-1][j], dx[i-1][j]); // permute x[i-1][j] } - tracef( color( Blue, "multi_annealing: AR: New cycle at %i: dx[0-4]=[%f %f %f %f %f]\n" ), i, dx[i][0], dx[i][1], dx[i][2], dx[i][3], dx[i][4] ); - } - else // If not new cycle, set dx[i][*] from previous dx ([i-1]). rejection[i][j] is set later. - { - foreach k in [0:NEVOPARAMS-1] - { - dx[i][k] = dx[i-1][k]; + else { // k > j + try_x[k] = x[i-1][k]; // use x[i-1][k] (from prior cycle) } + } } + tracef( @strcat( "multi_annealing: AR: ", color( 10,"%f" ), " ", color( 9,"%i" ),"\n" ), try_x[j], j ); + mlres[i][j] = multi_loss( T_start, T_end, annealing_cycles, Target_rejection, starting_jump, + i, j, try_x, target_innov, evolve_reruns ); // do the N evolve()'s, N=evolve_rerusn + tracef( "multi_annealing: AR: %f +- %f\n", mlres[i][j].loss, mlres[i][j].sdev ); + // Beyond this point, x[] and dx[] are being set for this i,j + float ALOT = 100000000000.0; // 100,000,000,000. = 10^11 + if (mlres[i][j].loss < ALOT) { + fprintf( some_out_filename, "N, %fs, %i, %i, %f, %f, |, %i, %f, [, %f, %f, %f, %f, %f, ], %f\n", + mlres[i][j].tavg, i-1, j, dx[i][j], rejection[i][j], @toint(target_innov), mlres[i][j].loss, + try_x[0], try_x[1], try_x[2], try_x[3], try_x[4], mlres[i][j].sdev ); + // Note i-1 field: print that way to match with C++ output - iterate j // Try a new value for each non-fixed param; then write results and accept or reject - { - int curr = ( i * NEVOPARAMS ) + j; - int prev = curr-1; - - if ( /* (!FIX_VARIABLES) || */ ( var_fixed[j] == 0 ) ) { // Adjustable vars - // fixed=1,1,0,0,0: FIXME: FIX_VARIABLES flag has faulty logic but OK when TRUE - float try_x[]; - foreach k in [0:NEVOPARAMS-1] // Select the evolve params to try - { - if ( k < j ) - { - try_x[k] = x[i][k]; // already set x[i][k] - } - else - { - if ( k == j ) - { - try_x[k] = newx(x[i-1][j], dx[i-1][j]); // permute x[i-1][j] - } - else // k > j - { - try_x[k] = x[i-1][k]; // use x[i-1][k] (from prior cycle) - } - } - } - tracef( @strcat( "multi_annealing: AR: ", color( 10,"%f" ), " ", color( 9,"%i" ),"\n" ), try_x[j], j ); - - mlres[i][j] = multi_loss( T_start, T_end, annealing_cycles, Target_rejection, starting_jump, i, j, try_x, target_innov, evolve_reruns ); // do the N evolve()'s, N=evolve_rerusn - - tracef( "multi_annealing: AR: %f +- %f\n", mlres[i][j].loss, mlres[i][j].sdev ); - // Beyond this point, x[] and dx[] are being set for this i,j - - float ALOT = 100000000000.0; // 100,000,000,000. = 10^11 - - if ( mlres[i][j].loss < ALOT ) - { - fprintf( some_out_filename, "N, %fs, %i, %i, %f, %f, |, %i, %f, [, %f, %f, %f, %f, %f, ], %f\n", - mlres[i][j].tavg, i-1, j, dx[i][j], rejection[i][j], @toint(target_innov), mlres[i][j].loss, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4], mlres[i][j].sdev ); // Note i-1 field: print that way to match with C++ output - - // fprintf( "max_dist_swift.txt", color( Red,"multi_annealing: AF: max_dist.txt - tbd\n" ) ); // FIXME: max_dist is global set in evolve() - } - else // does this ever occur? if so did we want to still do the ratio computation above??? - { - fprintf( some_out_filename, "A, %fs, %i, %i, %f, %f, |, %i, %f, [, %f, %f, %f, %f, %f, ], %f\n", - mlres[i][j].tavg, i-1, j, dx[i][j], rejection[i][j], @toint(target_innov), mlres[i][j].loss, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4], mlres[i][j].sdev ); // Note i-1 field: print that way to match with C++ output - - //tracef( "multi_annealing: Loss %f > ALOT at [i][j] = [%d][%d]\n", mlres[i][j].loss, i ,j ); - } - - float ratio = min( 1.0, exp( -( mlres[i][j].loss - curr_loss[prev] ) / temperature ) ); - float r = (random()); //Java already returns a random float between [0.0-1.0] - - tracef("multi_annealing: AR: %f vs %f\n", r, ratio); - - if (r > ratio) // Reject new parameter - { - x[i][j] = x[i-1][j]; - if ( i %% cycle == 1 && i > 1 ) - { - rejection[i][j] = trejection[i][j] + 1.0; // FIXME: triple-check this! - } - else - { - rejection[i][j] = rejection[i-1][j] + 1.0; // FIXME: AR: Is this correct? incr rejection? - } - curr_loss[curr] = curr_loss[prev]; - curr_sdev[curr] = curr_sdev[prev]; - // FIXME: AR: the following prints seem to replicate values in the .cpp version - please clarify. - tracef( "multi_annealing: AR: %i,%i %i Did not accept: %f (%i)\n", i, j, i, try_x[j], j ); - tracef( "multi_annealing: AR: %f %f %f %f %f\n", try_x[0],try_x[1],try_x[2],try_x[3],try_x[4] ); - } - else // Accept new parameter - { - tracef( "multi_annealing: Accepting try_x[j], i=%i j=%i\n",i,j ); - - x[i][j] = try_x[j]; - if ( i %% cycle == 1 && i > 1 ) - { - rejection[i][j] = trejection[i][j]; // FIXME: triple-check this! - } - else - { - rejection[i][j] = rejection[i-1][j]; // FIXME: AR: Is this correct? no incr of rejection? - } - curr_loss[curr] = mlres[i][j].loss; - curr_sdev[curr] = mlres[i][j].sdev; - - tracef( "multi_annealing: Accepting try_x[j], i=%i j=%i try_x[j]=%f\n", i, j, try_x[j] ); - float rj[]; - foreach k in [0:NEVOPARAMS-1] - { - if (k <= j) - { - rj[k] = rejection[i][k]; // Was either set from previous j or just set for this j - } - else - { - rj[k] = rejection[i-1][k]; // Not yet set, use previous - } - } - tracef(@strcat("multi_annealing: AR: [%i][%i] ", color(8,"Rejection counts: "), - color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"), - i, j, rj[0], rj[1], rj[2], rj[3], rj[4]); - tracef(@strcat("multi_annealing: AR: %i ", color(8,"***** Did accept! "), - color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"), - i, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4]); - } + // fprintf( "max_dist_swift.txt", color( Red,"multi_annealing: AF: max_dist.txt - tbd\n" ) ); + // FIXME: max_dist is global set in evolve() + } + else { // does this ever occur? if so did we want to still do the ratio computation above??? + fprintf( some_out_filename, "A, %fs, %i, %i, %f, %f, |, %i, %f, [, %f, %f, %f, %f, %f, ], %f\n", + mlres[i][j].tavg, i-1, j, dx[i][j], rejection[i][j], @toint(target_innov), mlres[i][j].loss, + try_x[0], try_x[1], try_x[2], try_x[3], try_x[4], mlres[i][j].sdev ); + // Note i-1 field: print that way to match with C++ output + //tracef( "multi_annealing: Loss %f > ALOT at [i][j] = [%d][%d]\n", mlres[i][j].loss, i ,j ); + } + float ratio = min( 1.0, exp( -( mlres[i][j].loss - curr_loss[prev] ) / temperature ) ); + float r = (random()); //Java already returns a random float between [0.0-1.0] + tracef("multi_annealing: AR: %f vs %f\n", r, ratio); + if (r > ratio) { // Reject new parameter + x[i][j] = x[i-1][j]; + if (i %% cycle == 1 && i > 1) { + rejection[i][j] = trejection[i][j] + 1.0; // FIXME: triple-check this! + } + else { + rejection[i][j] = rejection[i-1][j] + 1.0; // FIXME: AR: Is this correct? incr rejection? + } + curr_loss[curr] = curr_loss[prev]; + curr_sdev[curr] = curr_sdev[prev]; + // FIXME: AR: the following prints seem to replicate values in the .cpp version - please clarify. + tracef( "multi_annealing: AR: %i,%i %i Did not accept: %f (%i)\n", i, j, i, try_x[j], j ); + tracef( "multi_annealing: AR: %f %f %f %f %f\n", try_x[0],try_x[1],try_x[2],try_x[3],try_x[4] ); + } + else { // Accept new parameter + tracef( "multi_annealing: Accepting try_x[j], i=%i j=%i\n",i,j ); + x[i][j] = try_x[j]; + if (i %% cycle == 1 && i > 1) { + rejection[i][j] = trejection[i][j]; // FIXME: triple-check this! + } + else { + rejection[i][j] = rejection[i-1][j]; // FIXME: AR: Is this correct? no incr of rejection? + } + curr_loss[curr] = mlres[i][j].loss; + curr_sdev[curr] = mlres[i][j].sdev; + tracef( "multi_annealing: Accepting try_x[j], i=%i j=%i try_x[j]=%f\n", i, j, try_x[j] ); + float rj[]; + foreach k in [0:NEVOPARAMS-1] { + if (k <= j) { + rj[k] = rejection[i][k]; // Was either set from previous j or just set for this j } - else // Fixed Vars - { - x[i][j] = x[i-1][j]; - rejection[i][j] = rejection[i-1][j]; - curr_loss[curr] = curr_loss[prev]; - curr_sdev[curr] = curr_sdev[prev]; - // dx[i][j] not set for fixed vars + else { + rj[k] = rejection[i-1][k]; // Not yet set, use previous } - } until( j == (NEVOPARAMS-1) ); + } + tracef(@strcat("multi_annealing: AR: [%i][%i] ", color(8,"Rejection counts: "), + color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"), + i, j, rj[0], rj[1], rj[2], rj[3], rj[4]); + tracef(@strcat("multi_annealing: AR: %i ", color(8,"***** Did accept! "), + color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"), + i, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4]); + } + } + else {// Fixed Vars + x[i][j] = x[i-1][j]; + rejection[i][j] = rejection[i-1][j]; + curr_loss[curr] = curr_loss[prev]; + curr_sdev[curr] = curr_sdev[prev]; + // dx[i][j] not set for fixed vars + } + } until( j == (NEVOPARAMS-1) ); } until( iter_i == (annealing_cycles-1) ); } -(Res r) multi_loss( float t_start, float t_end, int annealing_steps, float t_rejection, float starting_jump, int ci, int cj, float x[], float target_innov, int evolve_reruns ) +(Res r) multi_loss(float t_start, float t_end, int annealing_steps, float t_rejection, float starting_jump, + int ci, int cj, float x[], float target_innov, int evolve_reruns) { - tracef("%q\n", x); - file rfile[]; - file ofile[]; // FIXME: to obtain timings and otehr stats + tracef("%q\n", x); + file rfile[]; + file ofile[]; // FIXME: to obtain timings and otehr stats - tracef( "multi_loss: entered: ci=%i cj=%i target_innov=%f evolve_reruns=%i x=%q\n",ci, cj, target_innov,evolve_reruns,x ); + tracef( "multi_loss: entered: ci=%i cj=%i target_innov=%f evolve_reruns=%i x=%q\n",ci, cj, target_innov,evolve_reruns,x ); - int appCalls = @toint(@tofloat(evolve_reruns) / @tofloat(rerunsPerApp)); // FIXME: handle fractional issues and rounding etc. For now must divide evenly + int appCalls = @toint(@tofloat(evolve_reruns)/@tofloat(rerunsPerApp)); // FIXME: handle fractional issues and rounding etc. + // For now must divide evenly + tracef("multi_loss appCalls=%i\n", appCalls); - tracef("multi_loss appCalls=%i\n", appCalls); - - foreach i in [1:appCalls] - { // repeats of the evolove() - same as n_reruns - file outfile; // FIXME: map and save in future - string args[] = [ // FIXME: move this to a setargs() function + foreach i in [1:appCalls] { // repeats of the evolove() - same as n_reruns + file outfile; // FIXME: map and save in future + string args[] = [ // FIXME: move this to a setargs() function // alpha_i alpha_m beta gamma delta target_innov @strcat(x[0]), @strcat(x[1]), @strcat(x[2]), @strcat(x[3]), @strcat(x[4]), @strcat(target_innov), - // n_epochs n_steps evolve_reruns range // "40000", "20", @strcat(evolve_reruns), "2", "40000", "20", @strcat(rerunsPerApp), "2", - // verbose_level "1", - - // T_start T_end Annealing_steps Target_rejection Starting_jump - @strcat(t_start), @strcat(t_end), @strcat(annealing_steps), @strcat(t_rejection), @strcat(starting_jump), - + // T_start T_end Annealing_steps Target_rejection Starting_jump + @strcat(t_start), @strcat(t_end), @strcat(annealing_steps), @strcat(t_rejection), @strcat(starting_jump), // FREEZE: alpha_i alpha_m beta gamma delta - "0", "0", "0", "0", "0", + "0", "0", "0", "0", "0", + // operation-code:(m,a) Nworkers seed + "m", @strcat(Nworkers), @arg("seed", "0" ) ]; - // operation-code:(m,a) Nworkers seed - "m", @strcat(Nworkers), @arg("seed", "0" ) ]; + file graph <"movie_graph.txt">; - file graph <"movie_graph.txt">; + (outfile, rfile[i]) = evolve(args, graph); + tracef("multi_loss: i=%i calling evolve, args=%q\n", i, args); + // tracef("multi_loss: after evolve: i=%i %k %k\n", i, outfile, rfile[i]); + } + file sumfile = sumloss(rfile); + r = readData(sumfile); - if(@arg("wget") == "true") { - - // Separate long runs from short runs when longruns option is set - if(@arg("longruns") == "true") { - float mean = @tofloat(@arg("minrange")) + @tofloat(@arg("maxrange")) / 2.0; - if(target_innov <= mean) { - ( outfile, rfile[i] ) = evolve_wget_short( args, graph ); - } - else { - ( outfile, rfile[i] ) = evolve_wget_long( args, graph ); - } - } - - ( outfile, rfile[i] ) = evolve_wget( args, graph ); - } - - else { - ( outfile, rfile[i] ) = evolve( args, graph ); - } - - tracef("multi_loss: i=%i calling evolve, args=%q\n", i, args); - // tracef("multi_loss: after evolve: i=%i %k %k\n", i, outfile, rfile[i]); - } - file sumfile = sumloss(rfile); - r = readData(sumfile); - - tracef("multi_loss: returning: ci=%i cj=%i r.loss=%f r.sdev=%f\n",ci,cj,r.loss,r.sdev); - // file statfile = sumstats(ofile); FIXME: to obtain timings and otehr stats - // s = readStat(statsfile); FIXME: to obtain timings and otehr stats + tracef("multi_loss: returning: ci=%i cj=%i r.loss=%f r.sdev=%f\n",ci,cj,r.loss,r.sdev); + // file statfile = sumstats(ofile); FIXME: to obtain timings and other stats + // s = readStat(statsfile); FIXME: to obtain timings and other stats } optimizer_sweep() // Implements logic of python driver script { - int minrange = @toint(@arg("minrange", "58")); - int maxrange = @toint(@arg("maxrange", "59")); - int rangeinc = @toint(@arg("rangeinc", "50")); + int minrange = @toint(@arg("minrange", "58")); + int maxrange = @toint(@arg("maxrange", "59")); + int rangeinc = @toint(@arg("rangeinc", "50")); - // FIXME: add provision for random priming and random param values when x[i] == -100 (see optimizer.cpp main()) + // FIXME: add provision for random priming and random param values when x[i] == -100 (see optimizer.cpp main()) - int nreps = @toint(@arg("nreps", "1")); + int nreps = @toint(@arg("nreps", "1")); -// file bestfile ; -// file maxfile ; +//file bestfile ; +//file maxfile ; - foreach target_innov in [minrange:maxrange:rangeinc] - { - foreach rep in [1:nreps] - { - string some_out_filename = @strcat( "best.T", @strcat(target_innov), ".R", @strcat(rep), ".txt" ); - file outfile; // ; - file lossfile; // ; + foreach target_innov in [minrange:maxrange:rangeinc] { + foreach rep in [1:nreps] { - ( outfile,lossfile ) = multi_annealing( - some_out_filename, - @tofloat(@arg("tstart", "2.0")), - @tofloat(@arg("tend", "0.01")), - @tofloat(@arg("trejection", "0.3")), - @toint(@arg("evoreruns", "100")), - @tofloat(@arg("startingjump", "2.3")), - [@tofloat(@arg("alphai", "0.0")), @tofloat(@arg("alpham", "0.0")), @tofloat(@arg("beta", "4.0")), @tofloat(@arg("gamma", "50.0")), @tofloat(@arg("delta", "-1.0"))], - @tofloat(target_innov), - @toint(@arg("annealingcycles", "50")) ); - } + string some_out_filename = @strcat( "best.T", @strcat(target_innov), ".R", @strcat(rep), ".txt" ); + file outfile; // ; + file lossfile; // ; + + (outfile,lossfile) = multi_annealing(some_out_filename, + @tofloat(@arg("tstart", "2.0")), + @tofloat(@arg("tend", "0.01")), + @tofloat(@arg("trejection", "0.3")), + @toint(@arg("evoreruns", "100")), + @tofloat(@arg("startingjump", "2.3")), + [ @tofloat(@arg("alphai", "0.0")), + @tofloat(@arg("alpham", "0.0")), + @tofloat(@arg("beta", "4.0")), + @tofloat(@arg("gamma", "50.0")), + @tofloat(@arg("delta", "-1.0")) + ], + @tofloat(target_innov), + @toint(@arg("annealingcycles", "50")) ); } + } } main() { - optimizer_sweep(); + optimizer_sweep(); } main(); Modified: SwiftApps/SciColSim/conf/local.cf =================================================================== --- SwiftApps/SciColSim/conf/local.cf 2012-12-29 00:38:49 UTC (rev 6111) +++ SwiftApps/SciColSim/conf/local.cf 2012-12-30 19:53:21 UTC (rev 6112) @@ -4,6 +4,7 @@ lazy.errors=true status.mode=provider use.provider.staging=false +use.wrapper.staging=false provider.staging.pin.swiftfiles=false #app sumloss=$PWD/../sumloss.sh Modified: SwiftApps/SciColSim/conf/local.xml =================================================================== --- SwiftApps/SciColSim/conf/local.xml 2012-12-29 00:38:49 UTC (rev 6111) +++ SwiftApps/SciColSim/conf/local.xml 2012-12-30 19:53:21 UTC (rev 6112) @@ -1,7 +1,7 @@ - _JOB_THROTTLE_ + .03 10000 _WORK_/local Added: SwiftApps/SciColSim/evolve-wrapper.sh =================================================================== --- SwiftApps/SciColSim/evolve-wrapper.sh (rev 0) +++ SwiftApps/SciColSim/evolve-wrapper.sh 2012-12-30 19:53:21 UTC (rev 6112) @@ -0,0 +1,42 @@ +#!/bin/bash -x + +crash() +{ + MSG=$1 + echo ${MSG} >&2 + exit 1 +} + +launchDirectory=$PWD +echo Viewing first input +echo Arguments are $@ + +# Verify WN_TMP is defined +if [ -z "$OSG_WN_TMP" ]; then + crash "OSG_WN_TMP is undefined" +fi + +# Verify engage subdirectory of OSG_WN_TMP +mkdir -p $OSG_WN_TMP/engage +if [ ! -d "$OSG_WN_TMP/engage" ]; then + crash "OSG_WN_TMP/engage does not exist" +fi + +tmpDirectory=`mktemp -d $OSG_WN_TMP/engage/SciColSim.XXXXXX` +cd $tmpDirectory + +# Retrieve software +wget http://www.ci.uchicago.edu/~davidk/SciColSim/evolve.sh +chmod +x evolve.sh +wget http://www.ci.uchicago.edu/~davidk/SciColSim/openmp-optimizer +chmod +x openmp-optimizer +wget http://www.ci.uchicago.edu/~davidk/SciColSim/movie_graph.txt + +# Run evolve +mkdir -p $( dirname $1) +./evolve.sh "$@" +cp $1 $launchDirectory/$( dirname $1 ) + +# Finish +cd $launchDirectory +rm -rf $tmpDirectory Modified: SwiftApps/SciColSim/gengraphs.sh =================================================================== --- SwiftApps/SciColSim/gengraphs.sh 2012-12-29 00:38:49 UTC (rev 6111) +++ SwiftApps/SciColSim/gengraphs.sh 2012-12-30 19:53:21 UTC (rev 6112) @@ -2,21 +2,8 @@ mkdir -p graph -# for s in $(seq 1000 1000 10000); do -for s in 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000; do - ./trimgraph.sh $s 1.0 > graph/$s.100 - ./trimgraph.sh $s 0.1 > graph/$s.10 - ./trimgraph.sh $s 0.5 > graph/$s.50 +for p in .001 .002 .003 .004 .005 .006 .007 .008 .009 .010; do + for ((i=0;i<10;i++)); do + ./samplegraph.sh $p > g/bg${p}.${i} + done done - -# Runtime, ram, science results (single floating pointer number called loss) for each param -# Params = nodes, edges, and ti -# As edges/nodes increase, time increases -# 1000 osg jobs between 10 seconds and 24 hours -# Example: iterate over ti in units of 100, graph sizes should be -# Automate, return eof when timed out, set max run time -# Ability to see gprof output -# Once with control structure he needs, then one run with large size to show hockey stick -# Generate a table, then generate a graph -# Email uc3 and midway account information - Modified: SwiftApps/SciColSim/optimizer.cpp =================================================================== --- SwiftApps/SciColSim/optimizer.cpp 2012-12-29 00:38:49 UTC (rev 6111) +++ SwiftApps/SciColSim/optimizer.cpp 2012-12-30 19:53:21 UTC (rev 6112) @@ -11,7 +11,7 @@ #define MAXNworkers 24 int Nworkers=MAXNworkers; -#define NUniverse 240 +#define NUniverse 24 // Add operation code to enable existing code to be used at lower level from Swift scripts: @@ -71,8 +71,6 @@ #define FIX_VARIABLES 1 -#define MAX_LOSS 160 - using namespace boost; using namespace std; using namespace boost::numeric::ublas; @@ -98,6 +96,7 @@ typedef graph_traits < graph_t >::vertex_descriptor vertex_descriptor; typedef graph_traits < graph_t >::edge_descriptor edge_descriptor; +double max_loss = -1.0; // intialized to "unset"; set by first Universe constructor to run. //================================================ string strDouble(double number) @@ -262,8 +261,8 @@ int current_epoch; double current_loss; - int current_repeat; - double current_novelty; + int current_repeat; + double current_novelty; int mode_identify_failed; int verbose_level; // 0 is silent, higher is more @@ -300,7 +299,22 @@ base_generator_type gene(42u); generator = gene; - generator.seed(static_cast(std::time(0))); +// generator.seed(static_cast(std::time(0))); + + + if ( initSeed != 0.0 ) { + generator.seed(static_cast(initSeed)); + } + else { + timeval t; + gettimeofday(&t, NULL); + generator.seed(static_cast(t.tv_usec)); + } + + + + + boost::uniform_real<> uni_d(0,1); uni_dist = uni_d; @@ -490,8 +504,7 @@ } } } - - + if(max_loss <= 0.0) set_max_loss(N_nodes, M_edges, TargetNovelty); } @@ -992,6 +1005,7 @@ void evolve_to_target_and_save(int istart, int iend, double* storage, int* counters){ double ALOT=100000000000.; + double ratio = 0.0; int check = 0; @@ -1001,82 +1015,25 @@ for(int i=0; i< N_epochs && current_novelty < TargetNovelty; i++){ - if(ratio < max_loss_value((int)TargetNovelty)){ + if(ratio < max_loss){ update_world(); } else{ - check = 1; + cout << "k=" << k << " i=" << i << " ratio=" << ratio << " max_loss=" << max_loss << endl; break; } ratio = current_loss/current_novelty; } - if( check ){ - storage[k]=ALOT; - } - else{ + if( ratio < max_loss ) storage[k]=current_loss/current_novelty; - } + else + storage[k]=ALOT; counters[k]=1; - reset_world(); } - } //============================================== - double Omax_loss_value(int tn){ - - if( tn == 58 ) return 128.286; - else if( tn == 108 ) return 131.866; - else if( tn == 158 ) return 135.551; - else if( tn == 208 ) return 139.694; - else if( tn == 258 ) return 144.163; - else if( tn == 308 ) return 148.967; - else if( tn == 358 ) return 154.201; - else if( tn == 408 ) return 159.962; - else if( tn == 458 ) return 166.441; - else if( tn == 508 ) return 173.655; - else if( tn == 558 ) return 181.921; - else if( tn == 608 ) return 191.246; - else if( tn == 658 ) return 202.150; - else if( tn == 708 ) return 215.197; - else if( tn == 758 ) return 202.150; // Verify with Andrey. Same as TargetNovelty of 658 - else if( tn == 808 ) return 251.698; - else if( tn == 858 ) return 279.201; - else if( tn == 908 ) return 320.112; - else if( tn == 958 ) return 394.774; - else if( tn == 1008 ) return 1052.38; // Huge number here. Why? - else return 10000.; /* Pray that this does not occur. Ask Andrey what to do */ - } - double max_loss_value(int tn){ - - switch(tn) { - case 58: return 128.286; - case 108: return 131.866; - case 158: return 135.551; - case 208: return 139.694; - case 258: return 144.163; - case 308: return 148.967; - case 358: return 154.201; - case 408: return 159.962; - case 458: return 166.441; - case 508: return 173.655; - case 558: return 181.921; - case 608: return 191.246; - case 658: return 202.150; - case 708: return 215.197; - case 758: return 202.150; // Verify with Andrey. Same as TargetNovelty of 658 - case 808: return 251.698; - case 858: return 279.201; - case 908: return 320.112; - case 958: return 394.774; - case 1008: return 1052.38; // Huge number here. Why? - default: return 10000.; /* Pray that this does not occur. Ask Andrey what to do */ - } - } - - - //============================================== int get_reruns(void){ return N_repeats; } @@ -1185,140 +1142,53 @@ return 0; } -#ifdef notdef - //================================================================= - void try_annealing(double starting_jump, int iterations, - double temp_start, double temp_end, double target_rejection){ +//-------- - double dx[5]={0.,0.,0.,0.,0}; - double x[5]={0.,0.,0.,0.,0}; - double rejection[5]={0., 0., 0., 0., 0.}; - double curr_x, curr_err, x_tmp; - double temperature; - double ratio, r; - int cycle=10; - boost::variate_generator > uni(generator, uni_dist); +void set_max_loss(long long v, long long e, long long t) { - // set up parameter for annealing + cout << "set_max_loss v=" << v << " e=" << e << " t=" << t << " max_loss=" << max_loss << endl; - x[0]=alpha_i; - x[1]=alpha_m; - x[2]=beta; - x[3]=gamma; - x[4]=delta; + // Based on formulas from random_analytical.pdf - for(int i=0;i<5;i++){ - dx[i] = starting_jump; - } + double sum, ERLt, VarRLt; - // establish the current value + // (9): E[RLt] = (1/t) * SUM(i=0 to T of: (V*(V-1) / (2 * (E-i)) - //.......................................... - evolve_to_target(); - std::cout << CumulativeRelativeLoss << " +- " << CRLsquare << std::endl; + sum = 0; + for(int i=0;i ratio){ - - std::cout << string_wrap(id, 4) <<" "<< (i+1) << ","<< (j) - <<" "<< (i+1) << " Did not accept " - << x_tmp << "(" << j << ")" << std::endl; - std::cout << alpha_i << " "<< alpha_m << " " - << beta << " " << gamma << " " - << delta << " " << std::endl; - set_parameter(x[j], j); - CumulativeRelativeLoss = 0; - CRLsquare = 0; - - rejection[j]+=1.; - } - - else { - - curr_x = CumulativeRelativeLoss; - curr_err = CRLsquare; - x[j] = x_tmp; - CumulativeRelativeLoss = 0; - CRLsquare = 0; - std::cout << (i+1) << string_wrap((string) " Rejection counts: ", 8) - << wrap_double(rejection[0],2) - << " "<< wrap_double(rejection[1], 7) << " " - << wrap_double(rejection[2],5) << " " << wrap_double(rejection[2],9) << " " - << wrap_double(rejection[4],6) << " " - << std::endl << std::endl; - - std::cout << string_wrap(id, 4) <<" "<< (i+1) <<","<< (j) - <<" " - << string_wrap((string) "***** Did accept! ", 3) - << wrap_double(alpha_i,2) - << " "<< wrap_double(alpha_m, 7) << " " - << wrap_double(beta,5) << " " - << wrap_double(gamma,9) << " " - << wrap_double(delta,6) << " " - << std::endl << std::endl; - - } - //........................................................ - - } - - } - + sum = 0; + for(int i=0;i> swift.out 2>&1 -tc.file tc.data -sites.file $1 -config cf annealing.swift -e33="$escapecode" \ \ -minrange=$min_target_innovation \ -maxrange=$max_target_innovation \ @@ -78,7 +78,7 @@ cp params/$paramfile $rundir/paramfile sed -e '/^[[:space:]]*\(#.*\)*$/d' -e 's/#.*//' -e 's/ */=/' -e 's/^/export /' $rundir/params.annealing source $rundir/params.annealing -swift=../swift/bin/swift # relative to runNNN/ dirs +#swift=../swift/bin/swift # relative to runNNN/ dirs echo Optimization $rundir: site=$execsite paramfile=$paramfile # Report an error if configuration files are missing @@ -129,13 +129,14 @@ # Run gensites if [ ! "$USE_SCS" == 1 ]; then cp ../conf/$execsite.cf cf - SWIFT_HOME=../swift/bin ../swift/bin/gensites -p ../conf/$execsite.cf ../conf/$execsite.xml > $execsite.xml + # SWIFT_HOME=../swift/bin ../swift/bin/gensites -p ../conf/$execsite.cf ../conf/$execsite.xml > $execsite.xml + gensites -p ../conf/$execsite.cf ../conf/$execsite.xml > $execsite.xml fi echo "Run dir=$rundir" >> ABOUT echo "Work dir=$WORK" >> ABOUT echo "Total jobs=$total_jobs" >> ABOUT -echo "Run Command: SWIFT_HEAP_MAX=$ram SWIFT_LIB=.. $swift >> swift.out 2>&1 -tc.file tc.data -sites.file $execsite.xml -config cf annealing.swift -minrange=$min_target_innovation -maxrange=$max_target_innovation-rangeinc=$target_innovation_increment -nreps=$annealing_repeats -annealingcycles=$annealing_cycles -evoreruns=$evolve_reruns -alphai=$alpha_i -alpham=$alpha_m -beta=$beta -gamma=$gamma -delta=$delta -nworkers=$nworkers -rerunsperapp=$reruns_per_opt_invocation -e33="$escapecode"" >> ABOUT +echo "Run Command: SWIFT_HEAP_MAX=$ram SWIFT_LIB=.. swift >> swift.out 2>&1 -tc.file tc.data -sites.file $execsite.xml -config cf annealing.swift -minrange=$min_target_innovation -maxrange=$max_target_innovation-rangeinc=$target_innovation_increment -nreps=$annealing_repeats -annealingcycles=$annealing_cycles -evoreruns=$evolve_reruns -alphai=$alpha_i -alpham=$alpha_m -beta=$beta -gamma=$gamma -delta=$delta -nworkers=$nworkers -rerunsperapp=$reruns_per_opt_invocation -e33="$escapecode"" >> ABOUT if [ _$dryrun != _ ]; then exit 0 Modified: SwiftApps/SciColSim/testopt.py =================================================================== --- SwiftApps/SciColSim/testopt.py 2012-12-29 00:38:49 UTC (rev 6111) +++ SwiftApps/SciColSim/testopt.py 2012-12-30 19:53:21 UTC (rev 6112) @@ -11,8 +11,7 @@ #paramset="default" paramset="mw2" -#paramset="VERYFASTTEST" -#paramset="VERYFASTTEST" +verboseLevel = "1" print("Running with parameter set " + paramset + "\n\n"); @@ -112,21 +111,25 @@ openmp = "OMP_NUM_THREADS=" + NWorkers operation = "n" # n=normal, m=manual (runs 1 multi_loss call) seed = "1234567" - app = "./openmp-optimizer"; + app = "./openmp-optimizer" elif paramset == "mw2": # Timing TEST PARAMETERS by Mike startTarget = 58 - endTarget = 209 + endTarget = 59 incrTarget = 50 optimizerRepeats = 1 evolveReruns = 240 + evolveReruns = 8 annealingSteps = 1 - NWorkers = "8" + NWorkers = "1" openmp = "OMP_NUM_THREADS=" + NWorkers + openmp = "" + operation = "m" # n=normal, m=manual (runs 1 multi_loss call) seed = "123456" - app = "./openmp-optimizer"; + app = "./openmp-optimizer" + verboseLevel = "1" # Ensure we dont pass new parameters to original optimizer versions # (but they would be ignored) @@ -142,7 +145,7 @@ for i in range(optimizerRepeats): args = "rm -f bestdb.txt; " + \ openmp + " " + app + " 0 0 0 0 0 " + str(target) + " 40000 20 " + str(evolveReruns) + \ - " 2 1 2. 0.01 " + str(annealingSteps) + " 0.3 2.3 0 0 0 0 0 " + operation + " " + NWorkers + " " + seed + \ + " 2 " + verboseLevel + " 2. 0.01 " + str(annealingSteps) + " 0.3 2.3 0 0 0 0 0 " + operation + " " + NWorkers + " " + seed + \ " >& out.T"+str(target)+".i"+str(i) + "; #mv bestdb.txt best.T" + str(target) + ".i" + str(i) print("\n**** Calling optimizer: "+args+"\n") os.system(args); From wilde at ci.uchicago.edu Sun Dec 30 13:55:18 2012 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Sun, 30 Dec 2012 13:55:18 -0600 (CST) Subject: [Swift-commit] r6113 - in SwiftApps/SciColSim: conf params Message-ID: <20121230195518.DF20E9CCC0@svn.ci.uchicago.edu> Author: wilde Date: 2012-12-30 13:55:18 -0600 (Sun, 30 Dec 2012) New Revision: 6113 Added: SwiftApps/SciColSim/conf/midway01.cf SwiftApps/SciColSim/conf/midway01.xml SwiftApps/SciColSim/params/ARtest03 Log: add new configs and params. Added: SwiftApps/SciColSim/conf/midway01.cf =================================================================== --- SwiftApps/SciColSim/conf/midway01.cf (rev 0) +++ SwiftApps/SciColSim/conf/midway01.cf 2012-12-30 19:55:18 UTC (rev 6113) @@ -0,0 +1,11 @@ +wrapperlog.always.transfer=true +sitedir.keep=true +execution.retries=0 +lazy.errors=false +status.mode=provider +use.provider.staging=false +use.wrapper.staging=false +provider.staging.pin.swiftfiles=false + +#app local sumloss=$PWD/../sumloss.sh +#app midway01 evolve=$PWD/../evolve.sh Added: SwiftApps/SciColSim/conf/midway01.xml =================================================================== --- SwiftApps/SciColSim/conf/midway01.xml (rev 0) +++ SwiftApps/SciColSim/conf/midway01.xml 2012-12-30 19:55:18 UTC (rev 6113) @@ -0,0 +1,64 @@ + + + + + 0.09 + 10000 + + _WORK_/local + + + + + + + KEEP + + 16 + 16 + DEBUG + _WORK_/workers + 100 + 100 + 1800 + 00:05:00 + 20 + 1 + 1 + sandyb + + 4.00 + 10000 + + + _WORK_/beagle + + + + + + \ No newline at end of file Added: SwiftApps/SciColSim/params/ARtest03 =================================================================== --- SwiftApps/SciColSim/params/ARtest03 (rev 0) +++ SwiftApps/SciColSim/params/ARtest03 2012-12-30 19:55:18 UTC (rev 6113) @@ -0,0 +1,18 @@ + +min_target_innovation 58 # starting target innovation value to try +max_target_innovation 59 # stops before this target innovation value +target_innovation_increment 50 # increment target innovation by this amount + +annealing_repeats 1 # times to repeate the entire optimization process for each target_innovation +annealing_cycles 10 # times to perform the simulated annealing loop for all non-fixed parameters + +evolve_reruns 32 # times to perform evolve_to_target_and_save() (objective function - is batched) +nworkers 16 # number of parallel threads (cores) to use per invocation of C++ optimizer +reruns_per_opt_invocation 16 # reruns_per_opt_invocation mod nworkers must == 0 !!! <=== NOTE WELL !!! + +alpha_i 0.0 # 5 evolve() parameters: must be decimal values !!! +alpha_m 0.0 # alpha_i and alpha_m are fixed for now +beta 0.0 # rest are varied by the optimization process +gamma 0.0 +delta 0.0 + From swift at ci.uchicago.edu Sun Dec 30 21:20:06 2012 From: swift at ci.uchicago.edu (swift at ci.uchicago.edu) Date: Sun, 30 Dec 2012 21:20:06 -0600 (CST) Subject: [Swift-commit] cog r3531 Message-ID: <20121231032006.DDC8B8D00081@bridled.ci.uchicago.edu> ------------------------------------------------------------------------ r3531 | hategan | 2012-12-30 21:17:41 -0600 (Sun, 30 Dec 2012) | 1 line added flag to disable idle block cleanup ------------------------------------------------------------------------ Index: modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/BlockQueueProcessor.java =================================================================== --- modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/BlockQueueProcessor.java (revision 3530) +++ modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/BlockQueueProcessor.java (working copy) @@ -361,6 +361,12 @@ * */ protected void removeIdleBlocks() { + + if (settings.getDisableIdleBlockCleanup()) { + System.out.println("Idle block cleanup disabled"); + return; + } + ArrayList sorted; synchronized (blocks) { Index: modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/Settings.java =================================================================== --- modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/Settings.java (revision 3530) +++ modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/Settings.java (working copy) @@ -50,7 +50,7 @@ "ppn", "ldLibraryPath", "workerCopies", "directory", "useHashBang", "providerAttributes", "parallelism", "pe", - "coresPerNode"}; + "coresPerNode", "disableIdleBlockCleanup" }; /** * The maximum number of blocks that can be active at one time @@ -156,6 +156,8 @@ * A pass-through setting for SGE, parallel environment */ private String pe; + + private boolean disableIdleBlockCleanup = false; public Settings() { hook = new Hook(); @@ -564,6 +566,14 @@ public void setUseHashBang(String uhb) { this.useHashBang = uhb; } + + public void setDisableIdleBlockCleanup(boolean disableIdleBlockCleanup) { + this.disableIdleBlockCleanup = disableIdleBlockCleanup; + } + + public boolean getDisableIdleBlockCleanup() { + return disableIdleBlockCleanup; + } public void set(String name, String value) throws IllegalArgumentException { From swift at ci.uchicago.edu Sun Dec 30 22:10:04 2012 From: swift at ci.uchicago.edu (swift at ci.uchicago.edu) Date: Sun, 30 Dec 2012 22:10:04 -0600 (CST) Subject: [Swift-commit] cog r3532 Message-ID: <20121231041005.9D4608D00081@bridled.ci.uchicago.edu> ------------------------------------------------------------------------ r3532 | hategan | 2012-12-30 22:07:18 -0600 (Sun, 30 Dec 2012) | 1 line removed debugging message ------------------------------------------------------------------------ Index: modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/BlockQueueProcessor.java =================================================================== --- modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/BlockQueueProcessor.java (revision 3531) +++ modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/job/manager/BlockQueueProcessor.java (working copy) @@ -363,7 +363,6 @@ protected void removeIdleBlocks() { if (settings.getDisableIdleBlockCleanup()) { - System.out.println("Idle block cleanup disabled"); return; } From swift at ci.uchicago.edu Mon Dec 31 18:50:06 2012 From: swift at ci.uchicago.edu (swift at ci.uchicago.edu) Date: Mon, 31 Dec 2012 18:50:06 -0600 (CST) Subject: [Swift-commit] cog r3534 Message-ID: <20130101005006.D6BAA8D00081@bridled.ci.uchicago.edu> ------------------------------------------------------------------------ r3534 | hategan | 2012-12-31 18:46:00 -0600 (Mon, 31 Dec 2012) | 1 line removed dependency on gt4 provider ------------------------------------------------------------------------ Index: modules/abstraction/dependencies.xml =================================================================== --- modules/abstraction/dependencies.xml (revision 3533) +++ modules/abstraction/dependencies.xml (working copy) @@ -10,10 +10,6 @@ - - - - From wilde at ci.uchicago.edu Sat Dec 22 22:33:23 2012 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Sun, 23 Dec 2012 04:33:23 -0000 Subject: [Swift-commit] r6110 - SwiftApps/SciColSim Message-ID: <20121223043322.747039CD0C@svn.ci.uchicago.edu> Author: wilde Date: 2012-12-22 22:33:21 -0600 (Sat, 22 Dec 2012) New Revision: 6110 Added: SwiftApps/SciColSim/maxloss.cpp SwiftApps/SciColSim/maxloss.py SwiftApps/SciColSim/maxloss_ar.py Modified: SwiftApps/SciColSim/Makefile SwiftApps/SciColSim/TODO SwiftApps/SciColSim/graphsim.cpp SwiftApps/SciColSim/samplegraph.sh SwiftApps/SciColSim/testgraph.py Log: Development snapshot. Test programs for dynamic max-loss; fine-grained OpenMP of graphsim; revised graph sampler. Modified: SwiftApps/SciColSim/Makefile =================================================================== --- SwiftApps/SciColSim/Makefile 2012-12-19 14:06:35 UTC (rev 6109) +++ SwiftApps/SciColSim/Makefile 2012-12-23 04:33:21 UTC (rev 6110) @@ -7,8 +7,11 @@ openmp-optimizer: optimizer.cpp g++ -DP_OPENMP -static -O -fopenmp -I boost_1_47_0 -o openmp-optimizer optimizer.cpp +#t: t.cpp +# g++ -DP_OPENMP -static -O -fopenmp -I boost_1_47_0 -o t t.cpp + graphsim: graphsim.cpp - g++ -DP_OPENMP -static -pg -O -fopenmp -I boost_1_47_0 -o graphsim graphsim.cpp + g++ -DP_OPENMP -static -pg -O2 -fopenmp -I boost_1_47_0 -o graphsim graphsim.cpp openmptest: openmptest.cpp g++ -DP_OPENMP -static -O -fopenmp -o openmptest openmptest.cpp Modified: SwiftApps/SciColSim/TODO =================================================================== --- SwiftApps/SciColSim/TODO 2012-12-19 14:06:35 UTC (rev 6109) +++ SwiftApps/SciColSim/TODO 2012-12-23 04:33:21 UTC (rev 6110) @@ -1,6 +1,28 @@ +--- Questions and Open Issues --- +When sampling the graph, we compress the node ids. Is this OK? +Same 40K epoch count? Is this really feasible? + +What values for otehr loop parameters? + +What sampling? + +Limits? +-- placed correctly? +-- size +-- anomalous value for tn 758 +-- adjust all for new graph? + +What is range of TI to sweep over? + +Algorithmic improvements? + +Graph partitioning? => for greater total parallelism? + + + x = done, - = in progress Modified: SwiftApps/SciColSim/graphsim.cpp =================================================================== --- SwiftApps/SciColSim/graphsim.cpp 2012-12-19 14:06:35 UTC (rev 6109) +++ SwiftApps/SciColSim/graphsim.cpp 2012-12-23 04:33:21 UTC (rev 6110) @@ -6,8 +6,6 @@ // Copyright 2011 University of Chicago. All rights reserved. // -// Select OpenMP or Grand Central Dispatch for multithreading: - #define MAXNworkers 1 int Nworkers=MAXNworkers; @@ -34,13 +32,8 @@ #include #include "unistd.h" -#ifdef P_DISPATCH -#include -#endif - #include - #include #include #include @@ -88,157 +81,122 @@ typedef boost::graph_traits::vertex_descriptor vertex_descriptor; namespace std { - using ::time; + using ::time; } static int var_fixed[5] = {1, 0, 1, 1, 0}; typedef boost::minstd_rand base_generator_type; typedef adjacency_list < listS, vecS, directedS, -no_property, property < edge_weight_t, int > > graph_t; + no_property, property < edge_weight_t, int > > graph_t; typedef graph_traits < graph_t >::vertex_descriptor vertex_descriptor; typedef graph_traits < graph_t >::edge_descriptor edge_descriptor; -//================================================ string strDouble(double number) { - stringstream ss;//create a stringstream - ss << number;//add number to the stream - return ss.str();//return a string with the contents of the stream + stringstream ss;//create a stringstream + ss << number;//add number to the stream + return ss.str();//return a string with the contents of the stream } -//================================================ - double gaussian(double sigma) { - double GaussNum = 0.0; - int NumInSum = 10; - for(int i = 0; i < NumInSum; i++) - { - GaussNum += ((double)rand()/(double)RAND_MAX - 0.5); - } - GaussNum = GaussNum*sqrt((double)12/(double)NumInSum); - - - return GaussNum; - + double GaussNum = 0.0; + int NumInSum = 10; + for(int i = 0; i < NumInSum; i++) + { + GaussNum += ((double)rand()/(double)RAND_MAX - 0.5); + } + GaussNum = GaussNum*sqrt((double)12/(double)NumInSum); + return GaussNum; } - - -//================================================= double diffclock(clock_t clock1,clock_t clock2) { - double diffticks=clock1-clock2; - double diffms=(diffticks)/CLOCKS_PER_SEC; - return diffms; + double diffticks=clock1-clock2; + double diffms=(diffticks)/CLOCKS_PER_SEC; + return diffms; } -//================================================ -//================================================================ double get_new_x(double x, double dx){ + double new_x; + // boost::variate_generator > uni(generator, uni_dist); + double r = rand()/(double)(pow(2.,31)-1.); - double new_x; - // boost::variate_generator > uni(generator, uni_dist); - double r = rand()/(double)(pow(2.,31)-1.); - - if (r > 0.5){ - new_x = x + rand()*dx/(double)(pow(2.,31)-1.); - } else { - new_x = x - rand()*dx/(double)(pow(2.,31)-1.); - } - - return new_x; - + if (r > 0.5){ + new_x = x + rand()*dx/(double)(pow(2.,31)-1.); + } else { + new_x = x - rand()*dx/(double)(pow(2.,31)-1.); + } + return new_x; } - -//=============================================== string string_wrap(string ins, int mode){ - - std::ostringstream s; - - switch(mode){ - case 0: - s << "\033[1;29m" << ins << "\033[0m"; - break; - case 1: - s << "\033[1;34m" << ins << "\033[0m"; - break; - case 2: - s << "\033[1;44m" << ins << "\033[0m"; - break; - case 3: - s << "\033[1;35m" << ins << "\033[0m"; - break; - case 4: - s << "\033[1;33;44m" << ins << "\033[0m"; - break; - case 5: - s << "\033[1;47;34m" << ins << "\033[0m"; - break; - case 6: - s << "\033[1;1;31m" << ins << "\033[0m"; - break; - case 7: - s << "\033[1;1;33m" << ins << "\033[0m"; - break; - case 8: - s << "\033[1;1;43;34m" << ins << "\033[0m"; - break; - case 9: - s << "\033[1;1;37m" << ins << "\033[0m"; - break; - case 10: - s << "\033[1;30;47m" << ins << "\033[0m"; - break; - default: - s << ins; - } - - return s.str(); + std::ostringstream s; + switch(mode){ + case 0: + s << "\033[1;29m" << ins << "\033[0m"; + break; + case 1: + s << "\033[1;34m" << ins << "\033[0m"; + break; + case 2: + s << "\033[1;44m" << ins << "\033[0m"; + break; + case 3: + s << "\033[1;35m" << ins << "\033[0m"; + break; + case 4: + s << "\033[1;33;44m" << ins << "\033[0m"; + break; + case 5: + s << "\033[1;47;34m" << ins << "\033[0m"; + break; + case 6: + s << "\033[1;1;31m" << ins << "\033[0m"; + break; + case 7: + s << "\033[1;1;33m" << ins << "\033[0m"; + break; + case 8: + s << "\033[1;1;43;34m" << ins << "\033[0m"; + break; + case 9: + s << "\033[1;1;37m" << ins << "\033[0m"; + break; + case 10: + s << "\033[1;30;47m" << ins << "\033[0m"; + break; + default: + s << ins; + } + return s.str(); } - -//=============================================== string wrap_double(double val, int mode){ - - std::ostringstream s; - s << string_wrap(strDouble(val),mode); - - return s.str(); + std::ostringstream s; + s << string_wrap(strDouble(val),mode); + return s.str(); } - - -//=============================================== const string i2string(int i){ - - std::ostringstream s; - s << "worker" + std::ostringstream s; + s << "worker" << lexical_cast(i); - - return s.str(); - + return s.str(); } -//=============================================== char* i2char(int i){ - - std::ostringstream s; - s << "worker" + std::ostringstream s; + s << "worker" << lexical_cast(i); - - char* a=new char[s.str().size()+1]; - memcpy(a,s.str().c_str(), s.str().size()); - - return a; + char* a=new char[s.str().size()+1]; + memcpy(a,s.str().c_str(), s.str().size()); + return a; } -//================================================ - typedef struct { unsigned long size,resident,share,text,lib,data,dt; } statm_t; @@ -253,13 +211,12 @@ perror(statm_path); exit(99); } - if(7 != fscanf(f,"%ld %ld %ld %ld %ld %ld %ld", &sp->size,&sp->resident,&sp->share,&sp->text,&sp->lib,&sp->data,&sp->dt)) - { - perror(statm_path); - exit(99); - } + { + perror(statm_path); + exit(99); + } fclose(f); } @@ -277,529 +234,522 @@ MB(size), MB(resident), MB(share), MB(text), MB(lib), MB(data), MB(dt) ); } +timeval startTime, endTime; +double elapsedTime; +char timenow[100]; + +char *now() +{ + timeval endTime; + double elapsedTime; + + gettimeofday(&endTime, NULL); + elapsedTime = (endTime.tv_sec - startTime.tv_sec) * 1000.0; // sec to ms + elapsedTime += (endTime.tv_usec - startTime.tv_usec) / 1000.0; // us to ms + elapsedTime /= 1000.; + sprintf(timenow, "%10.3f", elapsedTime); + return(timenow); +} + //================================================ class Universe { private: - double alpha_i; - double alpha_m; - double beta; - double gamma; - double delta; + double alpha_i; + double alpha_m; + double beta; + double gamma; + double delta; - double TargetNovelty; - double CumulativeRelativeLoss; - double CRLsquare; - string id; + double TargetNovelty; + double CumulativeRelativeLoss; + double CRLsquare; + string id; - int N_nodes; - int M_edges; + int N_nodes; + int M_edges; - int N_epochs; - int N_steps; - int N_repeats; + int N_epochs; + int N_steps; + int N_repeats; - int current_epoch; - double current_loss; - int current_repeat; - double current_novelty; + int current_epoch; + double current_loss; + int current_repeat; + double current_novelty; - int mode_identify_failed; - int verbose_level; // 0 is silent, higher is more + int mode_identify_failed; + int verbose_level; // 0 is silent, higher is more - double k_max; + double k_max; - graph_t Full_g; + graph_t Full_g; #define GraphRes float // was double - GraphRes **Prob; - GraphRes **Tried; - GraphRes **Dist; - GraphRes **Final; - GraphRes **EdgeIndex; - GraphRes *Rank; + GraphRes **Prob; + GraphRes **Tried; + GraphRes **Dist; + GraphRes **Final; + GraphRes **EdgeIndex; + GraphRes *Rank; - base_generator_type generator; - boost::uniform_real<> uni_dist; - boost::geometric_distribution geo; + double max_loss; + base_generator_type generator; + boost::uniform_real<> uni_dist; + boost::geometric_distribution geo; + public: + //====== Constructor ====== + Universe(const std::string FileToOpen, int Epochs, int Steps, int Repeats, + int identify_failed, double target, const std::string idd) { + //typedef array_type2::index index2; + std::ifstream inFile; + //string line; - //====== Constructor ====== - Universe(const std::string FileToOpen, int Epochs, int Steps, int Repeats, int identify_failed, double target, const std::string idd) - { - //typedef array_type2::index index2; + base_generator_type gene(42u); + generator = gene; + generator.seed(static_cast(std::time(0))); + boost::uniform_real<> uni_d(0,1); + uni_dist = uni_d; + int i, k; + int x, y; + Edge* edge_array_mine; + int num_arcs_mine, num_nodes_mine; + int* weights_mine; - std::ifstream inFile; - //string line; + TargetNovelty = target; + CumulativeRelativeLoss = 0.; + CRLsquare = 0.; - //------------------------------- + N_epochs = Epochs; + N_steps = Steps; + N_repeats = Repeats; - base_generator_type gene(42u); - generator = gene; - generator.seed(static_cast(std::time(0))); - boost::uniform_real<> uni_d(0,1); - uni_dist = uni_d; + current_epoch = 0; + current_loss = 0.; + current_repeat = 0; - //-------------------------------- + id = idd; - int i, k; - int x, y; - Edge* edge_array_mine; - int num_arcs_mine, num_nodes_mine; - int* weights_mine; + verbose_level = 1; + mode_identify_failed = identify_failed; - TargetNovelty = target; - CumulativeRelativeLoss = 0.; - CRLsquare = 0.; + // The first pass though file with the graph + inFile.open(FileToOpen.c_str()); + if (inFile.fail()) { + cout << "Unable to open file"; + exit(1); // terminate with error + }else { + if (verbose_level > 2){ + std::cout << " Opened <" << FileToOpen << ">"<> x; + inFile >> y; - id = idd; + if (verbose_level > 2){ + std::cout << " x: " << x; + std::cout << " y: " << y << std::endl; + } - verbose_level = 1; + if (i==0){ + N_nodes=x; + M_edges=y; + break; + } + i++; + } + inFile.close(); - mode_identify_failed = identify_failed; + if (verbose_level == 2){ + std::cout << N_nodes << " nodes, " << M_edges << " edges"< 2){ - std::cout << " Opened <" << FileToOpen << ">"<> x; - inFile >> y; + //The second pass through file with the graph - if (verbose_level > 2){ - std::cout << " x: " << x; - std::cout << " y: " << y << std::endl; - } + for(int i = 0; i < N_nodes; ++i) { + Rank[i]=0.; + for(int j = 0; j < N_nodes; ++j) { + Final[i][j] = 0.; + Prob[i][j]=0.; + Dist[i][j]=-1.; + Tried[i][j]=0.; + EdgeIndex[i][j]=-1; + } + } - if (i==0){ - N_nodes=x; - M_edges=y; - break; - } - i++; + // Fill in the final graph -- and we are ready to go! + inFile.open(FileToOpen.c_str()); + if (!inFile) { + std::cout << "Unable to open file"; + exit(1); // terminate with error + } + else { + if (verbose_level > 2){ + std::cout << " Opened <" << FileToOpen << ">"<> x && inFile >>y) { + if (i > 0) { + Final[x][y]=1.; + Final[y][x]=1.; + if (verbose_level == 2){ + std::cout << "."; + } + } + i++; + } + if (verbose_level == 2){ + std::cout << std::endl; + } + inFile.close(); + k=0; + for (int i=0; i 0.){ + EdgeIndex[i][j]=k; + k++; + } + } + } - } - inFile.close(); + // create graph -- hopefully, we can keep it, just modifying edge weights - if (verbose_level == 2){ - std::cout << N_nodes << " nodes, " << M_edges << " edges"<0.){ + edge_array_mine[2*k] =Edge(i,j); + edge_array_mine[2*k+1]=Edge(j,i); + k++; + } + } + } + graph_t g(edge_array_mine, edge_array_mine + num_arcs_mine, weights_mine, num_nodes_mine); - //k_max = M_edges; - k_max = 70; + Full_g = g; + delete edge_array_mine; + delete weights_mine; - //------------------------------------ - // Get memory allocated for all class members + std::vector p(num_edges(Full_g)); + std::vector d(num_edges(Full_g)); + edge_descriptor s; + boost::graph_traits::vertex_descriptor u, v; - Prob = allocate_2Dmatrix(N_nodes, N_nodes); - Tried = allocate_2Dmatrix(N_nodes, N_nodes); - Dist = allocate_2Dmatrix(N_nodes, N_nodes); - Final = allocate_2Dmatrix(N_nodes, N_nodes); - EdgeIndex = allocate_2Dmatrix(N_nodes, N_nodes); - Rank = allocate_1Dmatrix(N_nodes); + for (int i=0; i 0.){ + u = vertex(i, Full_g); + v = vertex(j, Full_g); + remove_edge(u,v,Full_g); + remove_edge(v,u,Full_g); - //The second pass through file with the graph + } + } + } + set_max_loss(); + } - for(int i = 0; i < N_nodes; ++i) { - Rank[i]=0.; - for(int j = 0; j < N_nodes; ++j) { - Final[i][j] = 0.; - Prob[i][j]=0.; - Dist[i][j]=-1.; - Tried[i][j]=0.; - EdgeIndex[i][j]=-1; - } - } + void set_max_loss() { + // Based on formulas from random_analytical.pdf + // (9): E[RLt] = (1/t) * SUM(i=0 to T of: (V*(V-1) / (2 * (E-i)) + // (12) Var[RLt] = 1 / (T**2) * SUM( i=0 to T of: ((V*(V-1))/2) - E + 1 ) / ((E-i)**2) + // (9) + 3sigma = E[RLt] + 3 * SQRT(Var) + int E = M_edges; + int V = N_nodes; + int T = TargetNovelty; + double sum, ERLt, VarRLt; - // Fill in the final graph -- and we are ready to go! + sum = 0; + for(int i=0;i<=T;i++) { + sum += (V*(V-1)) / (2*(E-i)); + } + ERLt = (1.0/T) * sum; - inFile.open(FileToOpen.c_str()); - if (!inFile) { - std::cout << "Unable to open file"; - exit(1); // terminate with error - } - else { - - if (verbose_level > 2){ - std::cout << " Opened <" << FileToOpen << ">"<> x && inFile >>y) { - if (i > 0) { - Final[x][y]=1.; - Final[y][x]=1.; - - - if (verbose_level == 2){ - std::cout << "."; - } - } - i++; - - } - if (verbose_level == 2){ - std::cout << std::endl; - } - inFile.close(); - - k=0; - for (int i=0; i 0.){ - EdgeIndex[i][j]=k; - k++; - } - } - } - - - - //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - // create graph -- hopefully, we can keep it, just modifying edge weights - - - edge_array_mine = new Edge[2*M_edges]; - num_arcs_mine = 2*M_edges; - num_nodes_mine = N_nodes; - weights_mine = new int[2*M_edges]; - for (int i=0; i<2*M_edges; i++){ weights_mine[i]=1;} - - k=0; - for(int i=0; i0.){ - edge_array_mine[2*k] =Edge(i,j); - edge_array_mine[2*k+1]=Edge(j,i); - k++; - } - } - } - graph_t g(edge_array_mine, edge_array_mine + num_arcs_mine, weights_mine, num_nodes_mine); - - Full_g = g; - delete edge_array_mine; - delete weights_mine; - - //=========================================================================== - std::vector p(num_edges(Full_g)); - std::vector d(num_edges(Full_g)); - edge_descriptor s; - boost::graph_traits::vertex_descriptor u, v; - - for (int i=0; i 0.){ - u = vertex(i, Full_g); - v = vertex(j, Full_g); - remove_edge(u,v,Full_g); - remove_edge(v,u,Full_g); - - } - } - } - - + sum = 0; + for(int i=0;i<=T;i++) { + sum += (((V*(V-1))/2.0) - E + 1.0 ) / ((E-i)*(E-i)); } + VarRLt = (1.0 / (T*T)) * sum; + max_loss = ERLt + (3.0 * sqrt(VarRLt)); + cout << "set_max_loss: V=" << V << " E=" << E << " T=" << T << " ERLt=" << ERLt << " VarRLt=" << VarRLt << " max_loss=" << max_loss << endl; + } + int sample_failed_number(double pfail) { - //===================================================================== - int sample_failed_number(double pfail){ + //boost::geometric_distribution geo(pfail); + //boost::variate_generator > geom(generator, geo); - //boost::geometric_distribution geo(pfail); - //boost::variate_generator > geom(generator, geo); + double r, u, g; - double r, u, g; + r=0.; + for(int i=0; i=3){ - std::cout << id << " failed " << r << std::endl; - } - return (int) round(r); // FIXME: Andrey: please verify that round() is correct. - - } - - //============================================= - double get_target(void){ - return TargetNovelty; + r+=g; } - //============================================= - void set_target(double target){ - TargetNovelty=target; + if (verbose_level>=3){ + std::cout << id << " failed " << r << std::endl; } + return (int) round(r); // FIXME: Andrey: please verify that round() is correct. - //============================================= - int sample(){ + } - //boost::variate_generator > uni(generator, uni_dist); - // double r = uni(), Summa = 0.; + double get_target(void){ + return TargetNovelty; + } + void set_target(double target){ + TargetNovelty=target; + } + int sample(){ - double r = rand(), Summa = 0.; - r /= (double)(pow(2.,31)-1.); - int result = 0; - int finished = 0; + //boost::variate_generator > uni(generator, uni_dist); + // double r = uni(), Summa = 0.; + double r = rand(), Summa = 0.; + r /= (double)(pow(2.,31)-1.); + int result = 0; + int finished = 0; - if (verbose_level==4){ - std::cout << id << " sampled " << r << std::endl; - } + if (verbose_level==4){ + std::cout << id << " sampled " << r << std::endl; + } - for(int i=0; i r){ - - Tried[i][j]+=1.; - - if (Final[i][j] > 0.){ - result = 1; - } - finished = 1; - } - } - } - - return result; - + for (int i=0; i r){ + Tried[i][j]+=1.; + if (Final[i][j] > 0.){ + result = 1; + } + finished = 1; } + } + } + return result; + } - //=============================== - void update_current_graph(void){ - std::vector p(num_edges(Full_g)); - std::vector d(num_edges(Full_g)); - edge_descriptor s; - boost::graph_traits::vertex_descriptor u, v; + void update_current_graph(void){ - //property_map::type weightmap = get(edge_weight, Full_g); - for (int i=0; i 0. && Tried[i][j]>0){ - //s = edge(i, j, Full_g); - boost::graph_traits::edge_descriptor e1,e2; - bool found1, found2; - u = vertex(i, Full_g); - v = vertex(j, Full_g); - tie(e1, found1) = edge(u, v, Full_g); - tie(e2, found2) = edge(v, u, Full_g); - if (!found1 && !found2){ - add_edge(u,v,1,Full_g); - add_edge(v,u,1,Full_g); - } + std::vector p(num_edges(Full_g)); + std::vector d(num_edges(Full_g)); + edge_descriptor s; + boost::graph_traits::vertex_descriptor u, v; - } - } + //property_map::type weightmap = get(edge_weight, Full_g); + for (int i=0; i 0. && Tried[i][j]>0){ + //s = edge(i, j, Full_g); + boost::graph_traits::edge_descriptor e1,e2; + bool found1, found2; + u = vertex(i, Full_g); + v = vertex(j, Full_g); + tie(e1, found1) = edge(u, v, Full_g); + tie(e2, found2) = edge(v, u, Full_g); + if (!found1 && !found2){ + add_edge(u,v,1,Full_g); + add_edge(v,u,1,Full_g); + } - } } + } - //=============================== - void update_distances(void){ - // put shortest paths to the *Dist[][] - std::vector p(num_vertices(Full_g)); - std::vector d(num_vertices(Full_g)); - vertex_descriptor s; + } + } + void update_distances(void){ + // put shortest paths to the *Dist[][] + std::vector p(num_vertices(Full_g)); + std::vector d(num_vertices(Full_g)); + vertex_descriptor s; - // put shortest paths to the *Dist[][] - for (int j=0; j 0.){ - s = vertex(j, Full_g); - dijkstra_shortest_paths(Full_g, s, predecessor_map(&p[0]).distance_map(&d[0])); - - //std::cout <<" Vertex "<< j << std::endl; - graph_traits < graph_t >::vertex_iterator vi, vend; - - for (boost::tie(vi, vend) = vertices(Full_g); vi != vend; ++vi) { - - if (p[*vi]!=*vi){ - Dist[*vi][j]=d[*vi]; - Dist[j][*vi]=d[*vi]; - - if ( (int)round(Dist[*vi][j]>max_dist)) { - // FIXME: Andrey: please verify that (int) cast is correct. Do we need to round()? - // also, the indent on this iff statement was way off - - // perhaps due to space v. tab? - max_dist=(int)round(Dist[*vi][j]); - } - - - } else { - Dist[*vi][j]=-1.; - Dist[j][*vi]=-1.; - } - } - } - - } - - + // put shortest paths to the *Dist[][] + for (int j=0; j 0.){ + s = vertex(j, Full_g); + dijkstra_shortest_paths(Full_g, s, predecessor_map(&p[0]).distance_map(&d[0])); + //std::cout <<" Vertex "<< j << std::endl; + graph_traits < graph_t >::vertex_iterator vi, vend; + for (boost::tie(vi, vend) = vertices(Full_g); vi != vend; ++vi) { + if (p[*vi]!=*vi){ + Dist[*vi][j]=d[*vi]; + Dist[j][*vi]=d[*vi]; + if ( (int)round(Dist[*vi][j]>max_dist)) { + // FIXME: Andrey: please verify that (int) cast is correct. Do we need to round()? + // also, the indent on this iff statement was way off - + // perhaps due to space v. tab? + max_dist=(int)round(Dist[*vi][j]); + } + } else { + Dist[*vi][j]=-1.; + Dist[j][*vi]=-1.; + } } + } + } + } - //====================================================== - void update_ranks(void){ - for(int i=0; i0. && Final[i][j] >0.){ - Rank[i]++; - Rank[j]++; - } - } - } + for(int i=0; i0. && Final[i][j] >0.){ + Rank[i]++; + Rank[j]++; } + } + } - //==================================================================== - void set_world(double a_i, double a_m, double b, double g, double d){ + } - alpha_i=a_i; - alpha_m=a_m; - gamma=g; - beta=b; - delta=d; + //==================================================================== + void set_world(double a_i, double a_m, double b, double g, double d){ - } + alpha_i=a_i; + alpha_m=a_m; + gamma=g; + beta=b; + delta=d; - //==================================================================== - void reset_world(){ + } - //==================================================== - std::vector p(num_edges(Full_g)); - std::vector d(num_edges(Full_g)); - edge_descriptor s; - boost::graph_traits::vertex_descriptor u, v; + //==================================================================== + void reset_world(){ + //==================================================== + std::vector p(num_edges(Full_g)); + std::vector d(num_edges(Full_g)); + edge_descriptor s; + boost::graph_traits::vertex_descriptor u, v; - for (int i=0; i 0. && Tried[i][j] > 0){ - u = vertex(i, Full_g); - v = vertex(j, Full_g); - remove_edge(u,v,Full_g); - remove_edge(v,u,Full_g); - } - } - } + for (int i=0; i 0. && Tried[i][j] > 0){ + u = vertex(i, Full_g); + v = vertex(j, Full_g); + remove_edge(u,v,Full_g); + remove_edge(v,u,Full_g); - //================================================== + } + } + } - current_loss=0; - current_epoch=0; - current_repeat++; - current_novelty=0; + //================================================== - for(int i = 0; i < N_nodes; ++i) { - Rank[i]=0.; - for(int j = 0; j < N_nodes; ++j) { - Prob[i][j]=0.; - Dist[i][j]=-1.; - Tried[i][j]=0.; - } - } - } + current_loss=0; + current_epoch=0; + current_repeat++; + current_novelty=0; + for(int i = 0; i < N_nodes; ++i) { + Rank[i]=0.; + for(int j = 0; j < N_nodes; ++j) { + Prob[i][j]=0.; + Dist[i][j]=-1.; + Tried[i][j]=0.; + } + } + } - //============================================== - void show_parameters(void){ - std::cout << "Parameters: " - << alpha_i << " " - << alpha_m << " | " - << beta << " " - << gamma << " | " - << delta << std::endl; + //============================================== + void show_parameters(void){ - } + std::cout << "Parameters: " + << alpha_i << " " + << alpha_m << " | " + << beta << " " + << gamma << " | " + << delta << std::endl; + } - //=============================================== - string file_name(){ - std::ostringstream s; - s << "world_" - << lexical_cast(alpha_i) << "_" - << lexical_cast(alpha_m) << "_" - << lexical_cast(beta) << "_" - << lexical_cast(gamma) << "_" - << lexical_cast(delta) << "_" - << lexical_cast(N_epochs) << "_" - << lexical_cast(N_steps) << "_" - << lexical_cast(N_repeats) << ".txt"; + //=============================================== + string file_name(){ - return s.str(); + std::ostringstream s; + s << "world_" + << lexical_cast(alpha_i) << "_" + << lexical_cast(alpha_m) << "_" + << lexical_cast(beta) << "_" + << lexical_cast(gamma) << "_" + << lexical_cast(delta) << "_" + << lexical_cast(N_epochs) << "_" + << lexical_cast(N_steps) << "_" + << lexical_cast(N_repeats) << ".txt"; - } + return s.str(); + } - //================================================= - void set_verbose(int verbose){ - verbose_level = verbose; - } + //================================================= + void set_verbose(int verbose){ + verbose_level = verbose; + } - //============================================================= + + //============================================================= void update_probabilities(void){ @@ -807,13 +757,11 @@ // Compute sampling probabilities // first pass: \xi_i,j int i, j; - //#pragma omp parallel for private (j) - //#pragma omp parallel for - // #pragma omp parallel for default(none) shared( Prob, alpha_i, alpha_m, beta, k_max, gamma, delta, Rank, Dist) private(i,j) - #pragma omp parallel for private(i,j) + std::cout << now() << " pass1 update_probabilities" << std::endl; for( i=0; i0. && Final[i][j]>0.){ + novel+=1.; + std::cout << now() << " failed:1 novel: " << novel << std::endl; + } + } + } + std::cout << now() << " failed:1 after for\n"; + } + else { + double pfail=0.; + int n_failed; + //, n_check = 0; - } - -std::cout << "failed:1 before for\n"; - for(int i=0; i0. && Final[i][j]>0.){ - novel+=1.; -std::cout << "failed:1 novel: " << novel << std::endl; - } - } - } -std::cout << "failed:1 after for\n"; - - } - //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - else { - - double pfail=0.; - int n_failed; - //, n_check = 0; - -std::cout << "failed:0 before for\n"; - for(int i=0; i0. && Final[i][j]>0.){ - novel+=1.; -std::cout << "failed:0 novel: " << novel << std::endl; - - } - } - } - } - - current_novelty = novel; - - - //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -verbose_level = 2; - if (verbose_level == 2){ - std::cout << (current_repeat+1) << " epoch=" << (current_epoch+1) - - << " cost=" << cost - << " novel=" << novel - << " rel_loss=" << cost/novel - << std::endl; - } - - current_epoch++; + std::cout << now() << " failed:0 before for\n"; + for (int i=0; i0. && Final[i][j]>0.){ + novel+=1.; + std::cout << now() << " failed:0 novel: " << novel << std::endl; + } + } + } } - // Allocate memory - GraphRes** allocate_2Dmatrix(int N, int M) - { - GraphRes **pointer; + current_novelty = novel; - if (verbose_level == 2){ - std::cout<< "["< 0){ + pointer = new GraphRes[N]; + }else { + pointer = NULL; } - //==================== - void delete_1Dmatrix(GraphRes *pointer){ + return pointer; + } - delete [] pointer; - } + // De-Allocate memory to prevent memory leak - //=========================================== - double get_rel_loss(){ - - return CumulativeRelativeLoss ; + void delete_2Dmatrix_double(double **pointer, int N) { + if (pointer != NULL){ + for (int i = 0; i < N; ++i){ + delete [] pointer[i]; + } + delete [] pointer; } + } - //=========================================== - double get_rel_loss_err(){ + void delete_2Dmatrix(GraphRes **pointer, int N) { + if (pointer != NULL){ - return CRLsquare ; + for (int i = 0; i < N; ++i){ + delete [] pointer[i]; + } + delete [] pointer; } + } + void delete_1Dmatrix(GraphRes *pointer) { + delete [] pointer; + } + double get_rel_loss() { + return CumulativeRelativeLoss ; + } - //================================================================================== - void evolve_to_target_and_save(int istart, int iend, double* storage, int* counters){ + double get_rel_loss_err() { + return CRLsquare ; + } - double ALOT=100000000000.; - double ratio = 0.0; - int check = 0; + void evolve_to_target_and_save(int istart, int iend, double* storage, int* counters) { + double ALOT=100000000000.; + double ratio = 0.0; - reset_world(); + reset_world(); + for (int k = istart; k < iend; k++){ + for(int i=0; i< N_epochs && current_novelty < TargetNovelty; i++){ + if(ratio < max_loss) { + update_world(); + } + else{ + break; + } + ratio = current_loss/current_novelty; + } + if (ratio < max_loss) { + storage[k]=current_loss/current_novelty; + } + else{ + storage[k]=ALOT; + } + counters[k]=1; + reset_world(); + } + } - for (int k = istart; k < iend; k++){ + double Omax_loss_value(int tn) { + if( tn == 58 ) return 128.286; + else if( tn == 108 ) return 131.866; + else if( tn == 158 ) return 135.551; + else if( tn == 208 ) return 139.694; + else if( tn == 258 ) return 144.163; + else if( tn == 308 ) return 148.967; + else if( tn == 358 ) return 154.201; + else if( tn == 408 ) return 159.962; + else if( tn == 458 ) return 166.441; + else if( tn == 508 ) return 173.655; + else if( tn == 558 ) return 181.921; + else if( tn == 608 ) return 191.246; + else if( tn == 658 ) return 202.150; + else if( tn == 708 ) return 215.197; + else if( tn == 758 ) return 202.150; // Verify with Andrey. Same as TargetNovelty of 658 + else if( tn == 808 ) return 251.698; + else if( tn == 858 ) return 279.201; + else if( tn == 908 ) return 320.112; + else if( tn == 958 ) return 394.774; + else if( tn == 1008 ) return 1052.38; // Huge number here. Why? + else return 10000.; /* Pray that this does not occur. Ask Andrey what to do */ + } - for(int i=0; i< N_epochs && current_novelty < TargetNovelty; i++){ - - if(ratio < max_loss_value((int)TargetNovelty)){ - update_world(); - } - else{ - check = 1; - break; - } - ratio = current_loss/current_novelty; - } - if( check ){ - storage[k]=ALOT; - } - else{ - storage[k]=current_loss/current_novelty; - } - counters[k]=1; - - reset_world(); - } - + double max_loss_value(int tn){ + switch(tn) { + case 58: return 128.286; + case 108: return 131.866; + case 158: return 135.551; + case 208: return 139.694; + case 258: return 144.163; + case 308: return 148.967; + case 358: return 154.201; + case 408: return 159.962; + case 458: return 166.441; + case 508: return 173.655; + case 558: return 181.921; + case 608: return 191.246; + case 658: return 202.150; + case 708: return 215.197; + case 758: return 202.150; // Verify with Andrey. Same as TargetNovelty of 658 + case 808: return 251.698; + case 858: return 279.201; + case 908: return 320.112; + case 958: return 394.774; + case 1008: return 1052.38; // Huge number here. Why? + default: return 10000.; /* Pray that this does not occur. Ask Andrey what to do */ } + } - //============================================== - double Omax_loss_value(int tn){ + int get_reruns(void) { + return N_repeats; + } - if( tn == 58 ) return 128.286; - else if( tn == 108 ) return 131.866; - else if( tn == 158 ) return 135.551; - else if( tn == 208 ) return 139.694; - else if( tn == 258 ) return 144.163; - else if( tn == 308 ) return 148.967; - else if( tn == 358 ) return 154.201; - else if( tn == 408 ) return 159.962; - else if( tn == 458 ) return 166.441; - else if( tn == 508 ) return 173.655; - else if( tn == 558 ) return 181.921; - else if( tn == 608 ) return 191.246; - else if( tn == 658 ) return 202.150; - else if( tn == 708 ) return 215.197; - else if( tn == 758 ) return 202.150; // Verify with Andrey. Same as TargetNovelty of 658 - else if( tn == 808 ) return 251.698; - else if( tn == 858 ) return 279.201; - else if( tn == 908 ) return 320.112; - else if( tn == 958 ) return 394.774; - else if( tn == 1008 ) return 1052.38; // Huge number here. Why? - else return 10000.; /* Pray that this does not occur. Ask Andrey what to do */ + double get_parameter(int i) { + switch(i){ + case 0: + return alpha_i; + case 1: + return alpha_m; + case 2: + return beta; + case 3: + return gamma; + case 4: + return delta; + default: + std::cout << "Erroneous parameter id!!!!\n\n\n"; + return 0.; } - double max_loss_value(int tn){ + } - switch(tn) { - case 58: return 128.286; - case 108: return 131.866; - case 158: return 135.551; - case 208: return 139.694; - case 258: return 144.163; - case 308: return 148.967; - case 358: return 154.201; - case 408: return 159.962; - case 458: return 166.441; - case 508: return 173.655; - case 558: return 181.921; - case 608: return 191.246; - case 658: return 202.150; - case 708: return 215.197; - case 758: return 202.150; // Verify with Andrey. Same as TargetNovelty of 658 - case 808: return 251.698; - case 858: return 279.201; - case 908: return 320.112; - case 958: return 394.774; - case 1008: return 1052.38; // Huge number here. Why? - default: return 10000.; /* Pray that this does not occur. Ask Andrey what to do */ + void evolve_to_target(){ + reset_world(); + if (beta < -1. || gamma < -1.){ + CumulativeRelativeLoss = 100000000000.; + CRLsquare = 0.; + return; + } + for (int k=0; k< N_repeats; k++){ + for(int i=0; i 4) {return 0;} - reset_world(); - if (beta < -1. || gamma < -1.){ - CumulativeRelativeLoss = 100000000000.; - CRLsquare = 0.; - return; - } + else { - - for (int k=0; k< N_repeats; k++){ - - - for(int i=0; i 4) {return 0;} - - else { - - switch(position){ - case 0: - alpha_i=value; - return 1; - case 1: - alpha_m=value; - return 1; - case 2: - beta=value; - return 1; - case 3: - gamma=value; - return 1; - case 4: - delta=value; - return 1; - } - - } - - return 0; - } - -#ifdef notdef - //================================================================= - void try_annealing(double starting_jump, int iterations, - double temp_start, double temp_end, double target_rejection){ - - double dx[5]={0.,0.,0.,0.,0}; - double x[5]={0.,0.,0.,0.,0}; - double rejection[5]={0., 0., 0., 0., 0.}; - double curr_x, curr_err, x_tmp; - double temperature; - double ratio, r; - int cycle=10; - boost::variate_generator > uni(generator, uni_dist); - - // set up parameter for annealing - - x[0]=alpha_i; - x[1]=alpha_m; - x[2]=beta; - x[3]=gamma; - x[4]=delta; - - for(int i=0;i<5;i++){ - dx[i] = starting_jump; - } - - // establish the current value - - //.......................................... - evolve_to_target(); - std::cout << CumulativeRelativeLoss << " +- " << CRLsquare << std::endl; - - curr_x = CumulativeRelativeLoss; - curr_err = CRLsquare; - CumulativeRelativeLoss = 0; - CRLsquare = 0; - //........................................... - - // optimization cycle - for(int i=0; i ratio){ - - std::cout << string_wrap(id, 4) <<" "<< (i+1) << ","<< (j) - <<" "<< (i+1) << " Did not accept " - << x_tmp << "(" << j << ")" << std::endl; - std::cout << alpha_i << " "<< alpha_m << " " - << beta << " " << gamma << " " - << delta << " " << std::endl; - set_parameter(x[j], j); - CumulativeRelativeLoss = 0; - CRLsquare = 0; - - rejection[j]+=1.; - } - - else { - - curr_x = CumulativeRelativeLoss; - curr_err = CRLsquare; - x[j] = x_tmp; - CumulativeRelativeLoss = 0; - CRLsquare = 0; - std::cout << (i+1) << string_wrap((string) " Rejection counts: ", 8) - << wrap_double(rejection[0],2) - << " "<< wrap_double(rejection[1], 7) << " " - << wrap_double(rejection[2],5) << " " << wrap_double(rejection[2],9) << " " - << wrap_double(rejection[4],6) << " " - << std::endl << std::endl; - - std::cout << string_wrap(id, 4) <<" "<< (i+1) <<","<< (j) - <<" " - << string_wrap((string) "***** Did accept! ", 3) - << wrap_double(alpha_i,2) - << " "<< wrap_double(alpha_m, 7) << " " - << wrap_double(beta,5) << " " - << wrap_double(gamma,9) << " " - << wrap_double(delta,6) << " " - << std::endl << std::endl; - - } - //........................................................ - - } - - } - - } - -#endif - + return 0; + } }; -//============================================================ - -#ifdef P_DISPATCH -std::pair multi_loss(dispatch_group_t group, - Universe* un[], - dispatch_queue_t* CustomQueues, - double* Results, - int* Counters, - double* params){ -#else std::pair multi_loss(Universe* un[], double* Results, int* Counters, double* params){ -#endif + int N = un[0]->get_reruns(); + int step = (int)floor((double)N/(double)(Nworkers)); // FIXME: Andrey: please check change in cast grouping and use of floor + int istart=0; + int iend = istart+step; - int N = un[0]->get_reruns(); - int step = (int)floor((double)N/(double)(Nworkers)); // FIXME: Andrey: please check change in cast grouping and use of floor - int istart=0; - int iend = istart+step; + double Loss=0., LossSquare=0.; - double Loss=0., LossSquare=0.; + // timeval startTime, endTime; + // double elapsedTime; + gettimeofday(&startTime, NULL); - timeval startTime, endTime; - double elapsedTime; - gettimeofday(&startTime, NULL); + if ( N > NUniverse ) { + std::cerr << "Error: Number of reruns=" << N << " is greater than max NUniverse=" << NUniverse << "\n"; + exit(1); + } - if ( N > NUniverse ) { - std::cerr << "Error: Number of reruns=" << N << " is greater than max NUniverse=" << NUniverse << "\n"; - exit(1); + for(int i=0; iset_parameter(params[j],j); } + } - for(int i=0; iset_parameter(params[j],j); - } - } + int i; -#ifdef P_DISPATCH - for(int i=0; ievolve_to_target_and_save(i, i+1, Results, Counters); + } - // un[i]->evolve_to_target_and_save(istart, iend, Results, Counters); - un[i]->evolve_to_target_and_save(i*step, min((i+1)*step,N), Results, Counters); - }); + for (int i=0; i Res; + Res.first=Loss; + Res.second=two_std; - // Execute rerun loop in parallel + gettimeofday(&endTime, NULL); + elapsedTime = (endTime.tv_sec - startTime.tv_sec) * 1000.0; // sec to ms + elapsedTime += (endTime.tv_usec - startTime.tv_usec) / 1000.0; // us to ms + elapsedTime /= 1000.; + cout << "multi_loss(N=" << N << ", target=" << un[0]->get_target() << ") elapsed time: " << elapsedTime << " seconds " << elapsedTime/60. << " minutes\n\n"; - #pragma omp parallel for private (i) - for(i=0; ievolve_to_target_and_save(i, i+1, Results, Counters); - } -#endif - - for (int i=0; i Res; - Res.first=Loss; - Res.second=two_std; - - gettimeofday(&endTime, NULL); - elapsedTime = (endTime.tv_sec - startTime.tv_sec) * 1000.0; // sec to ms - elapsedTime += (endTime.tv_usec - startTime.tv_usec) / 1000.0; // us to ms - elapsedTime /= 1000.; - cout << "multi_loss(N=" << N << ", target=" << un[0]->get_target() << ") elapsed time: " << elapsedTime << " seconds " << elapsedTime/60. << " minutes\n\n"; - - return Res; + return Res; } -//============================================================ - -//============================================================ -#ifdef P_DISPATCH -void multi_annealing( dispatch_group_t group, - Universe* un[], - dispatch_queue_t* CustomQueues, - double T_start, double T_end, - double Target_rejection, - int Annealing_repeats, - double starting_jump, - double* Results, - int* Counters, - double* params0, - double annealing_cycles){ -#else void multi_annealing(Universe* un[], double T_start, double T_end, double Target_rejection, @@ -1527,190 +1230,173 @@ int* Counters, double* params0, double annealing_cycles){ -#endif - //................................. - // re-implement annealing + //................................. + // re-implement annealing - double dx[5]={0.,0.,0.,0.,0}; - double x[5]={0.,0.,0.,0.,0}; - double rejection[5]={0., 0., 0., 0., 0.}; - double curr_x, curr_err, x_tmp; - double temperature; - double ratio, r; - int cycle=10; - //boost::variate_generator > uni(generator, uni_dist); + double dx[5]={0.,0.,0.,0.,0}; + double x[5]={0.,0.,0.,0.,0}; + double rejection[5]={0., 0., 0., 0., 0.}; + double curr_x, curr_err, x_tmp; + double temperature; + double ratio, r; + int cycle=10; + //boost::variate_generator > uni(generator, uni_dist); - // set up parameter for annealing + // set up parameter for annealing - x[0]=params0[0]; - x[1]=params0[1]; - x[2]=params0[2]; - x[3]=params0[3]; - x[4]=params0[4]; + x[0]=params0[0]; + x[1]=params0[1]; + x[2]=params0[2]; + x[3]=params0[3]; + x[4]=params0[4]; - for(int i=0;i<5;i++){ - dx[i] = starting_jump; - } + for(int i=0;i<5;i++){ + dx[i] = starting_jump; + } - // establish the current value - std::pairRes; + // establish the current value + std::pairRes; -#ifdef P_DISPATCH - Res = multi_loss(group, un, CustomQueues, Results, Counters, x); -#else - Res = multi_loss( un, Results, Counters, x); -#endif - std::cout << "Returned from initial multi_loss:" << std::endl; - std::cout << Res.first << " +- " << Res.second << std::endl; + Res = multi_loss( un, Results, Counters, x); - if ( operation == 'm' ) { - FILE *f; - int N = un[0]->get_reruns(); + std::cout << "Returned from initial multi_loss:" << std::endl; + std::cout << Res.first << " +- " << Res.second << std::endl; - f = fopen("multi_loss.data","w"); - for(int i=0; iget_reruns(); + + f = fopen("multi_loss.data","w"); + for(int i=0; i 0){ - dx[k] = dx[k]/(rejection[k]/Target_rejection); - rejection[k]=0.; - } - else{ - dx[k]*=2.; - } - std::cout << dx[k] << " "; - } - std::cout << std::endl; - } + std::cout << wrap_double(x_tmp,10) << " " << wrap_double(j,9) << "\n\n"; + //======================================= + //............................................. + for(int w=0; wset_parameter(x_tmp, j); + } + Res = multi_loss(un, Results, Counters, x); + std::cout << Res.first << " +- " << Res.second << std::endl; - for (int j=0; j<5; j++){ + ratio = min(1.,exp(-(Res.first-curr_x)/temperature)); + r = rand()/(double)(pow(2.,31)-1.); + std::cout << r << " vs " << ratio << std::endl; - /////////////////////////////// - if (FIX_VARIABLES==0 || var_fixed[j]==0){ + double ALOT=100000000000.; + if (Res.first < ALOT) + { + ofstream filestr; + filestr.open ("best_opt_some.txt", ofstream::app); - // get new value of x[j] - double x_hold=x[j]; - x_tmp = get_new_x(x[j],dx[j]); - x[j]=x_tmp; + // >> i/o operations here << + filestr - std::cout << wrap_double(x_tmp,10) << " " << wrap_double(j,9) << "\n\n"; - //======================================= - //............................................. - for(int w=0; wset_parameter(x_tmp, j); - } + << "N, " << i << ", " << j << ", " << dx[j] << ", " << rejection[j] << ", |, " // FIXME: MW-DEBUGGING -#ifdef P_DISPATCH - Res = multi_loss(group, un, CustomQueues, Results, Counters, x); -#else - Res = multi_loss( un, Results, Counters, x); -#endif - std::cout << Res.first << " +- " << Res.second << std::endl; + << un[0]->get_target() << ", " + << Res.first + << ", " << un[0]->get_parameter(0) + << ", " << un[0]->get_parameter(1) + << ", " << un[0]->get_parameter(2) + << ", " << un[0]->get_parameter(3) + << ", " << un[0]->get_parameter(4) << ", " << Res.second << ",\n"; - ratio = min(1.,exp(-(Res.first-curr_x)/temperature)); - r = rand()/(double)(pow(2.,31)-1.); - std::cout << r << " vs " << ratio << std::endl; + filestr.close(); - double ALOT=100000000000.; - if (Res.first < ALOT) - { - ofstream filestr; + filestr.open ("max_dist.txt", ofstream::app); - filestr.open ("best_opt_some.txt", ofstream::app); + // >> i/o operations here << + filestr << max_dist << ",\n"; - // >> i/o operations here << - filestr + filestr.close(); - << "N, " << i << ", " << j << ", " << dx[j] << ", " << rejection[j] << ", |, " // FIXME: MW-DEBUGGING + FILE *bf; + bf = fopen("bestdb.txt","a"); + fprintf(bf, "N %2d %2d %10.5f %5.2f | %5.2f %10.5f [ %5.2f %5.2f %10.5f %10.5f %10.5f ] %10.5f\n", i, j, dx[j], rejection[j], + un[0]->get_target(), + Res.first, + un[0]->get_parameter(0), + un[0]->get_parameter(1), + un[0]->get_parameter(2), + un[0]->get_parameter(3), + un[0]->get_parameter(4), + Res.second); + fclose(bf); + } - << un[0]->get_target() << ", " - << Res.first - << ", " << un[0]->get_parameter(0) - << ", " << un[0]->get_parameter(1) - << ", " << un[0]->get_parameter(2) - << ", " << un[0]->get_parameter(3) - << ", " << un[0]->get_parameter(4) << ", " << Res.second << ",\n"; + if (r > ratio){ - filestr.close(); - - - filestr.open ("max_dist.txt", ofstream::app); - - // >> i/o operations here << - filestr << max_dist << ",\n"; - - filestr.close(); - - FILE *bf; - bf = fopen("bestdb.txt","a"); - fprintf(bf, "N %2d %2d %10.5f %5.2f | %5.2f %10.5f [ %5.2f %5.2f %10.5f %10.5f %10.5f ] %10.5f\n", i, j, dx[j], rejection[j], - un[0]->get_target(), - Res.first, - un[0]->get_parameter(0), - un[0]->get_parameter(1), - un[0]->get_parameter(2), - un[0]->get_parameter(3), - un[0]->get_parameter(4), - Res.second); - fclose(bf); - } - - - if (r > ratio){ - - std::cout << " "<< (i+1) << ","<< (j) + std::cout << " "<< (i+1) << ","<< (j) <<" "<< (i+1) << " Did not accept " << x_tmp << "(" << j << ")" << std::endl; - std::cout << un[0]->get_parameter(0) + std::cout << un[0]->get_parameter(0) << " " << un[0]->get_parameter(1) << " " << un[0]->get_parameter(2) << " " << un[0]->get_parameter(3) << " " << un[0]->get_parameter(4) << " " << std::endl; - x[j]=x_hold; - for(int w=0; wset_parameter(x[j], j); - } + x[j]=x_hold; + for(int w=0; wset_parameter(x[j], j); + } - //set_parameter(x[j], j); - rejection[j]+=1.; - } + //set_parameter(x[j], j); + rejection[j]+=1.; + } - else { + else { - curr_x = Res.first; - curr_err = Res.second; - x[j] = x_tmp; + curr_x = Res.first; + curr_err = Res.second; + x[j] = x_tmp; - for(int w=0; wset_parameter(x[j], j); - } + for(int w=0; wset_parameter(x[j], j); + } - std::cout << (i+1) << string_wrap((string) " Rejection counts: ", 8) + std::cout << (i+1) << string_wrap((string) " Rejection counts: ", 8) << wrap_double(rejection[0],2) << " " << wrap_double(rejection[1],7) << " " << wrap_double(rejection[2],5) << " " @@ -1718,7 +1404,7 @@ << wrap_double(rejection[4],6) << " " << std::endl << std::endl; - std::cout << " "<< (i+1) <<","<< (j) + std::cout << " "<< (i+1) <<","<< (j) <<" " << string_wrap((string) "***** Did accept! ", 3) << wrap_double(un[0]->get_parameter(0),2) << " " @@ -1727,238 +1413,176 @@ << wrap_double(un[0]->get_parameter(3),9) << " " << wrap_double(un[0]->get_parameter(4),6) << " " << std::endl << std::endl; - - - - } - //........................................................ - - } - } - + } + } } - + } } - - -//================================================ int main(int argc, char* argv[]) { + double params0[6] = {0., 0., 0., 0., 0., 0.2}, target=50., range; + string par_names0[6] = {"alpha_i", "alpha_m", "beta", "gamma", "delta", "target"}; + string par_names1[4] = {"n_epochs", "n_steps", "n_reruns", "range"}; + string par_names2[5] = {"T_start", "T_end", "Annealing_steps","Target_rejection","Starting_jump"}; + string par_names3[5] = {"FREEZE_alpha_i", "FREEZE_alpha_m", "FREEZE_beta", "FREEZE_gamma", "FREEZE_delta"}; + string par_names4[3] = {"Operation", "Nworkers", "initSeed"}; - double params0[6] = {0., 0., 0., 0., 0., 0.2}, target=50., range; - string par_names0[6] = {"alpha_i", "alpha_m", "beta", "gamma", "delta", "target"}; - string par_names1[4] = {"n_epochs", "n_steps", "n_reruns", "range"}; - string par_names2[5] = {"T_start", "T_end", "Annealing_steps","Target_rejection","Starting_jump"}; - string par_names3[5] = {"FREEZE_alpha_i", "FREEZE_alpha_m", "FREEZE_beta", "FREEZE_gamma", "FREEZE_delta"}; - string par_names4[3] = {"Operation", "Nworkers", "initSeed"}; + int params1[4] = {300, 50, 1000, 10}; + int params3[5] = { 0, 0, 0, 0, 0}; - int params1[4] = {300, 50, 1000, 10}; - int params3[5] = { 0, 0, 0, 0, 0}; + // temperature_start, temperature_end, annealing_steps target_rejection Starting_jump + double params2[5] = {1, 0.001, 100, 0.3, 1.5}; - // temperature_start, temperature_end, annealing_steps target_rejection Starting_jump - double params2[5] = {1, 0.001, 100, 0.3, 1.5}; + int verbose_level = 2; + const std::string one="one", two="two"; + static Universe* un[NUniverse]; + static double* Results; + static int* Counters; - int verbose_level = 2; - const std::string one="one", two="two"; - static Universe* un[NUniverse]; -#ifdef P_DISPATCH - static dispatch_queue_t CustomQueues[MAXNworkers]; -#endif - static double* Results; - static int* Counters; + timeval t1, t2; + double elapsedTime; - timeval t1, t2; - double elapsedTime; - // start timer - gettimeofday(&t1, NULL); + gettimeofday(&t1, NULL); // start timer - - if (argc < 8) { - std::cout << "Usage: super_optimizer alpha_i alpha_m beta gamma delta target_innov [n_epochs n_steps n_reruns] [range] [verbose_level]\n"; - std::cout << " [T_start T_end Annealing_steps Target_rejection Starting_jump]\n"; - std::cout << " [FREEZE_alpha_i FREEZE_alpha_m FREEZE_beta FREEZE_gamma FREEZE_delta]\n"; - - system("pwd"); - - - return(1); + if (argc < 8) { + std::cout << "Usage: super_optimizer alpha_i alpha_m beta gamma delta target_innov [n_epochs n_steps n_reruns] [range] [verbose_level]\n"; + std::cout << " [T_start T_end Annealing_steps Target_rejection Starting_jump]\n"; + std::cout << " [FREEZE_alpha_i FREEZE_alpha_m FREEZE_beta FREEZE_gamma FREEZE_delta]\n"; + system("pwd"); + return(1); + } + else { + for (int nArg=0; nArg < argc; nArg++){ + //std::cout << nArg << " " << argv[nArg] << std::endl; + if (nArg > 0 && nArg < 7){ + params0[nArg-1]= atof(argv[nArg]); + std::cout << par_names0[nArg-1] << ": " << params0[nArg-1] << std::endl; + } + if (nArg > 6 && nArg < 11){ + params1[nArg-7]= atoi(argv[nArg]); + std::cout << par_names1[nArg-7] << ": " << params1[nArg-7] << std::endl; + } + if (nArg == 11){ + verbose_level = atoi(argv[nArg]); + std::cout << "verbose level: " << verbose_level << std::endl; + } + if (nArg > 11 && nArg < 17){ + params2[nArg-12]= atof(argv[nArg]); + std::cout << par_names2[nArg-12] << ": " << params2[nArg-12] << std::endl; + } + if (nArg > 16 && nArg < 22){ + params3[nArg-17]= (int)round(atof(argv[nArg])); // FIXME: Andrey: please verify that round() is correct. + var_fixed[nArg-17]= (int)round(atof(argv[nArg])); // FIXME: ditto + std::cout << par_names3[nArg-17] << ": " << var_fixed[nArg-17] << std::endl; + } + if (nArg == 22 ){ + operation = *argv[nArg]; + std::cout << par_names4[0] << ": " << operation << std::endl; + } + if (nArg == 23 ){ + Nworkers = atoi(argv[nArg]); + std::cout << par_names4[1] << ": " << Nworkers << std::endl; + } + if (nArg == 24 ){ + initSeed = atoi(argv[nArg]); + std::cout << par_names4[2] << ": " << initSeed << std::endl; + } } - else { - for (int nArg=0; nArg < argc; nArg++){ - //std::cout << nArg << " " << argv[nArg] << std::endl; - if (nArg > 0 && nArg < 7){ - params0[nArg-1]= atof(argv[nArg]); - std::cout << par_names0[nArg-1] << ": " << params0[nArg-1] << std::endl; - } - if (nArg > 6 && nArg < 11){ - params1[nArg-7]= atoi(argv[nArg]); - std::cout << par_names1[nArg-7] << ": " << params1[nArg-7] << std::endl; - } - if (nArg == 11){ - verbose_level = atoi(argv[nArg]); - std::cout << "verbose level: " << verbose_level << std::endl; - } - if (nArg > 11 && nArg < 17){ - params2[nArg-12]= atof(argv[nArg]); - std::cout << par_names2[nArg-12] << ": " << params2[nArg-12] << std::endl; - } - if (nArg > 16 && nArg < 22){ - params3[nArg-17]= (int)round(atof(argv[nArg])); // FIXME: Andrey: please verify that round() is correct. - var_fixed[nArg-17]= (int)round(atof(argv[nArg])); // FIXME: ditto - std::cout << par_names3[nArg-17] << ": " << var_fixed[nArg-17] << std::endl; - } - if (nArg == 22 ){ - operation = *argv[nArg]; - std::cout << par_names4[0] << ": " << operation << std::endl; - } - if (nArg == 23 ){ - Nworkers = atoi(argv[nArg]); - std::cout << par_names4[1] << ": " << Nworkers << std::endl; - } - if (nArg == 24 ){ - initSeed = atoi(argv[nArg]); - std::cout << par_names4[2] << ": " << initSeed << std::endl; - } + } + for (int j=0; j<5; j++){ + cout << j << " | " << var_fixed[j] << " (fixed) \n"; + } - } + target=params0[5]; + range = (double)params1[3]; + int identify_failed = 0; + char* filename= (char *)"movie_graph.txt"; + int n_ep=params1[0], n_st=params1[1], n_rep=params1[2]; - } + for(int i=0; i 0){ + Results = new double[n_rep]; + Counters = new int[n_rep]; + }else { + Results = NULL; + Counters = NULL; + std::cout << " Number of reruns should be positive! " << std::endl; + return 0; + } - cout << j << " | " << var_fixed[j] << " (fixed) \n"; - } + //srand(time(0)); + //srandomdev(); - target=params0[5]; - range = (double)params1[3]; - int identify_failed = 0; - char* filename= (char *)"movie_graph.txt"; - int n_ep=params1[0], n_st=params1[1], n_rep=params1[2]; + if ( initSeed != 0.0 ) { + srand(initSeed); + } + else { + timeval t; + gettimeofday(&t, NULL); + srand(t.tv_usec); + } - //............................... - - for(int i=0; i 0){ + //random initiation of starting parameters - Results = new double[n_rep]; - Counters = new int[n_rep]; - - }else { - - Results = NULL; - Counters = NULL; - std::cout << " Number of reruns should be positive! " << std::endl; - return 0; - + if (range > 0.){ + for (int i=0; i < 5; i++){ + if (params0[i]==-100.){ + double r1 = (rand()/(double)(pow(2.,31)-1.)); + double r2 = (rand()/(double)(pow(2.,31)-1.)); + double sign = 1.; + if(r1 > 0.5){ + sign=-1.; + } + params0[i] = sign*r2*range; + std::cout << par_names0[i] << ": " << params0[i] << std::endl; + } } - //............................... - //srand(time(0)); - //srandomdev(); + } - if ( initSeed != 0.0 ) { - srand(initSeed); - } - else { - timeval t; - gettimeofday(&t, NULL); - srand(t.tv_usec); - } + double T_start=params2[0], T_end=params2[1], Target_rejection=params2[3], starting_jump=params2[4]; + int Annealing_repeats = (int) params2[2]; - { - double r=0; - for (int j=0; j<100; j++){ + // print_memory_status(); + multi_annealing(un, T_start, T_end, Target_rejection, Annealing_repeats, + starting_jump, Results, Counters, params0, Annealing_repeats); + // stop timer - r = rand()/(double)(pow(2.,31)-1.); - std::cout << r << " "; - } - std::cout << "\n"; - } - //random initiation of starting parameters + gettimeofday(&t2, NULL); - if (range > 0.){ + // compute and print the elapsed time in millisec - for (int i=0; i < 5; i++){ + elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms + elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms + elapsedTime /= 1000.; + cout << "\n*** optimizer completed, elapsed time=" << elapsedTime << " seconds " << elapsedTime/60. << " minutes)\n\n"; - if (params0[i]==-100.){ + for(int i=0; i 0.5){ - sign=-1.; - } - - params0[i] = sign*r2*range; - - std::cout << par_names0[i] << ": " << params0[i] << std::endl; - } - } - - } - - - double T_start=params2[0], T_end=params2[1], Target_rejection=params2[3], starting_jump=params2[4]; - int Annealing_repeats = (int) params2[2]; - - // print_memory_status(); - -#ifdef P_DISPATCH - dispatch_group_t group = dispatch_group_create(); - - //............................. - multi_annealing(group, un, CustomQueues, T_start, T_end, Target_rejection, Annealing_repeats, - starting_jump, Results, Counters, params0, Annealing_repeats); - - //dispatch_group_wait(group, DISPATCH_TIME_FOREVER); - dispatch_release(group); - //............................. -#else - multi_annealing( un, T_start, T_end, Target_rejection, Annealing_repeats, - starting_jump, Results, Counters, params0, Annealing_repeats); -#endif - - - // stop timer - gettimeofday(&t2, NULL); - - // compute and print the elapsed time in millisec - elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms - elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms - elapsedTime /= 1000.; - cout << "\n*** optimizer completed, elapsed time=" << elapsedTime << " seconds " << elapsedTime/60. << " minutes)\n\n"; - - //..................... - - for(int i=0; i 0){ - - delete [] Results; - delete [] Counters; - - } - - return 0; - - - + if(n_rep > 0){ + delete [] Results; + delete [] Counters; + } + return 0; } Added: SwiftApps/SciColSim/maxloss.cpp =================================================================== --- SwiftApps/SciColSim/maxloss.cpp (rev 0) +++ SwiftApps/SciColSim/maxloss.cpp 2012-12-23 04:33:21 UTC (rev 6110) @@ -0,0 +1,101 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +using namespace std; + +void set_max_loss(long long v, long long e, long long t) { + + // Based on formulas from random_analytical.pdf + + // t-=100; + double E = e; + double V = v; + double T = t; + + double max_loss; + double sum, ERLt, VarRLt, absVarRLt; + + // (9): E[RLt] = (1/t) * SUM(i=0 to T of: (V*(V-1) / (2 * (E-i)) + + sum = 0; + for(int i=0;i 0) { + cout << "\nGraph " << G[i].n << " V=" << G[i].v << " E=" << G[i].e << endl; + printf("Pct T ERLt VarRLt max_loss\n"); + for(double p = 0.1; p<=1.0; p+=0.1) { + printf("%.2f",p); + set_max_loss(G[i].v, G[i].e, (int)((G[i].e * p)+0.5)); + } + i++; + } +} + Added: SwiftApps/SciColSim/maxloss.py =================================================================== --- SwiftApps/SciColSim/maxloss.py (rev 0) +++ SwiftApps/SciColSim/maxloss.py 2012-12-23 04:33:21 UTC (rev 6110) @@ -0,0 +1,39 @@ +#! /usr/bin/env python + +n = 0 +v = 1 +e = 2 + +graphs = [ + [ "movie", 500, 1008 ], + [ "big.001", 1857, 1312 ], + [ "big.002", 3094, 2683 ], + [ "big.005", 5405, 6776 ], + [ "big.01", 7765, 13421 ], + [ "big.10", 19281, 134594 ], + [ "big.20", 23258, 269133 ], + [ "big.30", 25484, 403401 ], + [ "big.40", 26821, 537106 ], + [ "big.50", 27774, 671179 ], + [ "big.60", 28482, 804774 ], + [ "big.70", 29055, 938061 ], + [ "big.80", 29487, 1072415 ], + [ "big.90", 29779, 1205741 ], + [ "big", 30060, 1338753 ], + ] + +for G in graphs: + N = G[n] + V = G[v] + E = G[e] + print "\nGraph %s: V=%d E=%d\n" % (N,V,E) + for pct in range(1,11): + Tmax = int(E * (pct/10.0)) + tl = 0. + vl = 0. + for t in range(Tmax): + tl = tl + float(V*(V-1.))/float(2.*(E-t)) + vl = vl + float(V*(V-1.)/2. - E + t)/float((E-t)*(E-t)) + tl /= float(Tmax) + vl /= float(Tmax)*float(Tmax) + print pct, Tmax, tl, vl Property changes on: SwiftApps/SciColSim/maxloss.py ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/SciColSim/maxloss_ar.py =================================================================== --- SwiftApps/SciColSim/maxloss_ar.py (rev 0) +++ SwiftApps/SciColSim/maxloss_ar.py 2012-12-23 04:33:21 UTC (rev 6110) @@ -0,0 +1,15 @@ +V = [500] +E = [1008] + +curr = 0 + + +for Tmax in range(101,1009,101): + tl = 0. + vl = 0. + for t in range(Tmax): + tl = tl + float(V[0]*(V[0]-1.))/float(2.*(E[0]-t)) + vl = vl + float(V[0]*(V[0]-1.)/2. - E[0] + t)/float((E[0]-t)*(E[0]-t)) + tl /= float(Tmax) + vl /= float(Tmax)*float(Tmax) + print Tmax, tl, vl Modified: SwiftApps/SciColSim/samplegraph.sh =================================================================== --- SwiftApps/SciColSim/samplegraph.sh 2012-12-19 14:06:35 UTC (rev 6109) +++ SwiftApps/SciColSim/samplegraph.sh 2012-12-23 04:33:21 UTC (rev 6110) @@ -2,7 +2,7 @@ fraction=${1:-1.0} -tmp=$(mktemp -t samplegraph) +tmp=$(mktemp -t samplegraph.XXXX) awk ' @@ -16,6 +16,7 @@ BEGIN { getmsec="perl -MTime::HiRes=gettimeofday -e \"print int(1000*gettimeofday()).qq(\\n);\"" + getmsec="date +%N" getmsec | getline msec close(getmsec) _cliff_seed = (msec % 10000) / 10000 Modified: SwiftApps/SciColSim/testgraph.py =================================================================== --- SwiftApps/SciColSim/testgraph.py 2012-12-19 14:06:35 UTC (rev 6109) +++ SwiftApps/SciColSim/testgraph.py 2012-12-23 04:33:21 UTC (rev 6110) @@ -138,12 +138,14 @@ endTarget = startTarget+1 incrTarget = 50 optimizerRepeats = 1 + # evolveReruns = 1 evolveReruns = 1 annealingSteps = 1 - NWorkers = "2" + NWorkers = "8" openmp = "OMP_NUM_THREADS=" + NWorkers operation = "m" # n=normal, m=manual (runs 1 multi_loss call) seed = "" # "123456" + app = "./openmp-optimizer"; app = "./graphsim"; # Ensure we dont pass new parameters to original optimizer versions @@ -158,9 +160,7 @@ for target in range(startTarget,endTarget,incrTarget): for i in range(optimizerRepeats): - args = "rm -f bestdb.txt; " + \ - openmp + " " + "/usr/bin/time -l " + \ - app + " 0 0 0 0 0 " + str(target) + " 40000 20 " + str(evolveReruns) + \ + args = "rm -f bestdb.txt;" + openmp +" " + "/usr/bin/time --verbose " + app + " 0 0 0 0 0 " + str(target) + " 40000 20 " + str(evolveReruns) + \ " 2 2 2. 0.01 " + str(annealingSteps) + " 0.3 2.3 0 0 0 0 0 " + operation + " " + NWorkers + " " + seed + \ " # >& out.T"+str(target)+".i"+str(i) + "; #mv bestdb.txt best.T" + str(target) + ".i" + str(i) print("\n**** Calling optimizer: "+args+"\n") From davidk at ci.uchicago.edu Wed Dec 5 14:21:36 2012 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 05 Dec 2012 20:21:36 -0000 Subject: [Swift-commit] r6099 - in SwiftTutorials/UofC_2012-11-27-fusion: . bin data scripts Message-ID: <20121205202135.D92CA9D050@svn.ci.uchicago.edu> Author: davidk Date: 2012-12-05 14:21:35 -0600 (Wed, 05 Dec 2012) New Revision: 6099 Added: SwiftTutorials/UofC_2012-11-27-fusion/README SwiftTutorials/UofC_2012-11-27-fusion/bin/ SwiftTutorials/UofC_2012-11-27-fusion/bin/cleanup SwiftTutorials/UofC_2012-11-27-fusion/bin/filterinfo.sh SwiftTutorials/UofC_2012-11-27-fusion/bin/genapplist SwiftTutorials/UofC_2012-11-27-fusion/bin/getinfo.sh SwiftTutorials/UofC_2012-11-27-fusion/bin/myapp SwiftTutorials/UofC_2012-11-27-fusion/bin/plot_pd.pl SwiftTutorials/UofC_2012-11-27-fusion/bin/rmsd.sh SwiftTutorials/UofC_2012-11-27-fusion/bin/runswift SwiftTutorials/UofC_2012-11-27-fusion/bin/setup.sh SwiftTutorials/UofC_2012-11-27-fusion/bin/suminfo.sh SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi.c SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi.sh SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.conf SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.pdb SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.psf SwiftTutorials/UofC_2012-11-27-fusion/data/ SwiftTutorials/UofC_2012-11-27-fusion/data/data.txt SwiftTutorials/UofC_2012-11-27-fusion/par_cg_clath.inp SwiftTutorials/UofC_2012-11-27-fusion/rmsd.temp.tcl SwiftTutorials/UofC_2012-11-27-fusion/scripts/ SwiftTutorials/UofC_2012-11-27-fusion/scripts/catsn.swift SwiftTutorials/UofC_2012-11-27-fusion/scripts/script01.swift SwiftTutorials/UofC_2012-11-27-fusion/scripts/script02.swift SwiftTutorials/UofC_2012-11-27-fusion/scripts/script03.swift SwiftTutorials/UofC_2012-11-27-fusion/scripts/script04.swift SwiftTutorials/UofC_2012-11-27-fusion/scripts/script05.swift SwiftTutorials/UofC_2012-11-27-fusion/scripts/script06.swift SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.kml SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.swift SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.swiftx Log: Files needed to run tutorials on fusion, with the additional of two new mpi examples Added: SwiftTutorials/UofC_2012-11-27-fusion/README =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/README (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/README 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,100 @@ + +INTRODUCTION TO SWIFT + +SETUP + +Obtain the tutorial package + +Change directory into the created directory called "tutorial" + +This directory contains: + +bin: script tools for the tutorial +scripts: Swift scripts for the tutorial + +An output directory will be created by the Swift scripts + + +Use bin/setup.sh to add tutorial programs to your PATH + +Run: + +source bin/setup.sh + +EXERCISE 1 - Run a simple command under Swift + +This script simply runs the getinfo command found in bin/getinfo.sh + +You can run this on the login node by typing: + +bin/getinfo.sh + +Inspect getinfo.sh to see what it does. + +The Swift syntax in scripts/script01.swift directs the output of +getinfo.sh to file output/info.txt + +Run the Swift script by typing: + +runswift scripts/script01.swift + +Check that the output is created in the output directory + +EXERCISE 2 - Run parallel jobs + +The Swift syntax in scripts/script02.swift runs the getinfo +script 25 times in parallel. Each job produces an output +file with a different name. + +runswift scripts/script02.swift + +Check that the output is created successfully + +EXERCISE 3 - Run parallel jobs with pipelines + +The Swift syntax in scripts/script02.swift runs the getinfo +script 25 times in parallel. Each job produces an output +file with a different name. Each output file is then read by the +filterinfo task, which produces output in _concurrent + +Inspect bin/filterinfo.sh to see what it does to the output of getinfo.sh + +runswift scripts/script03.swift + +EXERCISE 4 - Name files in pipelines + +In Exercise 3, the final outputs were named by Swift. +Exercise 4 is similar to 3 but allows you to name the final +outputs. Edit script04.swift to name the files in an appropriate +way. + +EXERCISE 5 - Reduction + +Exercise 5 allows you to collect all of the filtered outputs +and summarize them into one file. This Swift script allows +suminfo.sh to read all the files and collect a statistic. + +Inspect bin/suminfo.sh to see what it will do to the files it reads. + +EXERCISE 6 - Simple MPI test + +Exercise 6 is a simple MPI test. Each rank of the MPI job +runs a "hostname" command and creates a file. The files +get added to a tar file - output/results.tar. A wrapper +script, bin/testmpi.sh runs mpiexec to launch the test +mpi program. This application uses the Fusion batch +queue to request 2 nodes. + +View output/results.tar to see the results. + +EXERCISE 7 - NAMD MPI test + +Exercise 7 is a real application that runs NAMD +using MPI. It is a simple parameter sweep that +changes some values in the input files then does +the run. Like exercise 6, this uses the batch queue +with 2 nodes. + +CLEAN UP + +Simply run: bin/cleanup and enter y to confirm Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/cleanup =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/bin/cleanup (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/bin/cleanup 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,17 @@ +#! /bin/sh + +echo Removing: +echo +ls -ltd script??-* swiftwork _concurrent output *.kml *.swiftx swift.log applist config sites.xml pathlist 2>/dev/null +echo +echo Enter y to proceed: +read ok +if [ _$ok = _y -o _$ok = _Y -o _$ok = _yes ]; then + echo + set -x + rm -rf script??-* swiftwork _concurrent output *.kml *.swiftx swift.log applist config sites.xml pathlist +else + echo + echo No files removed. +fi + Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/bin/cleanup ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/filterinfo.sh =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/bin/filterinfo.sh (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/bin/filterinfo.sh 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,2 @@ +#! /bin/sh +grep getinfo.sh $1 | wc -l >$2 Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/bin/filterinfo.sh ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/genapplist =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/bin/genapplist (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/bin/genapplist 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,10 @@ +cat <", "output/rmsd_pd.dat"); + +# Bead names +my $b1name = "PX"; +my $b2name = "DT"; + +# Bead ranges +my $b1min=0.0; +my $b1max=10.0; + +my $b2min=0.0; +my $b2max=10.0; + +my $del=0.50; + +# Set large number to find RMSD min +my $rmsdmin = 123456789.0; +my $b1rmsdmin=0.0; +my $b2rmsdmin=0.0; + +my $b1=$b1min; + +while ($b1<=$b1max) +{ + my $b2=$b2min; + + while ($b2<=$b2max) + { + if (-s "output/rmsd.$b1name${b1}_$b2name${b2}.dat") + { + open(INPUT, "<", "output/rmsd.$b1name${b1}_$b2name${b2}.dat"); + $_ = ; + + my @data = split(/ +/,$_); + my $rmsd=$data[2]*1.0; + + # Find Minimum + if ($rmsd<$rmsdmin) + { + $rmsdmin=$rmsd; + $b1rmsdmin=$b1; + $b2rmsdmin=$b2; + } + + print OFILE "$b1 $b2 $rmsd\n"; + close(INPUT); + } + + $b2 = $b2+$del; + + } + + print OFILE " \n"; + $b1 = $b1+$del; + +} + +close(OFILE); + +print "Minimum Values\n"; +print "RMSD = $rmsdmin, eps_$b1name = $b1rmsdmin, eps_$b2name = $b2rmsdmin\n" ; Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/bin/plot_pd.pl ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/rmsd.sh =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/bin/rmsd.sh (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/bin/rmsd.sh 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,47 @@ +#!/bin/bash + +b1=$1 +b2=$2 +b1name=$3 +b2name=$4 +namd_input=$5 +namd_parameters=$6 +vmd_script=$7 + +echo Command line arguments: $@ +echo + +echo Hostname: $( hostname ) +echo + +echo File listing +echo ------------ +find +echo + +echo Running the following sed commands +echo sed -i -e s/BLAB1/$b1name$b1/ -e s/BLAB2/$b2name$b2/ -e s at __DIR__@$PWD@ $namd_input +echo sed -i -e s/BLAB1/$b1name$b1/ -e s/BLAB2/$b2name$b2/ -e s at __DIR__@$PWD@ $namd_input +echo sed -i -e s/HBEPS/-0.01/g -e s/PXEPS/-$b1/g -e s/DTEPS/-$b2/g -e s/AKEPS/-0.01/g -e s/LTEPS/-0.01/g $namd_parameters +sed -i -e s/BLAB1/$b1name$b1/g -e s/BLAB2/$b2name$b2/g -e s/B1/$b1/ -e s/B2/$b2/ $vmd_script +sed -i -e s/HBEPS/-0.01/g -e s/PXEPS/-$b1/g -e s/DTEPS/-$b2/g -e s/AKEPS/-0.01/g -e s/LTEPS/-0.01/g $namd_parameters +sed -i -e s/BLAB1/$b1name$b1/g -e s/BLAB2/$b2name$b2/g -e s/B1/$b1/ -e s/B2/$b2/ $vmd_script +echo Done with sed +echo + +namd2=$( which namd2 ) +echo Found namd2 at $namd2 +echo About to run mpiexec -machinefile $PBS_NODEFILE $namd2 $namd_input +mpiexec -machinefile $PBS_NODEFILE $namd2 $namd_input + +echo +echo About to run vmd -dispdev text -e $vmd_script +vmd -dispdev text -e $vmd_script + +mv output/cg_clath_cage.dcd output/cg_clath_cage-$b1-$b2.dcd +mv rmsd.dat output/rmsd.$b1name${b1}_$b2name${b2}.dat + +echo +echo Files at end of run +find +echo Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/bin/rmsd.sh ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/runswift =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/bin/runswift (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/bin/runswift 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,75 @@ +#! /bin/sh + +cat <pathlist +rule .*_concurrent/.* DIRECT $PWD/tmp +rule .* DIRECT / +END + +cat <config +status.mode=provider +use.provider.staging=false +use.wrapper.staging=false +wrapperlog.always.transfer=true +execution.retries=0 +lazy.errors=false +provider.staging.pin.swiftfiles=false +sitedir.keep=true +file.gc.enabled=false +tcp.port.range=50000,51000 +END + +reservationID=${reservationID:-swift} + +cat <sites.xml + + + + + + 0.03 + 10000 + + $PWD/swiftwork + + + + + + 3600 + 8 + shared + 1 + 1 + 1.0 + 100 + 100 + 100 + $PWD/swiftwork + + + + + + 60 + 1 + 8 + 5.99 + 10000 + 2 + single + $PWD/swiftwork + + + + +END + +genapplist >applist + +set -x +#swift -config config -tc.file applist -sites.file sites.xml -cdm.file pathlist $* +swift -config config -tc.file applist -sites.file sites.xml $* + + + + Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/bin/runswift ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/setup.sh =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/bin/setup.sh (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/bin/setup.sh 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1 @@ +PATH=/homes/davidk/swift-0.94/cog/modules/swift/dist/swift-svn/bin:/homes/davidk/namd_2.8-intel-openmpi:/homes/davidk/vmd:$PWD/bin:$PATH Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/suminfo.sh =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/bin/suminfo.sh (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/bin/suminfo.sh 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,2 @@ +#! /bin/sh +awk '{ sum += $1 } END { print "Total processes observed: " sum }' $* Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/bin/suminfo.sh ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi =================================================================== (Binary files differ) Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi.c =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi.c (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi.c 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,51 @@ +#include +#include +#include +#include + +int main (argc, argv) + int argc; + char *argv[]; +{ + int rank, size; + + MPI_Init (&argc, &argv); /* starts MPI */ + MPI_Comm_rank (MPI_COMM_WORLD, &rank); /* get current process id */ + MPI_Comm_size (MPI_COMM_WORLD, &size); /* get number of processes */ + + FILE *fp, *command; + char filename[100]; + char hostname[1024]; + + sprintf(filename, "output.%d.txt", rank); + printf("Trying to write output to %s\n", filename); + fp = fopen(filename, "w"); + + if (fp == NULL) { + printf("Unable to write file\n"); + exit(0); + } + + command = popen("/bin/hostname -f", "r"); + if(command == NULL) { + printf("Failed to run command\n"); + exit(1); + } + + while (fgets(hostname, sizeof(hostname)-1, command) != NULL) { + hostname[(strlen(hostname)-1)] = '\0'; + fprintf(fp, "Hostname: %s, rank: %d\n", hostname, rank); + } + + fclose(fp); + printf("Done writing output file %s\n", filename); + + MPI_Finalize(); + + // Create a tar file of results (only once) + if(rank == 0) { + system("mkdir output"); + system("tar cvf output/results.tar output*.txt"); + } + return 0; +} Added: SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi.sh =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi.sh (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi.sh 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,3 @@ +#!/bin/bash + +mpiexec -machinefile $PBS_NODEFILE /homes/davidk/testmpi/testmpi Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/bin/testmpi.sh ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.conf =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.conf (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.conf 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,83 @@ +# NAMD Config file - autogenerated by NAMDgui plugin +# Author: Jan Saam, saam at charite.de + +# input +coordinates cg_clath_cage.pdb +structure cg_clath_cage.psf +parameters par_cg_clath.inp +paratypecharmm on + +# output +set output output/cg_clath_cage +outputname $output +dcdfile ${output}.dcd +xstFile ${output}.xst +dcdfreq 1000 +xstFreq 1000 + +binaryoutput yes +binaryrestart yes +outputEnergies 1000 +restartfreq 1000 + +fixedAtoms off + +# Basic dynamics +exclude scaled1-4 +1-4scaling 1 +COMmotion no +dielectric 1.0 + + +# Simulation space partitioning +cutoff 350 +switching on +switchdist 348 +pairlistdist 352 + +# Multiple timestepping +firsttimestep 0 +timestep 10 +stepspercycle 1 +nonbondedFreq 1 +fullElectFrequency 1 +rigidBonds all + +# Temperature control + +set temperature 310 +temperature $temperature; # initial temperature + +# Langevin Dynamics +langevin on; # do langevin dynamics +langevinDamping 0.001 # damping coefficient (gamma) of 1/ps +langevinTemp $temperature; # bath temperature +langevinHydrogen no; # don't couple langevin bath to hydrogens + + + +# Scripting + +# Simulated Annealing +#reassignFreq 10000 +#reassignTemp 310 +#minimize 10000 +#for { set TEMP 310 } { $TEMP <= 650 } { incr TEMP 5 } { +# run 10000 +# reassignTemp $TEMP +# langevinTemp $TEMP +#} +# +#run 1000000 +# +#for { set TEMP 650 } { $TEMP >= 310 } { incr TEMP -5 } { +# reassignTemp $TEMP +# langevinTemp $TEMP +# run 10000 +#} +#run 1000000 + +minimize 1000 +reinitvels $temperature +run 2000 + Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.conf ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.pdb =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.pdb (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.pdb 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,470 @@ +REMARK original generated coordinate pdb file +ATOM 1 HB0 CLA X 1 92.981 164.025 331.473 1.00 0.00 A0 +ATOM 2 PX1 CLA X 1 136.274 211.422 275.579 1.00 0.00 A0 +ATOM 3 DT1 CLA X 1 200.662 208.148 159.192 1.00 0.00 A0 +ATOM 4 AK1 CLA X 1 243.304 111.359 96.656 1.00 0.00 A0 +ATOM 5 LT1 CLA X 1 223.763 18.662 85.497 1.00 0.00 A0 +ATOM 6 PX2 CLA X 1 126.815 89.000 352.917 1.00 0.00 A0 +ATOM 7 DT2 CLA X 1 128.673 -47.724 333.137 1.00 0.00 A0 +ATOM 8 AK2 CLA X 1 49.929-132.718 287.973 1.00 0.00 A0 +ATOM 9 LT2 CLA X 1 -24.828-143.462 235.435 1.00 0.00 A0 +ATOM 10 PX3 CLA X 1 10.483 180.619 340.613 1.00 0.00 A0 +ATOM 11 DT3 CLA X 1 -95.424 204.239 265.860 1.00 0.00 A0 +ATOM 12 AK3 CLA X 1 -101.877 231.712 146.926 1.00 0.00 A0 +ATOM 13 LT3 CLA X 1 -58.664 217.336 66.678 1.00 0.00 A0 +ATOM 14 HB0 CLA X 1 152.597 263.250 182.367 1.00 0.00 B0 +ATOM 15 PX1 CLA X 1 120.437 238.824 256.749 1.00 0.00 B0 +ATOM 16 DT1 CLA X 1 18.642 174.399 313.695 1.00 0.00 B0 +ATOM 17 AK1 CLA X 1 -88.420 151.452 262.690 1.00 0.00 B0 +ATOM 18 LT1 CLA X 1 -128.527 143.156 177.443 1.00 0.00 B0 +ATOM 19 PX2 CLA X 1 99.230 306.155 133.576 1.00 0.00 B0 +ATOM 20 DT2 CLA X 1 21.433 316.316 21.125 1.00 0.00 B0 +ATOM 21 AK2 CLA X 1 26.263 266.923 -95.151 1.00 0.00 B0 +ATOM 22 LT2 CLA X 1 58.151 195.850-145.576 1.00 0.00 B0 +ATOM 23 PX3 CLA X 1 223.451 225.604 155.002 1.00 0.00 B0 +ATOM 24 DT3 CLA X 1 275.701 105.136 138.751 1.00 0.00 B0 +ATOM 25 AK3 CLA X 1 235.267 1.374 186.863 1.00 0.00 B0 +ATOM 26 LT3 CLA X 1 155.819 -36.632 217.712 1.00 0.00 B0 +ATOM 27 HB0 CLA X 1 286.805 165.855 93.118 1.00 0.00 C0 +ATOM 28 PX1 CLA X 1 303.935 101.204 144.420 1.00 0.00 C0 +ATOM 29 DT1 CLA X 1 251.178 21.712 232.998 1.00 0.00 C0 +ATOM 30 AK1 CLA X 1 142.263 28.038 287.691 1.00 0.00 C0 +ATOM 31 LT1 CLA X 1 50.945 58.195 270.101 1.00 0.00 C0 +ATOM 32 PX2 CLA X 1 234.620 227.534 121.486 1.00 0.00 C0 +ATOM 33 DT2 CLA X 1 104.398 278.700 124.820 1.00 0.00 C0 +ATOM 34 AK2 CLA X 1 0.965 276.330 50.135 1.00 0.00 C0 +ATOM 35 LT2 CLA X 1 -42.600 228.187 -18.776 1.00 0.00 C0 +ATOM 36 PX3 CLA X 1 303.934 158.846 11.493 1.00 0.00 C0 +ATOM 37 DT3 CLA X 1 291.514 88.537-103.359 1.00 0.00 C0 +ATOM 38 AK3 CLA X 1 250.991 -24.248-144.395 1.00 0.00 C0 +ATOM 39 LT3 CLA X 1 191.706 -94.728-126.760 1.00 0.00 C0 +ATOM 40 HB0 CLA X 1 -95.559 162.537 331.473 1.00 0.00 A1 +ATOM 41 PX1 CLA X 1 -114.959 223.728 275.579 1.00 0.00 A1 +ATOM 42 DT1 CLA X 1 -79.930 277.853 159.192 1.00 0.00 A1 +ATOM 43 AK1 CLA X 1 25.213 266.386 96.656 1.00 0.00 A1 +ATOM 44 LT1 CLA X 1 95.719 203.115 85.497 1.00 0.00 A1 +ATOM 45 PX2 CLA X 1 -13.669 154.325 352.917 1.00 0.00 A1 +ATOM 46 DT2 CLA X 1 105.666 87.572 333.137 1.00 0.00 A1 +ATOM 47 AK2 CLA X 1 139.902 -23.120 287.973 1.00 0.00 A1 +ATOM 48 LT2 CLA X 1 111.827 -93.233 235.435 1.00 0.00 A1 +ATOM 49 PX3 CLA X 1 -151.180 99.388 340.613 1.00 0.00 A1 +ATOM 50 DT3 CLA X 1 -224.588 19.480 265.860 1.00 0.00 A1 +ATOM 51 AK3 CLA X 1 -251.607 27.627 146.926 1.00 0.00 A1 +ATOM 52 LT3 CLA X 1 -217.550 57.864 66.678 1.00 0.00 A1 +ATOM 53 HB0 CLA X 1 -151.683 263.777 182.367 1.00 0.00 B1 +ATOM 54 PX1 CLA X 1 -146.609 223.714 256.749 1.00 0.00 B1 +ATOM 55 DT1 CLA X 1 -141.713 103.344 313.695 1.00 0.00 B1 +ATOM 56 AK1 CLA X 1 -175.371 -0.848 262.690 1.00 0.00 B1 +ATOM 57 LT1 CLA X 1 -188.241 -39.730 177.443 1.00 0.00 B1 +ATOM 58 PX2 CLA X 1 -215.523 239.014 133.576 1.00 0.00 B1 +ATOM 59 DT2 CLA X 1 -263.221 176.720 21.125 1.00 0.00 B1 +ATOM 60 AK2 CLA X 1 -218.030 156.206 -95.151 1.00 0.00 B1 +ATOM 61 LT2 CLA X 1 -140.536 148.285-145.576 1.00 0.00 B1 +ATOM 62 PX3 CLA X 1 -83.654 306.316 155.002 1.00 0.00 B1 +ATOM 63 DT3 CLA X 1 46.800 291.332 138.751 1.00 0.00 B1 +ATOM 64 AK3 CLA X 1 116.444 204.434 186.863 1.00 0.00 B1 +ATOM 65 LT3 CLA X 1 109.634 116.627 217.712 1.00 0.00 B1 +ATOM 66 HB0 CLA X 1 -0.232 331.308 93.118 1.00 0.00 C1 +ATOM 67 PX1 CLA X 1 64.322 313.817 144.420 1.00 0.00 C1 +ATOM 68 DT1 CLA X 1 106.786 228.382 232.998 1.00 0.00 C1 +ATOM 69 AK1 CLA X 1 46.850 137.222 287.691 1.00 0.00 C1 +ATOM 70 LT1 CLA X 1 -24.926 73.217 270.101 1.00 0.00 C1 +ATOM 71 PX2 CLA X 1 -79.740 316.953 121.486 1.00 0.00 C1 +ATOM 72 DT2 CLA X 1 -189.163 229.761 124.820 1.00 0.00 C1 +ATOM 73 AK2 CLA X 1 -238.827 139.001 50.135 1.00 0.00 C1 +ATOM 74 LT2 CLA X 1 -218.915 77.201 -18.776 1.00 0.00 C1 +ATOM 75 PX3 CLA X 1 14.402 342.637 11.493 1.00 0.00 C1 +ATOM 76 DT3 CLA X 1 69.082 296.727-103.359 1.00 0.00 C1 +ATOM 77 AK3 CLA X 1 146.495 205.240-144.395 1.00 0.00 C1 +ATOM 78 LT3 CLA X 1 177.890 118.659-126.760 1.00 0.00 C1 +ATOM 79 HB0 CLA X 1 -188.541 -1.488 331.473 1.00 0.00 A2 +ATOM 80 PX1 CLA X 1 -251.234 12.306 275.579 1.00 0.00 A2 +ATOM 81 DT1 CLA X 1 -280.592 69.705 159.192 1.00 0.00 A2 +ATOM 82 AK1 CLA X 1 -218.091 155.028 96.656 1.00 0.00 A2 +ATOM 83 LT1 CLA X 1 -128.043 184.453 85.497 1.00 0.00 A2 +ATOM 84 PX2 CLA X 1 -140.484 65.324 352.917 1.00 0.00 A2 +ATOM 85 DT2 CLA X 1 -23.007 135.296 333.137 1.00 0.00 A2 +ATOM 86 AK2 CLA X 1 89.973 109.599 287.973 1.00 0.00 A2 +ATOM 87 LT2 CLA X 1 136.656 50.229 235.435 1.00 0.00 A2 +ATOM 88 PX3 CLA X 1 -161.662 -81.231 340.613 1.00 0.00 A2 +ATOM 89 DT3 CLA X 1 -129.164-184.759 265.860 1.00 0.00 A2 +ATOM 90 AK3 CLA X 1 -149.729-204.084 146.926 1.00 0.00 A2 +ATOM 91 LT3 CLA X 1 -158.887-159.472 66.678 1.00 0.00 A2 +ATOM 92 HB0 CLA X 1 -304.279 0.528 182.367 1.00 0.00 B2 +ATOM 93 PX1 CLA X 1 -267.047 -15.111 256.749 1.00 0.00 B2 +ATOM 94 DT1 CLA X 1 -160.355 -71.055 313.695 1.00 0.00 B2 +ATOM 95 AK1 CLA X 1 -86.951-152.300 262.690 1.00 0.00 B2 +ATOM 96 LT1 CLA X 1 -59.713-182.886 177.443 1.00 0.00 B2 +ATOM 97 PX2 CLA X 1 -314.754 -67.142 133.576 1.00 0.00 B2 +ATOM 98 DT2 CLA X 1 -284.654-139.597 21.125 1.00 0.00 B2 +ATOM 99 AK2 CLA X 1 -244.294-110.717 -95.151 1.00 0.00 B2 +ATOM 100 LT2 CLA X 1 -198.687 -47.565-145.576 1.00 0.00 B2 +ATOM 101 PX3 CLA X 1 -307.104 80.712 155.002 1.00 0.00 B2 +ATOM 102 DT3 CLA X 1 -228.901 186.196 138.751 1.00 0.00 B2 +ATOM 103 AK3 CLA X 1 -118.823 203.060 186.863 1.00 0.00 B2 +ATOM 104 LT3 CLA X 1 -46.185 153.259 217.712 1.00 0.00 B2 +ATOM 105 HB0 CLA X 1 -287.037 165.452 93.118 1.00 0.00 C2 +ATOM 106 PX1 CLA X 1 -239.613 212.613 144.420 1.00 0.00 C2 +ATOM 107 DT1 CLA X 1 -144.392 206.670 232.998 1.00 0.00 C2 +ATOM 108 AK1 CLA X 1 -95.413 109.184 287.691 1.00 0.00 C2 +ATOM 109 LT1 CLA X 1 -75.871 15.022 270.101 1.00 0.00 C2 +ATOM 110 PX2 CLA X 1 -314.360 89.420 121.486 1.00 0.00 C2 +ATOM 111 DT2 CLA X 1 -293.560 -48.939 124.820 1.00 0.00 C2 +ATOM 112 AK2 CLA X 1 -239.791-137.330 50.135 1.00 0.00 C2 +ATOM 113 LT2 CLA X 1 -176.315-150.986 -18.776 1.00 0.00 C2 +ATOM 114 PX3 CLA X 1 -289.532 183.791 11.493 1.00 0.00 C2 +ATOM 115 DT3 CLA X 1 -222.432 208.190-103.359 1.00 0.00 C2 +ATOM 116 AK3 CLA X 1 -104.496 229.489-144.395 1.00 0.00 C2 +ATOM 117 LT3 CLA X 1 -13.817 213.386-126.760 1.00 0.00 C2 +ATOM 118 HB0 CLA X 1 -92.981-164.025 331.473 1.00 0.00 A3 +ATOM 119 PX1 CLA X 1 -136.274-211.422 275.579 1.00 0.00 A3 +ATOM 120 DT1 CLA X 1 -200.662-208.148 159.192 1.00 0.00 A3 +ATOM 121 AK1 CLA X 1 -243.304-111.359 96.656 1.00 0.00 A3 +ATOM 122 LT1 CLA X 1 -223.763 -18.662 85.497 1.00 0.00 A3 +ATOM 123 PX2 CLA X 1 -126.815 -89.000 352.917 1.00 0.00 A3 +ATOM 124 DT2 CLA X 1 -128.673 47.724 333.137 1.00 0.00 A3 +ATOM 125 AK2 CLA X 1 -49.929 132.718 287.973 1.00 0.00 A3 +ATOM 126 LT2 CLA X 1 24.828 143.462 235.435 1.00 0.00 A3 +ATOM 127 PX3 CLA X 1 -10.483-180.619 340.613 1.00 0.00 A3 +ATOM 128 DT3 CLA X 1 95.424-204.239 265.860 1.00 0.00 A3 +ATOM 129 AK3 CLA X 1 101.877-231.712 146.926 1.00 0.00 A3 +ATOM 130 LT3 CLA X 1 58.664-217.336 66.678 1.00 0.00 A3 +ATOM 131 HB0 CLA X 1 -152.597-263.250 182.367 1.00 0.00 B3 +ATOM 132 PX1 CLA X 1 -120.437-238.824 256.749 1.00 0.00 B3 +ATOM 133 DT1 CLA X 1 -18.642-174.399 313.695 1.00 0.00 B3 +ATOM 134 AK1 CLA X 1 88.420-151.452 262.690 1.00 0.00 B3 +ATOM 135 LT1 CLA X 1 128.527-143.156 177.443 1.00 0.00 B3 +ATOM 136 PX2 CLA X 1 -99.230-306.155 133.576 1.00 0.00 B3 +ATOM 137 DT2 CLA X 1 -21.433-316.316 21.125 1.00 0.00 B3 +ATOM 138 AK2 CLA X 1 -26.263-266.923 -95.151 1.00 0.00 B3 +ATOM 139 LT2 CLA X 1 -58.151-195.850-145.576 1.00 0.00 B3 +ATOM 140 PX3 CLA X 1 -223.451-225.604 155.002 1.00 0.00 B3 +ATOM 141 DT3 CLA X 1 -275.701-105.136 138.751 1.00 0.00 B3 +ATOM 142 AK3 CLA X 1 -235.267 -1.374 186.863 1.00 0.00 B3 +ATOM 143 LT3 CLA X 1 -155.819 36.632 217.712 1.00 0.00 B3 +ATOM 144 HB0 CLA X 1 -286.805-165.855 93.118 1.00 0.00 C3 +ATOM 145 PX1 CLA X 1 -303.935-101.204 144.420 1.00 0.00 C3 +ATOM 146 DT1 CLA X 1 -251.178 -21.712 232.998 1.00 0.00 C3 +ATOM 147 AK1 CLA X 1 -142.263 -28.038 287.691 1.00 0.00 C3 +ATOM 148 LT1 CLA X 1 -50.945 -58.195 270.101 1.00 0.00 C3 +ATOM 149 PX2 CLA X 1 -234.620-227.534 121.486 1.00 0.00 C3 +ATOM 150 DT2 CLA X 1 -104.398-278.700 124.820 1.00 0.00 C3 +ATOM 151 AK2 CLA X 1 -0.965-276.330 50.135 1.00 0.00 C3 +ATOM 152 LT2 CLA X 1 42.600-228.187 -18.776 1.00 0.00 C3 +ATOM 153 PX3 CLA X 1 -303.934-158.846 11.493 1.00 0.00 C3 +ATOM 154 DT3 CLA X 1 -291.514 -88.537-103.359 1.00 0.00 C3 +ATOM 155 AK3 CLA X 1 -250.991 24.248-144.395 1.00 0.00 C3 +ATOM 156 LT3 CLA X 1 -191.706 94.728-126.760 1.00 0.00 C3 +ATOM 157 HB0 CLA X 1 95.559-162.537 331.473 1.00 0.00 A4 +ATOM 158 PX1 CLA X 1 114.959-223.728 275.579 1.00 0.00 A4 +ATOM 159 DT1 CLA X 1 79.930-277.853 159.192 1.00 0.00 A4 +ATOM 160 AK1 CLA X 1 -25.213-266.386 96.656 1.00 0.00 A4 +ATOM 161 LT1 CLA X 1 -95.719-203.115 85.497 1.00 0.00 A4 +ATOM 162 PX2 CLA X 1 13.669-154.325 352.917 1.00 0.00 A4 +ATOM 163 DT2 CLA X 1 -105.666 -87.572 333.137 1.00 0.00 A4 +ATOM 164 AK2 CLA X 1 -139.902 23.120 287.973 1.00 0.00 A4 +ATOM 165 LT2 CLA X 1 -111.827 93.233 235.435 1.00 0.00 A4 +ATOM 166 PX3 CLA X 1 151.180 -99.388 340.613 1.00 0.00 A4 +ATOM 167 DT3 CLA X 1 224.588 -19.480 265.860 1.00 0.00 A4 +ATOM 168 AK3 CLA X 1 251.607 -27.627 146.926 1.00 0.00 A4 +ATOM 169 LT3 CLA X 1 217.550 -57.864 66.678 1.00 0.00 A4 +ATOM 170 HB0 CLA X 1 151.683-263.777 182.367 1.00 0.00 B4 +ATOM 171 PX1 CLA X 1 146.609-223.714 256.749 1.00 0.00 B4 +ATOM 172 DT1 CLA X 1 141.713-103.344 313.695 1.00 0.00 B4 +ATOM 173 AK1 CLA X 1 175.371 0.848 262.690 1.00 0.00 B4 +ATOM 174 LT1 CLA X 1 188.241 39.730 177.443 1.00 0.00 B4 +ATOM 175 PX2 CLA X 1 215.523-239.014 133.576 1.00 0.00 B4 +ATOM 176 DT2 CLA X 1 263.221-176.720 21.125 1.00 0.00 B4 +ATOM 177 AK2 CLA X 1 218.030-156.206 -95.151 1.00 0.00 B4 +ATOM 178 LT2 CLA X 1 140.536-148.285-145.576 1.00 0.00 B4 +ATOM 179 PX3 CLA X 1 83.654-306.316 155.002 1.00 0.00 B4 +ATOM 180 DT3 CLA X 1 -46.800-291.332 138.751 1.00 0.00 B4 +ATOM 181 AK3 CLA X 1 -116.444-204.434 186.863 1.00 0.00 B4 +ATOM 182 LT3 CLA X 1 -109.634-116.627 217.712 1.00 0.00 B4 +ATOM 183 HB0 CLA X 1 0.232-331.308 93.118 1.00 0.00 C4 +ATOM 184 PX1 CLA X 1 -64.322-313.817 144.420 1.00 0.00 C4 +ATOM 185 DT1 CLA X 1 -106.786-228.382 232.998 1.00 0.00 C4 +ATOM 186 AK1 CLA X 1 -46.850-137.222 287.691 1.00 0.00 C4 +ATOM 187 LT1 CLA X 1 24.926 -73.217 270.101 1.00 0.00 C4 +ATOM 188 PX2 CLA X 1 79.740-316.953 121.486 1.00 0.00 C4 +ATOM 189 DT2 CLA X 1 189.163-229.761 124.820 1.00 0.00 C4 +ATOM 190 AK2 CLA X 1 238.827-139.001 50.135 1.00 0.00 C4 +ATOM 191 LT2 CLA X 1 218.915 -77.201 -18.776 1.00 0.00 C4 +ATOM 192 PX3 CLA X 1 -14.402-342.637 11.493 1.00 0.00 C4 +ATOM 193 DT3 CLA X 1 -69.082-296.727-103.359 1.00 0.00 C4 +ATOM 194 AK3 CLA X 1 -146.495-205.240-144.395 1.00 0.00 C4 +ATOM 195 LT3 CLA X 1 -177.890-118.659-126.760 1.00 0.00 C4 +ATOM 196 HB0 CLA X 1 188.541 1.488 331.473 1.00 0.00 A5 +ATOM 197 PX1 CLA X 1 251.234 -12.306 275.579 1.00 0.00 A5 +ATOM 198 DT1 CLA X 1 280.592 -69.705 159.192 1.00 0.00 A5 +ATOM 199 AK1 CLA X 1 218.091-155.028 96.656 1.00 0.00 A5 +ATOM 200 LT1 CLA X 1 128.043-184.453 85.497 1.00 0.00 A5 +ATOM 201 PX2 CLA X 1 140.484 -65.324 352.917 1.00 0.00 A5 +ATOM 202 DT2 CLA X 1 23.007-135.296 333.137 1.00 0.00 A5 +ATOM 203 AK2 CLA X 1 -89.973-109.599 287.973 1.00 0.00 A5 +ATOM 204 LT2 CLA X 1 -136.656 -50.229 235.435 1.00 0.00 A5 +ATOM 205 PX3 CLA X 1 161.662 81.231 340.613 1.00 0.00 A5 +ATOM 206 DT3 CLA X 1 129.164 184.759 265.860 1.00 0.00 A5 +ATOM 207 AK3 CLA X 1 149.729 204.084 146.926 1.00 0.00 A5 +ATOM 208 LT3 CLA X 1 158.887 159.472 66.678 1.00 0.00 A5 +ATOM 209 HB0 CLA X 1 304.279 -0.528 182.367 1.00 0.00 B5 +ATOM 210 PX1 CLA X 1 267.047 15.111 256.749 1.00 0.00 B5 +ATOM 211 DT1 CLA X 1 160.355 71.055 313.695 1.00 0.00 B5 +ATOM 212 AK1 CLA X 1 86.951 152.300 262.690 1.00 0.00 B5 +ATOM 213 LT1 CLA X 1 59.713 182.886 177.443 1.00 0.00 B5 +ATOM 214 PX2 CLA X 1 314.754 67.142 133.576 1.00 0.00 B5 +ATOM 215 DT2 CLA X 1 284.654 139.597 21.125 1.00 0.00 B5 +ATOM 216 AK2 CLA X 1 244.294 110.717 -95.151 1.00 0.00 B5 +ATOM 217 LT2 CLA X 1 198.687 47.565-145.576 1.00 0.00 B5 +ATOM 218 PX3 CLA X 1 307.104 -80.712 155.002 1.00 0.00 B5 +ATOM 219 DT3 CLA X 1 228.901-186.196 138.751 1.00 0.00 B5 +ATOM 220 AK3 CLA X 1 118.823-203.060 186.863 1.00 0.00 B5 +ATOM 221 LT3 CLA X 1 46.185-153.259 217.712 1.00 0.00 B5 +ATOM 222 HB0 CLA X 1 287.037-165.452 93.118 1.00 0.00 C5 +ATOM 223 PX1 CLA X 1 239.613-212.613 144.420 1.00 0.00 C5 +ATOM 224 DT1 CLA X 1 144.392-206.670 232.998 1.00 0.00 C5 +ATOM 225 AK1 CLA X 1 95.413-109.184 287.691 1.00 0.00 C5 +ATOM 226 LT1 CLA X 1 75.871 -15.022 270.101 1.00 0.00 C5 +ATOM 227 PX2 CLA X 1 314.360 -89.420 121.486 1.00 0.00 C5 +ATOM 228 DT2 CLA X 1 293.560 48.939 124.820 1.00 0.00 C5 +ATOM 229 AK2 CLA X 1 239.791 137.330 50.135 1.00 0.00 C5 +ATOM 230 LT2 CLA X 1 176.315 150.986 -18.776 1.00 0.00 C5 +ATOM 231 PX3 CLA X 1 289.532-183.791 11.493 1.00 0.00 C5 +ATOM 232 DT3 CLA X 1 222.432-208.190-103.359 1.00 0.00 C5 +ATOM 233 AK3 CLA X 1 104.496-229.489-144.395 1.00 0.00 C5 +ATOM 234 LT3 CLA X 1 13.817-213.386-126.760 1.00 0.00 C5 +ATOM 235 HB0 CLA X 1 95.559 162.537-331.473 1.00 0.00 A6 +ATOM 236 PX1 CLA X 1 114.959 223.728-275.579 1.00 0.00 A6 +ATOM 237 DT1 CLA X 1 79.930 277.853-159.192 1.00 0.00 A6 +ATOM 238 AK1 CLA X 1 -25.213 266.386 -96.656 1.00 0.00 A6 +ATOM 239 LT1 CLA X 1 -95.719 203.115 -85.497 1.00 0.00 A6 +ATOM 240 PX2 CLA X 1 13.669 154.325-352.917 1.00 0.00 A6 +ATOM 241 DT2 CLA X 1 -105.666 87.572-333.137 1.00 0.00 A6 +ATOM 242 AK2 CLA X 1 -139.902 -23.120-287.973 1.00 0.00 A6 +ATOM 243 LT2 CLA X 1 -111.827 -93.233-235.435 1.00 0.00 A6 +ATOM 244 PX3 CLA X 1 151.180 99.388-340.613 1.00 0.00 A6 +ATOM 245 DT3 CLA X 1 224.588 19.480-265.860 1.00 0.00 A6 +ATOM 246 AK3 CLA X 1 251.607 27.627-146.926 1.00 0.00 A6 +ATOM 247 LT3 CLA X 1 217.550 57.864 -66.678 1.00 0.00 A6 +ATOM 248 HB0 CLA X 1 151.683 263.777-182.367 1.00 0.00 B6 +ATOM 249 PX1 CLA X 1 146.609 223.714-256.749 1.00 0.00 B6 +ATOM 250 DT1 CLA X 1 141.713 103.344-313.695 1.00 0.00 B6 +ATOM 251 AK1 CLA X 1 175.371 -0.848-262.690 1.00 0.00 B6 +ATOM 252 LT1 CLA X 1 188.241 -39.730-177.443 1.00 0.00 B6 +ATOM 253 PX2 CLA X 1 215.523 239.014-133.576 1.00 0.00 B6 +ATOM 254 DT2 CLA X 1 263.221 176.720 -21.125 1.00 0.00 B6 +ATOM 255 AK2 CLA X 1 218.030 156.206 95.151 1.00 0.00 B6 +ATOM 256 LT2 CLA X 1 140.536 148.285 145.576 1.00 0.00 B6 +ATOM 257 PX3 CLA X 1 83.654 306.316-155.002 1.00 0.00 B6 +ATOM 258 DT3 CLA X 1 -46.800 291.332-138.751 1.00 0.00 B6 +ATOM 259 AK3 CLA X 1 -116.444 204.434-186.863 1.00 0.00 B6 +ATOM 260 LT3 CLA X 1 -109.634 116.627-217.712 1.00 0.00 B6 +ATOM 261 HB0 CLA X 1 0.232 331.308 -93.118 1.00 0.00 C6 +ATOM 262 PX1 CLA X 1 -64.322 313.817-144.420 1.00 0.00 C6 +ATOM 263 DT1 CLA X 1 -106.786 228.382-232.998 1.00 0.00 C6 +ATOM 264 AK1 CLA X 1 -46.850 137.222-287.691 1.00 0.00 C6 +ATOM 265 LT1 CLA X 1 24.926 73.217-270.101 1.00 0.00 C6 +ATOM 266 PX2 CLA X 1 79.740 316.953-121.486 1.00 0.00 C6 +ATOM 267 DT2 CLA X 1 189.163 229.761-124.820 1.00 0.00 C6 +ATOM 268 AK2 CLA X 1 238.827 139.001 -50.135 1.00 0.00 C6 +ATOM 269 LT2 CLA X 1 218.915 77.201 18.776 1.00 0.00 C6 +ATOM 270 PX3 CLA X 1 -14.402 342.637 -11.493 1.00 0.00 C6 +ATOM 271 DT3 CLA X 1 -69.082 296.727 103.359 1.00 0.00 C6 +ATOM 272 AK3 CLA X 1 -146.495 205.240 144.395 1.00 0.00 C6 +ATOM 273 LT3 CLA X 1 -177.890 118.659 126.760 1.00 0.00 C6 +ATOM 274 HB0 CLA X 1 188.541 -1.488-331.473 1.00 0.00 A7 +ATOM 275 PX1 CLA X 1 251.234 12.306-275.579 1.00 0.00 A7 +ATOM 276 DT1 CLA X 1 280.592 69.705-159.192 1.00 0.00 A7 +ATOM 277 AK1 CLA X 1 218.091 155.028 -96.656 1.00 0.00 A7 +ATOM 278 LT1 CLA X 1 128.043 184.453 -85.497 1.00 0.00 A7 +ATOM 279 PX2 CLA X 1 140.484 65.324-352.917 1.00 0.00 A7 +ATOM 280 DT2 CLA X 1 23.007 135.296-333.137 1.00 0.00 A7 +ATOM 281 AK2 CLA X 1 -89.973 109.599-287.973 1.00 0.00 A7 +ATOM 282 LT2 CLA X 1 -136.656 50.229-235.435 1.00 0.00 A7 +ATOM 283 PX3 CLA X 1 161.662 -81.231-340.613 1.00 0.00 A7 +ATOM 284 DT3 CLA X 1 129.164-184.759-265.860 1.00 0.00 A7 +ATOM 285 AK3 CLA X 1 149.729-204.084-146.926 1.00 0.00 A7 +ATOM 286 LT3 CLA X 1 158.887-159.472 -66.678 1.00 0.00 A7 +ATOM 287 HB0 CLA X 1 304.279 0.528-182.367 1.00 0.00 B7 +ATOM 288 PX1 CLA X 1 267.047 -15.111-256.749 1.00 0.00 B7 +ATOM 289 DT1 CLA X 1 160.355 -71.055-313.695 1.00 0.00 B7 +ATOM 290 AK1 CLA X 1 86.951-152.300-262.690 1.00 0.00 B7 +ATOM 291 LT1 CLA X 1 59.713-182.886-177.443 1.00 0.00 B7 +ATOM 292 PX2 CLA X 1 314.754 -67.142-133.576 1.00 0.00 B7 +ATOM 293 DT2 CLA X 1 284.654-139.597 -21.125 1.00 0.00 B7 +ATOM 294 AK2 CLA X 1 244.294-110.717 95.151 1.00 0.00 B7 +ATOM 295 LT2 CLA X 1 198.687 -47.565 145.576 1.00 0.00 B7 +ATOM 296 PX3 CLA X 1 307.104 80.712-155.002 1.00 0.00 B7 +ATOM 297 DT3 CLA X 1 228.901 186.196-138.751 1.00 0.00 B7 +ATOM 298 AK3 CLA X 1 118.823 203.060-186.863 1.00 0.00 B7 +ATOM 299 LT3 CLA X 1 46.185 153.259-217.712 1.00 0.00 B7 +ATOM 300 HB0 CLA X 1 287.037 165.452 -93.118 1.00 0.00 C7 +ATOM 301 PX1 CLA X 1 239.613 212.613-144.420 1.00 0.00 C7 +ATOM 302 DT1 CLA X 1 144.392 206.670-232.998 1.00 0.00 C7 +ATOM 303 AK1 CLA X 1 95.413 109.184-287.691 1.00 0.00 C7 +ATOM 304 LT1 CLA X 1 75.871 15.022-270.101 1.00 0.00 C7 +ATOM 305 PX2 CLA X 1 314.360 89.420-121.486 1.00 0.00 C7 +ATOM 306 DT2 CLA X 1 293.560 -48.939-124.820 1.00 0.00 C7 +ATOM 307 AK2 CLA X 1 239.791-137.330 -50.135 1.00 0.00 C7 +ATOM 308 LT2 CLA X 1 176.315-150.986 18.776 1.00 0.00 C7 +ATOM 309 PX3 CLA X 1 289.532 183.791 -11.493 1.00 0.00 C7 +ATOM 310 DT3 CLA X 1 222.432 208.190 103.359 1.00 0.00 C7 +ATOM 311 AK3 CLA X 1 104.496 229.489 144.395 1.00 0.00 C7 +ATOM 312 LT3 CLA X 1 13.817 213.386 126.760 1.00 0.00 C7 +ATOM 313 HB0 CLA X 1 92.981-164.025-331.473 1.00 0.00 A8 +ATOM 314 PX1 CLA X 1 136.274-211.422-275.579 1.00 0.00 A8 +ATOM 315 DT1 CLA X 1 200.662-208.148-159.192 1.00 0.00 A8 +ATOM 316 AK1 CLA X 1 243.304-111.359 -96.656 1.00 0.00 A8 +ATOM 317 LT1 CLA X 1 223.763 -18.662 -85.497 1.00 0.00 A8 +ATOM 318 PX2 CLA X 1 126.815 -89.000-352.917 1.00 0.00 A8 +ATOM 319 DT2 CLA X 1 128.673 47.724-333.137 1.00 0.00 A8 +ATOM 320 AK2 CLA X 1 49.929 132.718-287.973 1.00 0.00 A8 +ATOM 321 LT2 CLA X 1 -24.828 143.462-235.435 1.00 0.00 A8 +ATOM 322 PX3 CLA X 1 10.483-180.619-340.613 1.00 0.00 A8 +ATOM 323 DT3 CLA X 1 -95.424-204.239-265.860 1.00 0.00 A8 +ATOM 324 AK3 CLA X 1 -101.877-231.712-146.926 1.00 0.00 A8 +ATOM 325 LT3 CLA X 1 -58.664-217.336 -66.678 1.00 0.00 A8 +ATOM 326 HB0 CLA X 1 152.597-263.250-182.367 1.00 0.00 B8 +ATOM 327 PX1 CLA X 1 120.437-238.824-256.749 1.00 0.00 B8 +ATOM 328 DT1 CLA X 1 18.642-174.399-313.695 1.00 0.00 B8 +ATOM 329 AK1 CLA X 1 -88.420-151.452-262.690 1.00 0.00 B8 +ATOM 330 LT1 CLA X 1 -128.527-143.156-177.443 1.00 0.00 B8 +ATOM 331 PX2 CLA X 1 99.230-306.155-133.576 1.00 0.00 B8 +ATOM 332 DT2 CLA X 1 21.433-316.316 -21.125 1.00 0.00 B8 +ATOM 333 AK2 CLA X 1 26.263-266.923 95.151 1.00 0.00 B8 +ATOM 334 LT2 CLA X 1 58.151-195.850 145.576 1.00 0.00 B8 +ATOM 335 PX3 CLA X 1 223.451-225.604-155.002 1.00 0.00 B8 +ATOM 336 DT3 CLA X 1 275.701-105.136-138.751 1.00 0.00 B8 +ATOM 337 AK3 CLA X 1 235.267 -1.374-186.863 1.00 0.00 B8 +ATOM 338 LT3 CLA X 1 155.819 36.632-217.712 1.00 0.00 B8 +ATOM 339 HB0 CLA X 1 286.805-165.855 -93.118 1.00 0.00 C8 +ATOM 340 PX1 CLA X 1 303.935-101.204-144.420 1.00 0.00 C8 +ATOM 341 DT1 CLA X 1 251.178 -21.712-232.998 1.00 0.00 C8 +ATOM 342 AK1 CLA X 1 142.263 -28.038-287.691 1.00 0.00 C8 +ATOM 343 LT1 CLA X 1 50.945 -58.195-270.101 1.00 0.00 C8 +ATOM 344 PX2 CLA X 1 234.620-227.534-121.486 1.00 0.00 C8 +ATOM 345 DT2 CLA X 1 104.398-278.700-124.820 1.00 0.00 C8 +ATOM 346 AK2 CLA X 1 0.965-276.330 -50.135 1.00 0.00 C8 +ATOM 347 LT2 CLA X 1 -42.600-228.187 18.776 1.00 0.00 C8 +ATOM 348 PX3 CLA X 1 303.934-158.846 -11.493 1.00 0.00 C8 +ATOM 349 DT3 CLA X 1 291.514 -88.537 103.359 1.00 0.00 C8 +ATOM 350 AK3 CLA X 1 250.991 24.248 144.395 1.00 0.00 C8 +ATOM 351 LT3 CLA X 1 191.706 94.728 126.760 1.00 0.00 C8 +ATOM 352 HB0 CLA X 1 -95.559-162.537-331.473 1.00 0.00 A9 +ATOM 353 PX1 CLA X 1 -114.959-223.728-275.579 1.00 0.00 A9 +ATOM 354 DT1 CLA X 1 -79.930-277.853-159.192 1.00 0.00 A9 +ATOM 355 AK1 CLA X 1 25.213-266.386 -96.656 1.00 0.00 A9 +ATOM 356 LT1 CLA X 1 95.719-203.115 -85.497 1.00 0.00 A9 +ATOM 357 PX2 CLA X 1 -13.669-154.325-352.917 1.00 0.00 A9 +ATOM 358 DT2 CLA X 1 105.666 -87.572-333.137 1.00 0.00 A9 +ATOM 359 AK2 CLA X 1 139.902 23.120-287.973 1.00 0.00 A9 +ATOM 360 LT2 CLA X 1 111.827 93.233-235.435 1.00 0.00 A9 +ATOM 361 PX3 CLA X 1 -151.180 -99.388-340.613 1.00 0.00 A9 +ATOM 362 DT3 CLA X 1 -224.588 -19.480-265.860 1.00 0.00 A9 +ATOM 363 AK3 CLA X 1 -251.607 -27.627-146.926 1.00 0.00 A9 +ATOM 364 LT3 CLA X 1 -217.550 -57.864 -66.678 1.00 0.00 A9 +ATOM 365 HB0 CLA X 1 -151.683-263.777-182.367 1.00 0.00 B9 +ATOM 366 PX1 CLA X 1 -146.609-223.714-256.749 1.00 0.00 B9 +ATOM 367 DT1 CLA X 1 -141.713-103.344-313.695 1.00 0.00 B9 +ATOM 368 AK1 CLA X 1 -175.371 0.848-262.690 1.00 0.00 B9 +ATOM 369 LT1 CLA X 1 -188.241 39.730-177.443 1.00 0.00 B9 +ATOM 370 PX2 CLA X 1 -215.523-239.014-133.576 1.00 0.00 B9 +ATOM 371 DT2 CLA X 1 -263.221-176.720 -21.125 1.00 0.00 B9 +ATOM 372 AK2 CLA X 1 -218.030-156.206 95.151 1.00 0.00 B9 +ATOM 373 LT2 CLA X 1 -140.536-148.285 145.576 1.00 0.00 B9 +ATOM 374 PX3 CLA X 1 -83.654-306.316-155.002 1.00 0.00 B9 +ATOM 375 DT3 CLA X 1 46.800-291.332-138.751 1.00 0.00 B9 +ATOM 376 AK3 CLA X 1 116.444-204.434-186.863 1.00 0.00 B9 +ATOM 377 LT3 CLA X 1 109.634-116.627-217.712 1.00 0.00 B9 +ATOM 378 HB0 CLA X 1 -0.232-331.308 -93.118 1.00 0.00 C9 +ATOM 379 PX1 CLA X 1 64.322-313.817-144.420 1.00 0.00 C9 +ATOM 380 DT1 CLA X 1 106.786-228.382-232.998 1.00 0.00 C9 +ATOM 381 AK1 CLA X 1 46.850-137.222-287.691 1.00 0.00 C9 +ATOM 382 LT1 CLA X 1 -24.926 -73.217-270.101 1.00 0.00 C9 +ATOM 383 PX2 CLA X 1 -79.740-316.953-121.486 1.00 0.00 C9 +ATOM 384 DT2 CLA X 1 -189.163-229.761-124.820 1.00 0.00 C9 +ATOM 385 AK2 CLA X 1 -238.827-139.001 -50.135 1.00 0.00 C9 +ATOM 386 LT2 CLA X 1 -218.915 -77.201 18.776 1.00 0.00 C9 +ATOM 387 PX3 CLA X 1 14.402-342.637 -11.493 1.00 0.00 C9 +ATOM 388 DT3 CLA X 1 69.082-296.727 103.359 1.00 0.00 C9 +ATOM 389 AK3 CLA X 1 146.495-205.240 144.395 1.00 0.00 C9 +ATOM 390 LT3 CLA X 1 177.890-118.659 126.760 1.00 0.00 C9 +ATOM 391 HB0 CLA X 1 -188.541 1.488-331.473 1.00 0.00 A10 +ATOM 392 PX1 CLA X 1 -251.234 -12.306-275.579 1.00 0.00 A10 +ATOM 393 DT1 CLA X 1 -280.592 -69.705-159.192 1.00 0.00 A10 +ATOM 394 AK1 CLA X 1 -218.091-155.028 -96.656 1.00 0.00 A10 +ATOM 395 LT1 CLA X 1 -128.043-184.453 -85.497 1.00 0.00 A10 +ATOM 396 PX2 CLA X 1 -140.484 -65.324-352.917 1.00 0.00 A10 +ATOM 397 DT2 CLA X 1 -23.007-135.296-333.137 1.00 0.00 A10 +ATOM 398 AK2 CLA X 1 89.973-109.599-287.973 1.00 0.00 A10 +ATOM 399 LT2 CLA X 1 136.656 -50.229-235.435 1.00 0.00 A10 +ATOM 400 PX3 CLA X 1 -161.662 81.231-340.613 1.00 0.00 A10 +ATOM 401 DT3 CLA X 1 -129.164 184.759-265.860 1.00 0.00 A10 +ATOM 402 AK3 CLA X 1 -149.729 204.084-146.926 1.00 0.00 A10 +ATOM 403 LT3 CLA X 1 -158.887 159.472 -66.678 1.00 0.00 A10 +ATOM 404 HB0 CLA X 1 -304.279 -0.528-182.367 1.00 0.00 B10 +ATOM 405 PX1 CLA X 1 -267.047 15.111-256.749 1.00 0.00 B10 +ATOM 406 DT1 CLA X 1 -160.355 71.055-313.695 1.00 0.00 B10 +ATOM 407 AK1 CLA X 1 -86.951 152.300-262.690 1.00 0.00 B10 +ATOM 408 LT1 CLA X 1 -59.713 182.886-177.443 1.00 0.00 B10 +ATOM 409 PX2 CLA X 1 -314.754 67.142-133.576 1.00 0.00 B10 +ATOM 410 DT2 CLA X 1 -284.654 139.597 -21.125 1.00 0.00 B10 +ATOM 411 AK2 CLA X 1 -244.294 110.717 95.151 1.00 0.00 B10 +ATOM 412 LT2 CLA X 1 -198.687 47.565 145.576 1.00 0.00 B10 +ATOM 413 PX3 CLA X 1 -307.104 -80.712-155.002 1.00 0.00 B10 +ATOM 414 DT3 CLA X 1 -228.901-186.196-138.751 1.00 0.00 B10 +ATOM 415 AK3 CLA X 1 -118.823-203.060-186.863 1.00 0.00 B10 +ATOM 416 LT3 CLA X 1 -46.185-153.259-217.712 1.00 0.00 B10 +ATOM 417 HB0 CLA X 1 -287.037-165.452 -93.118 1.00 0.00 C10 +ATOM 418 PX1 CLA X 1 -239.613-212.613-144.420 1.00 0.00 C10 +ATOM 419 DT1 CLA X 1 -144.392-206.670-232.998 1.00 0.00 C10 +ATOM 420 AK1 CLA X 1 -95.413-109.184-287.691 1.00 0.00 C10 +ATOM 421 LT1 CLA X 1 -75.871 -15.022-270.101 1.00 0.00 C10 +ATOM 422 PX2 CLA X 1 -314.360 -89.420-121.486 1.00 0.00 C10 +ATOM 423 DT2 CLA X 1 -293.560 48.939-124.820 1.00 0.00 C10 +ATOM 424 AK2 CLA X 1 -239.791 137.330 -50.135 1.00 0.00 C10 +ATOM 425 LT2 CLA X 1 -176.315 150.986 18.776 1.00 0.00 C10 +ATOM 426 PX3 CLA X 1 -289.532-183.791 -11.493 1.00 0.00 C10 +ATOM 427 DT3 CLA X 1 -222.432-208.190 103.359 1.00 0.00 C10 +ATOM 428 AK3 CLA X 1 -104.496-229.489 144.395 1.00 0.00 C10 +ATOM 429 LT3 CLA X 1 -13.817-213.386 126.760 1.00 0.00 C10 +ATOM 430 HB0 CLA X 1 -92.981 164.025-331.473 1.00 0.00 A11 +ATOM 431 PX1 CLA X 1 -136.274 211.422-275.579 1.00 0.00 A11 +ATOM 432 DT1 CLA X 1 -200.662 208.148-159.192 1.00 0.00 A11 +ATOM 433 AK1 CLA X 1 -243.304 111.359 -96.656 1.00 0.00 A11 +ATOM 434 LT1 CLA X 1 -223.763 18.662 -85.497 1.00 0.00 A11 +ATOM 435 PX2 CLA X 1 -126.815 89.000-352.917 1.00 0.00 A11 +ATOM 436 DT2 CLA X 1 -128.673 -47.724-333.137 1.00 0.00 A11 +ATOM 437 AK2 CLA X 1 -49.929-132.718-287.973 1.00 0.00 A11 +ATOM 438 LT2 CLA X 1 24.828-143.462-235.435 1.00 0.00 A11 +ATOM 439 PX3 CLA X 1 -10.483 180.619-340.613 1.00 0.00 A11 +ATOM 440 DT3 CLA X 1 95.424 204.239-265.860 1.00 0.00 A11 +ATOM 441 AK3 CLA X 1 101.877 231.712-146.926 1.00 0.00 A11 +ATOM 442 LT3 CLA X 1 58.664 217.336 -66.678 1.00 0.00 A11 +ATOM 443 HB0 CLA X 1 -152.597 263.250-182.367 1.00 0.00 B11 +ATOM 444 PX1 CLA X 1 -120.437 238.824-256.749 1.00 0.00 B11 +ATOM 445 DT1 CLA X 1 -18.642 174.399-313.695 1.00 0.00 B11 +ATOM 446 AK1 CLA X 1 88.420 151.452-262.690 1.00 0.00 B11 +ATOM 447 LT1 CLA X 1 128.527 143.156-177.443 1.00 0.00 B11 +ATOM 448 PX2 CLA X 1 -99.230 306.155-133.576 1.00 0.00 B11 +ATOM 449 DT2 CLA X 1 -21.433 316.316 -21.125 1.00 0.00 B11 +ATOM 450 AK2 CLA X 1 -26.263 266.923 95.151 1.00 0.00 B11 +ATOM 451 LT2 CLA X 1 -58.151 195.850 145.576 1.00 0.00 B11 +ATOM 452 PX3 CLA X 1 -223.451 225.604-155.002 1.00 0.00 B11 +ATOM 453 DT3 CLA X 1 -275.701 105.136-138.751 1.00 0.00 B11 +ATOM 454 AK3 CLA X 1 -235.267 1.374-186.863 1.00 0.00 B11 +ATOM 455 LT3 CLA X 1 -155.819 -36.632-217.712 1.00 0.00 B11 +ATOM 456 HB0 CLA X 1 -286.805 165.855 -93.118 1.00 0.00 C11 +ATOM 457 PX1 CLA X 1 -303.935 101.204-144.420 1.00 0.00 C11 +ATOM 458 DT1 CLA X 1 -251.178 21.712-232.998 1.00 0.00 C11 +ATOM 459 AK1 CLA X 1 -142.263 28.038-287.691 1.00 0.00 C11 +ATOM 460 LT1 CLA X 1 -50.945 58.195-270.101 1.00 0.00 C11 +ATOM 461 PX2 CLA X 1 -234.620 227.534-121.486 1.00 0.00 C11 +ATOM 462 DT2 CLA X 1 -104.398 278.700-124.820 1.00 0.00 C11 +ATOM 463 AK2 CLA X 1 -0.965 276.330 -50.135 1.00 0.00 C11 +ATOM 464 LT2 CLA X 1 42.600 228.187 18.776 1.00 0.00 C11 +ATOM 465 PX3 CLA X 1 -303.934 158.846 -11.493 1.00 0.00 C11 +ATOM 466 DT3 CLA X 1 -291.514 88.537 103.359 1.00 0.00 C11 +ATOM 467 AK3 CLA X 1 -250.991 -24.248 144.395 1.00 0.00 C11 +ATOM 468 LT3 CLA X 1 -191.706 -94.728 126.760 1.00 0.00 C11 +END Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.pdb ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.psf =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.psf (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.psf 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,1078 @@ +PSF + + 38 !NTITLE + REMARKS original generated structure x-plor psf file + REMARKS topology top_cg_clath.impr.inp + REMARKS segment A0 { first NONE; last NONE; auto angles } + REMARKS segment B0 { first NONE; last NONE; auto angles } + REMARKS segment C0 { first NONE; last NONE; auto angles } + REMARKS segment A1 { first NONE; last NONE; auto angles } + REMARKS segment B1 { first NONE; last NONE; auto angles } + REMARKS segment C1 { first NONE; last NONE; auto angles } + REMARKS segment A2 { first NONE; last NONE; auto angles } + REMARKS segment B2 { first NONE; last NONE; auto angles } + REMARKS segment C2 { first NONE; last NONE; auto angles } + REMARKS segment A3 { first NONE; last NONE; auto angles } + REMARKS segment B3 { first NONE; last NONE; auto angles } + REMARKS segment C3 { first NONE; last NONE; auto angles } + REMARKS segment A4 { first NONE; last NONE; auto angles } + REMARKS segment B4 { first NONE; last NONE; auto angles } + REMARKS segment C4 { first NONE; last NONE; auto angles } + REMARKS segment A5 { first NONE; last NONE; auto angles } + REMARKS segment B5 { first NONE; last NONE; auto angles } + REMARKS segment C5 { first NONE; last NONE; auto angles } + REMARKS segment A6 { first NONE; last NONE; auto angles } + REMARKS segment B6 { first NONE; last NONE; auto angles } + REMARKS segment C6 { first NONE; last NONE; auto angles } + REMARKS segment A7 { first NONE; last NONE; auto angles } + REMARKS segment B7 { first NONE; last NONE; auto angles } + REMARKS segment C7 { first NONE; last NONE; auto angles } + REMARKS segment A8 { first NONE; last NONE; auto angles } + REMARKS segment B8 { first NONE; last NONE; auto angles } + REMARKS segment C8 { first NONE; last NONE; auto angles } + REMARKS segment A9 { first NONE; last NONE; auto angles } + REMARKS segment B9 { first NONE; last NONE; auto angles } + REMARKS segment C9 { first NONE; last NONE; auto angles } + REMARKS segment A10 { first NONE; last NONE; auto angles } + REMARKS segment B10 { first NONE; last NONE; auto angles } + REMARKS segment C10 { first NONE; last NONE; auto angles } + REMARKS segment A11 { first NONE; last NONE; auto angles } + REMARKS segment B11 { first NONE; last NONE; auto angles } + REMARKS segment C11 { first NONE; last NONE; auto angles } + + 468 !NATOM + 1 A0 1 CLA HB0 HB 0.000000 30478.0300 0 + 2 A0 1 CLA PX1 PX 0.000000 46422.2000 0 + 3 A0 1 CLA DT1 DT 0.000000 49195.2000 0 + 4 A0 1 CLA AK1 AK 0.000000 34620.7800 0 + 5 A0 1 CLA LT1 LT 0.000000 55013.7800 0 + 6 A0 1 CLA PX2 PX 0.000000 46422.2000 0 + 7 A0 1 CLA DT2 DT 0.000000 49195.2000 0 + 8 A0 1 CLA AK2 AK 0.000000 34620.7800 0 + 9 A0 1 CLA LT2 LT 0.000000 55013.7800 0 + 10 A0 1 CLA PX3 PX 0.000000 46422.2000 0 + 11 A0 1 CLA DT3 DT 0.000000 49195.2000 0 + 12 A0 1 CLA AK3 AK 0.000000 34620.7800 0 + 13 A0 1 CLA LT3 LT 0.000000 55013.7800 0 + 14 B0 1 CLA HB0 HB 0.000000 30478.0300 0 + 15 B0 1 CLA PX1 PX 0.000000 46422.2000 0 + 16 B0 1 CLA DT1 DT 0.000000 49195.2000 0 + 17 B0 1 CLA AK1 AK 0.000000 34620.7800 0 + 18 B0 1 CLA LT1 LT 0.000000 55013.7800 0 + 19 B0 1 CLA PX2 PX 0.000000 46422.2000 0 + 20 B0 1 CLA DT2 DT 0.000000 49195.2000 0 + 21 B0 1 CLA AK2 AK 0.000000 34620.7800 0 + 22 B0 1 CLA LT2 LT 0.000000 55013.7800 0 + 23 B0 1 CLA PX3 PX 0.000000 46422.2000 0 + 24 B0 1 CLA DT3 DT 0.000000 49195.2000 0 + 25 B0 1 CLA AK3 AK 0.000000 34620.7800 0 + 26 B0 1 CLA LT3 LT 0.000000 55013.7800 0 + 27 C0 1 CLA HB0 HB 0.000000 30478.0300 0 + 28 C0 1 CLA PX1 PX 0.000000 46422.2000 0 + 29 C0 1 CLA DT1 DT 0.000000 49195.2000 0 + 30 C0 1 CLA AK1 AK 0.000000 34620.7800 0 + 31 C0 1 CLA LT1 LT 0.000000 55013.7800 0 + 32 C0 1 CLA PX2 PX 0.000000 46422.2000 0 + 33 C0 1 CLA DT2 DT 0.000000 49195.2000 0 + 34 C0 1 CLA AK2 AK 0.000000 34620.7800 0 + 35 C0 1 CLA LT2 LT 0.000000 55013.7800 0 + 36 C0 1 CLA PX3 PX 0.000000 46422.2000 0 + 37 C0 1 CLA DT3 DT 0.000000 49195.2000 0 + 38 C0 1 CLA AK3 AK 0.000000 34620.7800 0 + 39 C0 1 CLA LT3 LT 0.000000 55013.7800 0 + 40 A1 1 CLA HB0 HB 0.000000 30478.0300 0 + 41 A1 1 CLA PX1 PX 0.000000 46422.2000 0 + 42 A1 1 CLA DT1 DT 0.000000 49195.2000 0 + 43 A1 1 CLA AK1 AK 0.000000 34620.7800 0 + 44 A1 1 CLA LT1 LT 0.000000 55013.7800 0 + 45 A1 1 CLA PX2 PX 0.000000 46422.2000 0 + 46 A1 1 CLA DT2 DT 0.000000 49195.2000 0 + 47 A1 1 CLA AK2 AK 0.000000 34620.7800 0 + 48 A1 1 CLA LT2 LT 0.000000 55013.7800 0 + 49 A1 1 CLA PX3 PX 0.000000 46422.2000 0 + 50 A1 1 CLA DT3 DT 0.000000 49195.2000 0 + 51 A1 1 CLA AK3 AK 0.000000 34620.7800 0 + 52 A1 1 CLA LT3 LT 0.000000 55013.7800 0 + 53 B1 1 CLA HB0 HB 0.000000 30478.0300 0 + 54 B1 1 CLA PX1 PX 0.000000 46422.2000 0 + 55 B1 1 CLA DT1 DT 0.000000 49195.2000 0 + 56 B1 1 CLA AK1 AK 0.000000 34620.7800 0 + 57 B1 1 CLA LT1 LT 0.000000 55013.7800 0 + 58 B1 1 CLA PX2 PX 0.000000 46422.2000 0 + 59 B1 1 CLA DT2 DT 0.000000 49195.2000 0 + 60 B1 1 CLA AK2 AK 0.000000 34620.7800 0 + 61 B1 1 CLA LT2 LT 0.000000 55013.7800 0 + 62 B1 1 CLA PX3 PX 0.000000 46422.2000 0 + 63 B1 1 CLA DT3 DT 0.000000 49195.2000 0 + 64 B1 1 CLA AK3 AK 0.000000 34620.7800 0 + 65 B1 1 CLA LT3 LT 0.000000 55013.7800 0 + 66 C1 1 CLA HB0 HB 0.000000 30478.0300 0 + 67 C1 1 CLA PX1 PX 0.000000 46422.2000 0 + 68 C1 1 CLA DT1 DT 0.000000 49195.2000 0 + 69 C1 1 CLA AK1 AK 0.000000 34620.7800 0 + 70 C1 1 CLA LT1 LT 0.000000 55013.7800 0 + 71 C1 1 CLA PX2 PX 0.000000 46422.2000 0 + 72 C1 1 CLA DT2 DT 0.000000 49195.2000 0 + 73 C1 1 CLA AK2 AK 0.000000 34620.7800 0 + 74 C1 1 CLA LT2 LT 0.000000 55013.7800 0 + 75 C1 1 CLA PX3 PX 0.000000 46422.2000 0 + 76 C1 1 CLA DT3 DT 0.000000 49195.2000 0 + 77 C1 1 CLA AK3 AK 0.000000 34620.7800 0 + 78 C1 1 CLA LT3 LT 0.000000 55013.7800 0 + 79 A2 1 CLA HB0 HB 0.000000 30478.0300 0 + 80 A2 1 CLA PX1 PX 0.000000 46422.2000 0 + 81 A2 1 CLA DT1 DT 0.000000 49195.2000 0 + 82 A2 1 CLA AK1 AK 0.000000 34620.7800 0 + 83 A2 1 CLA LT1 LT 0.000000 55013.7800 0 + 84 A2 1 CLA PX2 PX 0.000000 46422.2000 0 + 85 A2 1 CLA DT2 DT 0.000000 49195.2000 0 + 86 A2 1 CLA AK2 AK 0.000000 34620.7800 0 + 87 A2 1 CLA LT2 LT 0.000000 55013.7800 0 + 88 A2 1 CLA PX3 PX 0.000000 46422.2000 0 + 89 A2 1 CLA DT3 DT 0.000000 49195.2000 0 + 90 A2 1 CLA AK3 AK 0.000000 34620.7800 0 + 91 A2 1 CLA LT3 LT 0.000000 55013.7800 0 + 92 B2 1 CLA HB0 HB 0.000000 30478.0300 0 + 93 B2 1 CLA PX1 PX 0.000000 46422.2000 0 + 94 B2 1 CLA DT1 DT 0.000000 49195.2000 0 + 95 B2 1 CLA AK1 AK 0.000000 34620.7800 0 + 96 B2 1 CLA LT1 LT 0.000000 55013.7800 0 + 97 B2 1 CLA PX2 PX 0.000000 46422.2000 0 + 98 B2 1 CLA DT2 DT 0.000000 49195.2000 0 + 99 B2 1 CLA AK2 AK 0.000000 34620.7800 0 + 100 B2 1 CLA LT2 LT 0.000000 55013.7800 0 + 101 B2 1 CLA PX3 PX 0.000000 46422.2000 0 + 102 B2 1 CLA DT3 DT 0.000000 49195.2000 0 + 103 B2 1 CLA AK3 AK 0.000000 34620.7800 0 + 104 B2 1 CLA LT3 LT 0.000000 55013.7800 0 + 105 C2 1 CLA HB0 HB 0.000000 30478.0300 0 + 106 C2 1 CLA PX1 PX 0.000000 46422.2000 0 + 107 C2 1 CLA DT1 DT 0.000000 49195.2000 0 + 108 C2 1 CLA AK1 AK 0.000000 34620.7800 0 + 109 C2 1 CLA LT1 LT 0.000000 55013.7800 0 + 110 C2 1 CLA PX2 PX 0.000000 46422.2000 0 + 111 C2 1 CLA DT2 DT 0.000000 49195.2000 0 + 112 C2 1 CLA AK2 AK 0.000000 34620.7800 0 + 113 C2 1 CLA LT2 LT 0.000000 55013.7800 0 + 114 C2 1 CLA PX3 PX 0.000000 46422.2000 0 + 115 C2 1 CLA DT3 DT 0.000000 49195.2000 0 + 116 C2 1 CLA AK3 AK 0.000000 34620.7800 0 + 117 C2 1 CLA LT3 LT 0.000000 55013.7800 0 + 118 A3 1 CLA HB0 HB 0.000000 30478.0300 0 + 119 A3 1 CLA PX1 PX 0.000000 46422.2000 0 + 120 A3 1 CLA DT1 DT 0.000000 49195.2000 0 + 121 A3 1 CLA AK1 AK 0.000000 34620.7800 0 + 122 A3 1 CLA LT1 LT 0.000000 55013.7800 0 + 123 A3 1 CLA PX2 PX 0.000000 46422.2000 0 + 124 A3 1 CLA DT2 DT 0.000000 49195.2000 0 + 125 A3 1 CLA AK2 AK 0.000000 34620.7800 0 + 126 A3 1 CLA LT2 LT 0.000000 55013.7800 0 + 127 A3 1 CLA PX3 PX 0.000000 46422.2000 0 + 128 A3 1 CLA DT3 DT 0.000000 49195.2000 0 + 129 A3 1 CLA AK3 AK 0.000000 34620.7800 0 + 130 A3 1 CLA LT3 LT 0.000000 55013.7800 0 + 131 B3 1 CLA HB0 HB 0.000000 30478.0300 0 + 132 B3 1 CLA PX1 PX 0.000000 46422.2000 0 + 133 B3 1 CLA DT1 DT 0.000000 49195.2000 0 + 134 B3 1 CLA AK1 AK 0.000000 34620.7800 0 + 135 B3 1 CLA LT1 LT 0.000000 55013.7800 0 + 136 B3 1 CLA PX2 PX 0.000000 46422.2000 0 + 137 B3 1 CLA DT2 DT 0.000000 49195.2000 0 + 138 B3 1 CLA AK2 AK 0.000000 34620.7800 0 + 139 B3 1 CLA LT2 LT 0.000000 55013.7800 0 + 140 B3 1 CLA PX3 PX 0.000000 46422.2000 0 + 141 B3 1 CLA DT3 DT 0.000000 49195.2000 0 + 142 B3 1 CLA AK3 AK 0.000000 34620.7800 0 + 143 B3 1 CLA LT3 LT 0.000000 55013.7800 0 + 144 C3 1 CLA HB0 HB 0.000000 30478.0300 0 + 145 C3 1 CLA PX1 PX 0.000000 46422.2000 0 + 146 C3 1 CLA DT1 DT 0.000000 49195.2000 0 + 147 C3 1 CLA AK1 AK 0.000000 34620.7800 0 + 148 C3 1 CLA LT1 LT 0.000000 55013.7800 0 + 149 C3 1 CLA PX2 PX 0.000000 46422.2000 0 + 150 C3 1 CLA DT2 DT 0.000000 49195.2000 0 + 151 C3 1 CLA AK2 AK 0.000000 34620.7800 0 + 152 C3 1 CLA LT2 LT 0.000000 55013.7800 0 + 153 C3 1 CLA PX3 PX 0.000000 46422.2000 0 + 154 C3 1 CLA DT3 DT 0.000000 49195.2000 0 + 155 C3 1 CLA AK3 AK 0.000000 34620.7800 0 + 156 C3 1 CLA LT3 LT 0.000000 55013.7800 0 + 157 A4 1 CLA HB0 HB 0.000000 30478.0300 0 + 158 A4 1 CLA PX1 PX 0.000000 46422.2000 0 + 159 A4 1 CLA DT1 DT 0.000000 49195.2000 0 + 160 A4 1 CLA AK1 AK 0.000000 34620.7800 0 + 161 A4 1 CLA LT1 LT 0.000000 55013.7800 0 + 162 A4 1 CLA PX2 PX 0.000000 46422.2000 0 + 163 A4 1 CLA DT2 DT 0.000000 49195.2000 0 + 164 A4 1 CLA AK2 AK 0.000000 34620.7800 0 + 165 A4 1 CLA LT2 LT 0.000000 55013.7800 0 + 166 A4 1 CLA PX3 PX 0.000000 46422.2000 0 + 167 A4 1 CLA DT3 DT 0.000000 49195.2000 0 + 168 A4 1 CLA AK3 AK 0.000000 34620.7800 0 + 169 A4 1 CLA LT3 LT 0.000000 55013.7800 0 + 170 B4 1 CLA HB0 HB 0.000000 30478.0300 0 + 171 B4 1 CLA PX1 PX 0.000000 46422.2000 0 + 172 B4 1 CLA DT1 DT 0.000000 49195.2000 0 + 173 B4 1 CLA AK1 AK 0.000000 34620.7800 0 + 174 B4 1 CLA LT1 LT 0.000000 55013.7800 0 + 175 B4 1 CLA PX2 PX 0.000000 46422.2000 0 + 176 B4 1 CLA DT2 DT 0.000000 49195.2000 0 + 177 B4 1 CLA AK2 AK 0.000000 34620.7800 0 + 178 B4 1 CLA LT2 LT 0.000000 55013.7800 0 + 179 B4 1 CLA PX3 PX 0.000000 46422.2000 0 + 180 B4 1 CLA DT3 DT 0.000000 49195.2000 0 + 181 B4 1 CLA AK3 AK 0.000000 34620.7800 0 + 182 B4 1 CLA LT3 LT 0.000000 55013.7800 0 + 183 C4 1 CLA HB0 HB 0.000000 30478.0300 0 + 184 C4 1 CLA PX1 PX 0.000000 46422.2000 0 + 185 C4 1 CLA DT1 DT 0.000000 49195.2000 0 + 186 C4 1 CLA AK1 AK 0.000000 34620.7800 0 + 187 C4 1 CLA LT1 LT 0.000000 55013.7800 0 + 188 C4 1 CLA PX2 PX 0.000000 46422.2000 0 + 189 C4 1 CLA DT2 DT 0.000000 49195.2000 0 + 190 C4 1 CLA AK2 AK 0.000000 34620.7800 0 + 191 C4 1 CLA LT2 LT 0.000000 55013.7800 0 + 192 C4 1 CLA PX3 PX 0.000000 46422.2000 0 + 193 C4 1 CLA DT3 DT 0.000000 49195.2000 0 + 194 C4 1 CLA AK3 AK 0.000000 34620.7800 0 + 195 C4 1 CLA LT3 LT 0.000000 55013.7800 0 + 196 A5 1 CLA HB0 HB 0.000000 30478.0300 0 + 197 A5 1 CLA PX1 PX 0.000000 46422.2000 0 + 198 A5 1 CLA DT1 DT 0.000000 49195.2000 0 + 199 A5 1 CLA AK1 AK 0.000000 34620.7800 0 + 200 A5 1 CLA LT1 LT 0.000000 55013.7800 0 + 201 A5 1 CLA PX2 PX 0.000000 46422.2000 0 + 202 A5 1 CLA DT2 DT 0.000000 49195.2000 0 + 203 A5 1 CLA AK2 AK 0.000000 34620.7800 0 + 204 A5 1 CLA LT2 LT 0.000000 55013.7800 0 + 205 A5 1 CLA PX3 PX 0.000000 46422.2000 0 + 206 A5 1 CLA DT3 DT 0.000000 49195.2000 0 + 207 A5 1 CLA AK3 AK 0.000000 34620.7800 0 + 208 A5 1 CLA LT3 LT 0.000000 55013.7800 0 + 209 B5 1 CLA HB0 HB 0.000000 30478.0300 0 + 210 B5 1 CLA PX1 PX 0.000000 46422.2000 0 + 211 B5 1 CLA DT1 DT 0.000000 49195.2000 0 + 212 B5 1 CLA AK1 AK 0.000000 34620.7800 0 + 213 B5 1 CLA LT1 LT 0.000000 55013.7800 0 + 214 B5 1 CLA PX2 PX 0.000000 46422.2000 0 + 215 B5 1 CLA DT2 DT 0.000000 49195.2000 0 + 216 B5 1 CLA AK2 AK 0.000000 34620.7800 0 + 217 B5 1 CLA LT2 LT 0.000000 55013.7800 0 + 218 B5 1 CLA PX3 PX 0.000000 46422.2000 0 + 219 B5 1 CLA DT3 DT 0.000000 49195.2000 0 + 220 B5 1 CLA AK3 AK 0.000000 34620.7800 0 + 221 B5 1 CLA LT3 LT 0.000000 55013.7800 0 + 222 C5 1 CLA HB0 HB 0.000000 30478.0300 0 + 223 C5 1 CLA PX1 PX 0.000000 46422.2000 0 + 224 C5 1 CLA DT1 DT 0.000000 49195.2000 0 + 225 C5 1 CLA AK1 AK 0.000000 34620.7800 0 + 226 C5 1 CLA LT1 LT 0.000000 55013.7800 0 + 227 C5 1 CLA PX2 PX 0.000000 46422.2000 0 + 228 C5 1 CLA DT2 DT 0.000000 49195.2000 0 + 229 C5 1 CLA AK2 AK 0.000000 34620.7800 0 + 230 C5 1 CLA LT2 LT 0.000000 55013.7800 0 + 231 C5 1 CLA PX3 PX 0.000000 46422.2000 0 + 232 C5 1 CLA DT3 DT 0.000000 49195.2000 0 + 233 C5 1 CLA AK3 AK 0.000000 34620.7800 0 + 234 C5 1 CLA LT3 LT 0.000000 55013.7800 0 + 235 A6 1 CLA HB0 HB 0.000000 30478.0300 0 + 236 A6 1 CLA PX1 PX 0.000000 46422.2000 0 + 237 A6 1 CLA DT1 DT 0.000000 49195.2000 0 + 238 A6 1 CLA AK1 AK 0.000000 34620.7800 0 + 239 A6 1 CLA LT1 LT 0.000000 55013.7800 0 + 240 A6 1 CLA PX2 PX 0.000000 46422.2000 0 + 241 A6 1 CLA DT2 DT 0.000000 49195.2000 0 + 242 A6 1 CLA AK2 AK 0.000000 34620.7800 0 + 243 A6 1 CLA LT2 LT 0.000000 55013.7800 0 + 244 A6 1 CLA PX3 PX 0.000000 46422.2000 0 + 245 A6 1 CLA DT3 DT 0.000000 49195.2000 0 + 246 A6 1 CLA AK3 AK 0.000000 34620.7800 0 + 247 A6 1 CLA LT3 LT 0.000000 55013.7800 0 + 248 B6 1 CLA HB0 HB 0.000000 30478.0300 0 + 249 B6 1 CLA PX1 PX 0.000000 46422.2000 0 + 250 B6 1 CLA DT1 DT 0.000000 49195.2000 0 + 251 B6 1 CLA AK1 AK 0.000000 34620.7800 0 + 252 B6 1 CLA LT1 LT 0.000000 55013.7800 0 + 253 B6 1 CLA PX2 PX 0.000000 46422.2000 0 + 254 B6 1 CLA DT2 DT 0.000000 49195.2000 0 + 255 B6 1 CLA AK2 AK 0.000000 34620.7800 0 + 256 B6 1 CLA LT2 LT 0.000000 55013.7800 0 + 257 B6 1 CLA PX3 PX 0.000000 46422.2000 0 + 258 B6 1 CLA DT3 DT 0.000000 49195.2000 0 + 259 B6 1 CLA AK3 AK 0.000000 34620.7800 0 + 260 B6 1 CLA LT3 LT 0.000000 55013.7800 0 + 261 C6 1 CLA HB0 HB 0.000000 30478.0300 0 + 262 C6 1 CLA PX1 PX 0.000000 46422.2000 0 + 263 C6 1 CLA DT1 DT 0.000000 49195.2000 0 + 264 C6 1 CLA AK1 AK 0.000000 34620.7800 0 + 265 C6 1 CLA LT1 LT 0.000000 55013.7800 0 + 266 C6 1 CLA PX2 PX 0.000000 46422.2000 0 + 267 C6 1 CLA DT2 DT 0.000000 49195.2000 0 + 268 C6 1 CLA AK2 AK 0.000000 34620.7800 0 + 269 C6 1 CLA LT2 LT 0.000000 55013.7800 0 + 270 C6 1 CLA PX3 PX 0.000000 46422.2000 0 + 271 C6 1 CLA DT3 DT 0.000000 49195.2000 0 + 272 C6 1 CLA AK3 AK 0.000000 34620.7800 0 + 273 C6 1 CLA LT3 LT 0.000000 55013.7800 0 + 274 A7 1 CLA HB0 HB 0.000000 30478.0300 0 + 275 A7 1 CLA PX1 PX 0.000000 46422.2000 0 + 276 A7 1 CLA DT1 DT 0.000000 49195.2000 0 + 277 A7 1 CLA AK1 AK 0.000000 34620.7800 0 + 278 A7 1 CLA LT1 LT 0.000000 55013.7800 0 + 279 A7 1 CLA PX2 PX 0.000000 46422.2000 0 + 280 A7 1 CLA DT2 DT 0.000000 49195.2000 0 + 281 A7 1 CLA AK2 AK 0.000000 34620.7800 0 + 282 A7 1 CLA LT2 LT 0.000000 55013.7800 0 + 283 A7 1 CLA PX3 PX 0.000000 46422.2000 0 + 284 A7 1 CLA DT3 DT 0.000000 49195.2000 0 + 285 A7 1 CLA AK3 AK 0.000000 34620.7800 0 + 286 A7 1 CLA LT3 LT 0.000000 55013.7800 0 + 287 B7 1 CLA HB0 HB 0.000000 30478.0300 0 + 288 B7 1 CLA PX1 PX 0.000000 46422.2000 0 + 289 B7 1 CLA DT1 DT 0.000000 49195.2000 0 + 290 B7 1 CLA AK1 AK 0.000000 34620.7800 0 + 291 B7 1 CLA LT1 LT 0.000000 55013.7800 0 + 292 B7 1 CLA PX2 PX 0.000000 46422.2000 0 + 293 B7 1 CLA DT2 DT 0.000000 49195.2000 0 + 294 B7 1 CLA AK2 AK 0.000000 34620.7800 0 + 295 B7 1 CLA LT2 LT 0.000000 55013.7800 0 + 296 B7 1 CLA PX3 PX 0.000000 46422.2000 0 + 297 B7 1 CLA DT3 DT 0.000000 49195.2000 0 + 298 B7 1 CLA AK3 AK 0.000000 34620.7800 0 + 299 B7 1 CLA LT3 LT 0.000000 55013.7800 0 + 300 C7 1 CLA HB0 HB 0.000000 30478.0300 0 + 301 C7 1 CLA PX1 PX 0.000000 46422.2000 0 + 302 C7 1 CLA DT1 DT 0.000000 49195.2000 0 + 303 C7 1 CLA AK1 AK 0.000000 34620.7800 0 + 304 C7 1 CLA LT1 LT 0.000000 55013.7800 0 + 305 C7 1 CLA PX2 PX 0.000000 46422.2000 0 + 306 C7 1 CLA DT2 DT 0.000000 49195.2000 0 + 307 C7 1 CLA AK2 AK 0.000000 34620.7800 0 + 308 C7 1 CLA LT2 LT 0.000000 55013.7800 0 + 309 C7 1 CLA PX3 PX 0.000000 46422.2000 0 + 310 C7 1 CLA DT3 DT 0.000000 49195.2000 0 + 311 C7 1 CLA AK3 AK 0.000000 34620.7800 0 + 312 C7 1 CLA LT3 LT 0.000000 55013.7800 0 + 313 A8 1 CLA HB0 HB 0.000000 30478.0300 0 + 314 A8 1 CLA PX1 PX 0.000000 46422.2000 0 + 315 A8 1 CLA DT1 DT 0.000000 49195.2000 0 + 316 A8 1 CLA AK1 AK 0.000000 34620.7800 0 + 317 A8 1 CLA LT1 LT 0.000000 55013.7800 0 + 318 A8 1 CLA PX2 PX 0.000000 46422.2000 0 + 319 A8 1 CLA DT2 DT 0.000000 49195.2000 0 + 320 A8 1 CLA AK2 AK 0.000000 34620.7800 0 + 321 A8 1 CLA LT2 LT 0.000000 55013.7800 0 + 322 A8 1 CLA PX3 PX 0.000000 46422.2000 0 + 323 A8 1 CLA DT3 DT 0.000000 49195.2000 0 + 324 A8 1 CLA AK3 AK 0.000000 34620.7800 0 + 325 A8 1 CLA LT3 LT 0.000000 55013.7800 0 + 326 B8 1 CLA HB0 HB 0.000000 30478.0300 0 + 327 B8 1 CLA PX1 PX 0.000000 46422.2000 0 + 328 B8 1 CLA DT1 DT 0.000000 49195.2000 0 + 329 B8 1 CLA AK1 AK 0.000000 34620.7800 0 + 330 B8 1 CLA LT1 LT 0.000000 55013.7800 0 + 331 B8 1 CLA PX2 PX 0.000000 46422.2000 0 + 332 B8 1 CLA DT2 DT 0.000000 49195.2000 0 + 333 B8 1 CLA AK2 AK 0.000000 34620.7800 0 + 334 B8 1 CLA LT2 LT 0.000000 55013.7800 0 + 335 B8 1 CLA PX3 PX 0.000000 46422.2000 0 + 336 B8 1 CLA DT3 DT 0.000000 49195.2000 0 + 337 B8 1 CLA AK3 AK 0.000000 34620.7800 0 + 338 B8 1 CLA LT3 LT 0.000000 55013.7800 0 + 339 C8 1 CLA HB0 HB 0.000000 30478.0300 0 + 340 C8 1 CLA PX1 PX 0.000000 46422.2000 0 + 341 C8 1 CLA DT1 DT 0.000000 49195.2000 0 + 342 C8 1 CLA AK1 AK 0.000000 34620.7800 0 + 343 C8 1 CLA LT1 LT 0.000000 55013.7800 0 + 344 C8 1 CLA PX2 PX 0.000000 46422.2000 0 + 345 C8 1 CLA DT2 DT 0.000000 49195.2000 0 + 346 C8 1 CLA AK2 AK 0.000000 34620.7800 0 + 347 C8 1 CLA LT2 LT 0.000000 55013.7800 0 + 348 C8 1 CLA PX3 PX 0.000000 46422.2000 0 + 349 C8 1 CLA DT3 DT 0.000000 49195.2000 0 + 350 C8 1 CLA AK3 AK 0.000000 34620.7800 0 + 351 C8 1 CLA LT3 LT 0.000000 55013.7800 0 + 352 A9 1 CLA HB0 HB 0.000000 30478.0300 0 + 353 A9 1 CLA PX1 PX 0.000000 46422.2000 0 + 354 A9 1 CLA DT1 DT 0.000000 49195.2000 0 + 355 A9 1 CLA AK1 AK 0.000000 34620.7800 0 + 356 A9 1 CLA LT1 LT 0.000000 55013.7800 0 + 357 A9 1 CLA PX2 PX 0.000000 46422.2000 0 + 358 A9 1 CLA DT2 DT 0.000000 49195.2000 0 + 359 A9 1 CLA AK2 AK 0.000000 34620.7800 0 + 360 A9 1 CLA LT2 LT 0.000000 55013.7800 0 + 361 A9 1 CLA PX3 PX 0.000000 46422.2000 0 + 362 A9 1 CLA DT3 DT 0.000000 49195.2000 0 + 363 A9 1 CLA AK3 AK 0.000000 34620.7800 0 + 364 A9 1 CLA LT3 LT 0.000000 55013.7800 0 + 365 B9 1 CLA HB0 HB 0.000000 30478.0300 0 + 366 B9 1 CLA PX1 PX 0.000000 46422.2000 0 + 367 B9 1 CLA DT1 DT 0.000000 49195.2000 0 + 368 B9 1 CLA AK1 AK 0.000000 34620.7800 0 + 369 B9 1 CLA LT1 LT 0.000000 55013.7800 0 + 370 B9 1 CLA PX2 PX 0.000000 46422.2000 0 + 371 B9 1 CLA DT2 DT 0.000000 49195.2000 0 + 372 B9 1 CLA AK2 AK 0.000000 34620.7800 0 + 373 B9 1 CLA LT2 LT 0.000000 55013.7800 0 + 374 B9 1 CLA PX3 PX 0.000000 46422.2000 0 + 375 B9 1 CLA DT3 DT 0.000000 49195.2000 0 + 376 B9 1 CLA AK3 AK 0.000000 34620.7800 0 + 377 B9 1 CLA LT3 LT 0.000000 55013.7800 0 + 378 C9 1 CLA HB0 HB 0.000000 30478.0300 0 + 379 C9 1 CLA PX1 PX 0.000000 46422.2000 0 + 380 C9 1 CLA DT1 DT 0.000000 49195.2000 0 + 381 C9 1 CLA AK1 AK 0.000000 34620.7800 0 + 382 C9 1 CLA LT1 LT 0.000000 55013.7800 0 + 383 C9 1 CLA PX2 PX 0.000000 46422.2000 0 + 384 C9 1 CLA DT2 DT 0.000000 49195.2000 0 + 385 C9 1 CLA AK2 AK 0.000000 34620.7800 0 + 386 C9 1 CLA LT2 LT 0.000000 55013.7800 0 + 387 C9 1 CLA PX3 PX 0.000000 46422.2000 0 + 388 C9 1 CLA DT3 DT 0.000000 49195.2000 0 + 389 C9 1 CLA AK3 AK 0.000000 34620.7800 0 + 390 C9 1 CLA LT3 LT 0.000000 55013.7800 0 + 391 A10 1 CLA HB0 HB 0.000000 30478.0300 0 + 392 A10 1 CLA PX1 PX 0.000000 46422.2000 0 + 393 A10 1 CLA DT1 DT 0.000000 49195.2000 0 + 394 A10 1 CLA AK1 AK 0.000000 34620.7800 0 + 395 A10 1 CLA LT1 LT 0.000000 55013.7800 0 + 396 A10 1 CLA PX2 PX 0.000000 46422.2000 0 + 397 A10 1 CLA DT2 DT 0.000000 49195.2000 0 + 398 A10 1 CLA AK2 AK 0.000000 34620.7800 0 + 399 A10 1 CLA LT2 LT 0.000000 55013.7800 0 + 400 A10 1 CLA PX3 PX 0.000000 46422.2000 0 + 401 A10 1 CLA DT3 DT 0.000000 49195.2000 0 + 402 A10 1 CLA AK3 AK 0.000000 34620.7800 0 + 403 A10 1 CLA LT3 LT 0.000000 55013.7800 0 + 404 B10 1 CLA HB0 HB 0.000000 30478.0300 0 + 405 B10 1 CLA PX1 PX 0.000000 46422.2000 0 + 406 B10 1 CLA DT1 DT 0.000000 49195.2000 0 + 407 B10 1 CLA AK1 AK 0.000000 34620.7800 0 + 408 B10 1 CLA LT1 LT 0.000000 55013.7800 0 + 409 B10 1 CLA PX2 PX 0.000000 46422.2000 0 + 410 B10 1 CLA DT2 DT 0.000000 49195.2000 0 + 411 B10 1 CLA AK2 AK 0.000000 34620.7800 0 + 412 B10 1 CLA LT2 LT 0.000000 55013.7800 0 + 413 B10 1 CLA PX3 PX 0.000000 46422.2000 0 + 414 B10 1 CLA DT3 DT 0.000000 49195.2000 0 + 415 B10 1 CLA AK3 AK 0.000000 34620.7800 0 + 416 B10 1 CLA LT3 LT 0.000000 55013.7800 0 + 417 C10 1 CLA HB0 HB 0.000000 30478.0300 0 + 418 C10 1 CLA PX1 PX 0.000000 46422.2000 0 + 419 C10 1 CLA DT1 DT 0.000000 49195.2000 0 + 420 C10 1 CLA AK1 AK 0.000000 34620.7800 0 + 421 C10 1 CLA LT1 LT 0.000000 55013.7800 0 + 422 C10 1 CLA PX2 PX 0.000000 46422.2000 0 + 423 C10 1 CLA DT2 DT 0.000000 49195.2000 0 + 424 C10 1 CLA AK2 AK 0.000000 34620.7800 0 + 425 C10 1 CLA LT2 LT 0.000000 55013.7800 0 + 426 C10 1 CLA PX3 PX 0.000000 46422.2000 0 + 427 C10 1 CLA DT3 DT 0.000000 49195.2000 0 + 428 C10 1 CLA AK3 AK 0.000000 34620.7800 0 + 429 C10 1 CLA LT3 LT 0.000000 55013.7800 0 + 430 A11 1 CLA HB0 HB 0.000000 30478.0300 0 + 431 A11 1 CLA PX1 PX 0.000000 46422.2000 0 + 432 A11 1 CLA DT1 DT 0.000000 49195.2000 0 + 433 A11 1 CLA AK1 AK 0.000000 34620.7800 0 + 434 A11 1 CLA LT1 LT 0.000000 55013.7800 0 + 435 A11 1 CLA PX2 PX 0.000000 46422.2000 0 + 436 A11 1 CLA DT2 DT 0.000000 49195.2000 0 + 437 A11 1 CLA AK2 AK 0.000000 34620.7800 0 + 438 A11 1 CLA LT2 LT 0.000000 55013.7800 0 + 439 A11 1 CLA PX3 PX 0.000000 46422.2000 0 + 440 A11 1 CLA DT3 DT 0.000000 49195.2000 0 + 441 A11 1 CLA AK3 AK 0.000000 34620.7800 0 + 442 A11 1 CLA LT3 LT 0.000000 55013.7800 0 + 443 B11 1 CLA HB0 HB 0.000000 30478.0300 0 + 444 B11 1 CLA PX1 PX 0.000000 46422.2000 0 + 445 B11 1 CLA DT1 DT 0.000000 49195.2000 0 + 446 B11 1 CLA AK1 AK 0.000000 34620.7800 0 + 447 B11 1 CLA LT1 LT 0.000000 55013.7800 0 + 448 B11 1 CLA PX2 PX 0.000000 46422.2000 0 + 449 B11 1 CLA DT2 DT 0.000000 49195.2000 0 + 450 B11 1 CLA AK2 AK 0.000000 34620.7800 0 + 451 B11 1 CLA LT2 LT 0.000000 55013.7800 0 + 452 B11 1 CLA PX3 PX 0.000000 46422.2000 0 + 453 B11 1 CLA DT3 DT 0.000000 49195.2000 0 + 454 B11 1 CLA AK3 AK 0.000000 34620.7800 0 + 455 B11 1 CLA LT3 LT 0.000000 55013.7800 0 + 456 C11 1 CLA HB0 HB 0.000000 30478.0300 0 + 457 C11 1 CLA PX1 PX 0.000000 46422.2000 0 + 458 C11 1 CLA DT1 DT 0.000000 49195.2000 0 + 459 C11 1 CLA AK1 AK 0.000000 34620.7800 0 + 460 C11 1 CLA LT1 LT 0.000000 55013.7800 0 + 461 C11 1 CLA PX2 PX 0.000000 46422.2000 0 + 462 C11 1 CLA DT2 DT 0.000000 49195.2000 0 + 463 C11 1 CLA AK2 AK 0.000000 34620.7800 0 + 464 C11 1 CLA LT2 LT 0.000000 55013.7800 0 + 465 C11 1 CLA PX3 PX 0.000000 46422.2000 0 + 466 C11 1 CLA DT3 DT 0.000000 49195.2000 0 + 467 C11 1 CLA AK3 AK 0.000000 34620.7800 0 + 468 C11 1 CLA LT3 LT 0.000000 55013.7800 0 + + 432 !NBOND: bonds + 1 2 1 6 1 10 2 3 + 3 4 4 5 6 7 7 8 + 8 9 10 11 11 12 12 13 + 14 15 14 19 14 23 15 16 + 16 17 17 18 19 20 20 21 + 21 22 23 24 24 25 25 26 + 27 28 27 32 27 36 28 29 + 29 30 30 31 32 33 33 34 + 34 35 36 37 37 38 38 39 + 40 41 40 45 40 49 41 42 + 42 43 43 44 45 46 46 47 + 47 48 49 50 50 51 51 52 + 53 54 53 58 53 62 54 55 + 55 56 56 57 58 59 59 60 + 60 61 62 63 63 64 64 65 + 66 67 66 71 66 75 67 68 + 68 69 69 70 71 72 72 73 + 73 74 75 76 76 77 77 78 + 79 80 79 84 79 88 80 81 + 81 82 82 83 84 85 85 86 + 86 87 88 89 89 90 90 91 + 92 93 92 97 92 101 93 94 + 94 95 95 96 97 98 98 99 + 99 100 101 102 102 103 103 104 + 105 106 105 110 105 114 106 107 + 107 108 108 109 110 111 111 112 + 112 113 114 115 115 116 116 117 + 118 119 118 123 118 127 119 120 + 120 121 121 122 123 124 124 125 + 125 126 127 128 128 129 129 130 + 131 132 131 136 131 140 132 133 + 133 134 134 135 136 137 137 138 + 138 139 140 141 141 142 142 143 + 144 145 144 149 144 153 145 146 + 146 147 147 148 149 150 150 151 + 151 152 153 154 154 155 155 156 + 157 158 157 162 157 166 158 159 + 159 160 160 161 162 163 163 164 + 164 165 166 167 167 168 168 169 + 170 171 170 175 170 179 171 172 + 172 173 173 174 175 176 176 177 + 177 178 179 180 180 181 181 182 + 183 184 183 188 183 192 184 185 + 185 186 186 187 188 189 189 190 + 190 191 192 193 193 194 194 195 + 196 197 196 201 196 205 197 198 + 198 199 199 200 201 202 202 203 + 203 204 205 206 206 207 207 208 + 209 210 209 214 209 218 210 211 + 211 212 212 213 214 215 215 216 + 216 217 218 219 219 220 220 221 + 222 223 222 227 222 231 223 224 + 224 225 225 226 227 228 228 229 + 229 230 231 232 232 233 233 234 + 235 236 235 240 235 244 236 237 + 237 238 238 239 240 241 241 242 + 242 243 244 245 245 246 246 247 + 248 249 248 253 248 257 249 250 + 250 251 251 252 253 254 254 255 + 255 256 257 258 258 259 259 260 + 261 262 261 266 261 270 262 263 + 263 264 264 265 266 267 267 268 + 268 269 270 271 271 272 272 273 + 274 275 274 279 274 283 275 276 + 276 277 277 278 279 280 280 281 + 281 282 283 284 284 285 285 286 + 287 288 287 292 287 296 288 289 + 289 290 290 291 292 293 293 294 + 294 295 296 297 297 298 298 299 + 300 301 300 305 300 309 301 302 + 302 303 303 304 305 306 306 307 + 307 308 309 310 310 311 311 312 + 313 314 313 318 313 322 314 315 + 315 316 316 317 318 319 319 320 + 320 321 322 323 323 324 324 325 + 326 327 326 331 326 335 327 328 + 328 329 329 330 331 332 332 333 + 333 334 335 336 336 337 337 338 + 339 340 339 344 339 348 340 341 + 341 342 342 343 344 345 345 346 + 346 347 348 349 349 350 350 351 + 352 353 352 357 352 361 353 354 + 354 355 355 356 357 358 358 359 + 359 360 361 362 362 363 363 364 + 365 366 365 370 365 374 366 367 + 367 368 368 369 370 371 371 372 + 372 373 374 375 375 376 376 377 + 378 379 378 383 378 387 379 380 + 380 381 381 382 383 384 384 385 + 385 386 387 388 388 389 389 390 + 391 392 391 396 391 400 392 393 + 393 394 394 395 396 397 397 398 + 398 399 400 401 401 402 402 403 + 404 405 404 409 404 413 405 406 + 406 407 407 408 409 410 410 411 + 411 412 413 414 414 415 415 416 + 417 418 417 422 417 426 418 419 + 419 420 420 421 422 423 423 424 + 424 425 426 427 427 428 428 429 + 430 431 430 435 430 439 431 432 + 432 433 433 434 435 436 436 437 + 437 438 439 440 440 441 441 442 + 443 444 443 448 443 452 444 445 + 445 446 446 447 448 449 449 450 + 450 451 452 453 453 454 454 455 + 456 457 456 461 456 465 457 458 + 458 459 459 460 461 462 462 463 + 463 464 465 466 466 467 467 468 + + 432 !NTHETA: angles + 1 10 11 1 6 7 1 2 3 + 2 3 4 2 1 10 2 1 6 + 3 4 5 6 7 8 6 1 10 + 7 8 9 10 11 12 11 12 13 + 14 23 24 14 19 20 14 15 16 + 15 16 17 15 14 23 15 14 19 + 16 17 18 19 20 21 19 14 23 + 20 21 22 23 24 25 24 25 26 + 27 36 37 27 32 33 27 28 29 + 28 29 30 28 27 36 28 27 32 + 29 30 31 32 33 34 32 27 36 + 33 34 35 36 37 38 37 38 39 + 40 49 50 40 45 46 40 41 42 + 41 42 43 41 40 49 41 40 45 + 42 43 44 45 46 47 45 40 49 + 46 47 48 49 50 51 50 51 52 + 53 62 63 53 58 59 53 54 55 + 54 55 56 54 53 62 54 53 58 + 55 56 57 58 59 60 58 53 62 + 59 60 61 62 63 64 63 64 65 + 66 75 76 66 71 72 66 67 68 + 67 68 69 67 66 75 67 66 71 + 68 69 70 71 72 73 71 66 75 + 72 73 74 75 76 77 76 77 78 + 79 88 89 79 84 85 79 80 81 + 80 81 82 80 79 88 80 79 84 + 81 82 83 84 85 86 84 79 88 + 85 86 87 88 89 90 89 90 91 + 92 101 102 92 97 98 92 93 94 + 93 94 95 93 92 101 93 92 97 + 94 95 96 97 98 99 97 92 101 + 98 99 100 101 102 103 102 103 104 + 105 114 115 105 110 111 105 106 107 + 106 107 108 106 105 114 106 105 110 + 107 108 109 110 111 112 110 105 114 + 111 112 113 114 115 116 115 116 117 + 118 127 128 118 123 124 118 119 120 + 119 120 121 119 118 127 119 118 123 + 120 121 122 123 124 125 123 118 127 + 124 125 126 127 128 129 128 129 130 + 131 140 141 131 136 137 131 132 133 + 132 133 134 132 131 140 132 131 136 + 133 134 135 136 137 138 136 131 140 + 137 138 139 140 141 142 141 142 143 + 144 153 154 144 149 150 144 145 146 + 145 146 147 145 144 153 145 144 149 + 146 147 148 149 150 151 149 144 153 + 150 151 152 153 154 155 154 155 156 + 157 166 167 157 162 163 157 158 159 + 158 159 160 158 157 166 158 157 162 + 159 160 161 162 163 164 162 157 166 + 163 164 165 166 167 168 167 168 169 + 170 179 180 170 175 176 170 171 172 + 171 172 173 171 170 179 171 170 175 + 172 173 174 175 176 177 175 170 179 + 176 177 178 179 180 181 180 181 182 + 183 192 193 183 188 189 183 184 185 + 184 185 186 184 183 192 184 183 188 + 185 186 187 188 189 190 188 183 192 + 189 190 191 192 193 194 193 194 195 + 196 205 206 196 201 202 196 197 198 + 197 198 199 197 196 205 197 196 201 + 198 199 200 201 202 203 201 196 205 + 202 203 204 205 206 207 206 207 208 + 209 218 219 209 214 215 209 210 211 + 210 211 212 210 209 218 210 209 214 + 211 212 213 214 215 216 214 209 218 + 215 216 217 218 219 220 219 220 221 + 222 231 232 222 227 228 222 223 224 + 223 224 225 223 222 231 223 222 227 + 224 225 226 227 228 229 227 222 231 + 228 229 230 231 232 233 232 233 234 + 235 244 245 235 240 241 235 236 237 + 236 237 238 236 235 244 236 235 240 + 237 238 239 240 241 242 240 235 244 + 241 242 243 244 245 246 245 246 247 + 248 257 258 248 253 254 248 249 250 + 249 250 251 249 248 257 249 248 253 + 250 251 252 253 254 255 253 248 257 + 254 255 256 257 258 259 258 259 260 + 261 270 271 261 266 267 261 262 263 + 262 263 264 262 261 270 262 261 266 + 263 264 265 266 267 268 266 261 270 + 267 268 269 270 271 272 271 272 273 + 274 283 284 274 279 280 274 275 276 + 275 276 277 275 274 283 275 274 279 + 276 277 278 279 280 281 279 274 283 + 280 281 282 283 284 285 284 285 286 + 287 296 297 287 292 293 287 288 289 + 288 289 290 288 287 296 288 287 292 + 289 290 291 292 293 294 292 287 296 + 293 294 295 296 297 298 297 298 299 + 300 309 310 300 305 306 300 301 302 + 301 302 303 301 300 309 301 300 305 + 302 303 304 305 306 307 305 300 309 + 306 307 308 309 310 311 310 311 312 + 313 322 323 313 318 319 313 314 315 + 314 315 316 314 313 322 314 313 318 + 315 316 317 318 319 320 318 313 322 + 319 320 321 322 323 324 323 324 325 + 326 335 336 326 331 332 326 327 328 + 327 328 329 327 326 335 327 326 331 + 328 329 330 331 332 333 331 326 335 + 332 333 334 335 336 337 336 337 338 + 339 348 349 339 344 345 339 340 341 + 340 341 342 340 339 348 340 339 344 + 341 342 343 344 345 346 344 339 348 + 345 346 347 348 349 350 349 350 351 + 352 361 362 352 357 358 352 353 354 + 353 354 355 353 352 361 353 352 357 + 354 355 356 357 358 359 357 352 361 + 358 359 360 361 362 363 362 363 364 + 365 374 375 365 370 371 365 366 367 + 366 367 368 366 365 374 366 365 370 + 367 368 369 370 371 372 370 365 374 + 371 372 373 374 375 376 375 376 377 + 378 387 388 378 383 384 378 379 380 + 379 380 381 379 378 387 379 378 383 + 380 381 382 383 384 385 383 378 387 + 384 385 386 387 388 389 388 389 390 + 391 400 401 391 396 397 391 392 393 + 392 393 394 392 391 400 392 391 396 + 393 394 395 396 397 398 396 391 400 + 397 398 399 400 401 402 401 402 403 + 404 413 414 404 409 410 404 405 406 + 405 406 407 405 404 413 405 404 409 + 406 407 408 409 410 411 409 404 413 + 410 411 412 413 414 415 414 415 416 + 417 426 427 417 422 423 417 418 419 + 418 419 420 418 417 426 418 417 422 + 419 420 421 422 423 424 422 417 426 + 423 424 425 426 427 428 427 428 429 + 430 439 440 430 435 436 430 431 432 + 431 432 433 431 430 439 431 430 435 + 432 433 434 435 436 437 435 430 439 + 436 437 438 439 440 441 440 441 442 + 443 452 453 443 448 449 443 444 445 + 444 445 446 444 443 452 444 443 448 + 445 446 447 448 449 450 448 443 452 + 449 450 451 452 453 454 453 454 455 + 456 465 466 456 461 462 456 457 458 + 457 458 459 457 456 465 457 456 461 + 458 459 460 461 462 463 461 456 465 + 462 463 464 465 466 467 466 467 468 + + 0 !NPHI: dihedrals + + + 468 !NIMPHI: impropers + 1 2 3 4 1 6 7 8 + 1 10 11 12 2 6 1 10 + 2 1 6 7 2 1 10 11 + 2 3 4 5 6 1 2 3 + 6 1 10 11 6 7 8 9 + 10 1 2 3 10 1 6 7 + 10 11 12 13 14 15 16 17 + 14 19 20 21 14 23 24 25 + 15 19 14 23 15 14 19 20 + 15 14 23 24 15 16 17 18 + 19 14 15 16 19 14 23 24 + 19 20 21 22 23 14 15 16 + 23 14 19 20 23 24 25 26 + 27 28 29 30 27 32 33 34 + 27 36 37 38 28 32 27 36 + 28 27 32 33 28 27 36 37 + 28 29 30 31 32 27 28 29 + 32 27 36 37 32 33 34 35 + 36 27 28 29 36 27 32 33 + 36 37 38 39 40 41 42 43 + 40 45 46 47 40 49 50 51 + 41 45 40 49 41 40 45 46 + 41 40 49 50 41 42 43 44 + 45 40 41 42 45 40 49 50 + 45 46 47 48 49 40 41 42 + 49 40 45 46 49 50 51 52 + 53 54 55 56 53 58 59 60 + 53 62 63 64 54 58 53 62 + 54 53 58 59 54 53 62 63 + 54 55 56 57 58 53 54 55 + 58 53 62 63 58 59 60 61 + 62 53 54 55 62 53 58 59 + 62 63 64 65 66 67 68 69 + 66 71 72 73 66 75 76 77 + 67 71 66 75 67 66 71 72 + 67 66 75 76 67 68 69 70 + 71 66 67 68 71 66 75 76 + 71 72 73 74 75 66 67 68 + 75 66 71 72 75 76 77 78 + 79 80 81 82 79 84 85 86 + 79 88 89 90 80 84 79 88 + 80 79 84 85 80 79 88 89 + 80 81 82 83 84 79 80 81 + 84 79 88 89 84 85 86 87 + 88 79 80 81 88 79 84 85 + 88 89 90 91 92 93 94 95 + 92 97 98 99 92 101 102 103 + 93 97 92 101 93 92 97 98 + 93 92 101 102 93 94 95 96 + 97 92 93 94 97 92 101 102 + 97 98 99 100 101 92 93 94 + 101 92 97 98 101 102 103 104 + 105 106 107 108 105 110 111 112 + 105 114 115 116 106 110 105 114 + 106 105 110 111 106 105 114 115 + 106 107 108 109 110 105 106 107 + 110 105 114 115 110 111 112 113 + 114 105 106 107 114 105 110 111 + 114 115 116 117 118 119 120 121 + 118 123 124 125 118 127 128 129 + 119 123 118 127 119 118 123 124 + 119 118 127 128 119 120 121 122 + 123 118 119 120 123 118 127 128 + 123 124 125 126 127 118 119 120 + 127 118 123 124 127 128 129 130 + 131 132 133 134 131 136 137 138 + 131 140 141 142 132 136 131 140 + 132 131 136 137 132 131 140 141 + 132 133 134 135 136 131 132 133 + 136 131 140 141 136 137 138 139 + 140 131 132 133 140 131 136 137 + 140 141 142 143 144 145 146 147 + 144 149 150 151 144 153 154 155 + 145 149 144 153 145 144 149 150 + 145 144 153 154 145 146 147 148 + 149 144 145 146 149 144 153 154 + 149 150 151 152 153 144 145 146 + 153 144 149 150 153 154 155 156 + 157 158 159 160 157 162 163 164 + 157 166 167 168 158 162 157 166 + 158 157 162 163 158 157 166 167 + 158 159 160 161 162 157 158 159 + 162 157 166 167 162 163 164 165 + 166 157 158 159 166 157 162 163 + 166 167 168 169 170 171 172 173 + 170 175 176 177 170 179 180 181 + 171 175 170 179 171 170 175 176 + 171 170 179 180 171 172 173 174 + 175 170 171 172 175 170 179 180 + 175 176 177 178 179 170 171 172 + 179 170 175 176 179 180 181 182 + 183 184 185 186 183 188 189 190 + 183 192 193 194 184 188 183 192 + 184 183 188 189 184 183 192 193 + 184 185 186 187 188 183 184 185 + 188 183 192 193 188 189 190 191 + 192 183 184 185 192 183 188 189 + 192 193 194 195 196 197 198 199 + 196 201 202 203 196 205 206 207 + 197 201 196 205 197 196 201 202 + 197 196 205 206 197 198 199 200 + 201 196 197 198 201 196 205 206 + 201 202 203 204 205 196 197 198 + 205 196 201 202 205 206 207 208 + 209 210 211 212 209 214 215 216 + 209 218 219 220 210 214 209 218 + 210 209 214 215 210 209 218 219 + 210 211 212 213 214 209 210 211 + 214 209 218 219 214 215 216 217 + 218 209 210 211 218 209 214 215 + 218 219 220 221 222 223 224 225 + 222 227 228 229 222 231 232 233 + 223 227 222 231 223 222 227 228 + 223 222 231 232 223 224 225 226 + 227 222 223 224 227 222 231 232 + 227 228 229 230 231 222 223 224 + 231 222 227 228 231 232 233 234 + 235 236 237 238 235 240 241 242 + 235 244 245 246 236 240 235 244 + 236 235 240 241 236 235 244 245 + 236 237 238 239 240 235 236 237 + 240 235 244 245 240 241 242 243 + 244 235 236 237 244 235 240 241 + 244 245 246 247 248 249 250 251 + 248 253 254 255 248 257 258 259 + 249 253 248 257 249 248 253 254 + 249 248 257 258 249 250 251 252 + 253 248 249 250 253 248 257 258 + 253 254 255 256 257 248 249 250 + 257 248 253 254 257 258 259 260 + 261 262 263 264 261 266 267 268 + 261 270 271 272 262 266 261 270 + 262 261 266 267 262 261 270 271 + 262 263 264 265 266 261 262 263 + 266 261 270 271 266 267 268 269 + 270 261 262 263 270 261 266 267 + 270 271 272 273 274 275 276 277 + 274 279 280 281 274 283 284 285 + 275 279 274 283 275 274 279 280 + 275 274 283 284 275 276 277 278 + 279 274 275 276 279 274 283 284 + 279 280 281 282 283 274 275 276 + 283 274 279 280 283 284 285 286 + 287 288 289 290 287 292 293 294 + 287 296 297 298 288 292 287 296 + 288 287 292 293 288 287 296 297 + 288 289 290 291 292 287 288 289 + 292 287 296 297 292 293 294 295 + 296 287 288 289 296 287 292 293 + 296 297 298 299 300 301 302 303 + 300 305 306 307 300 309 310 311 + 301 305 300 309 301 300 305 306 + 301 300 309 310 301 302 303 304 + 305 300 301 302 305 300 309 310 + 305 306 307 308 309 300 301 302 + 309 300 305 306 309 310 311 312 + 313 314 315 316 313 318 319 320 + 313 322 323 324 314 318 313 322 + 314 313 318 319 314 313 322 323 + 314 315 316 317 318 313 314 315 + 318 313 322 323 318 319 320 321 + 322 313 314 315 322 313 318 319 + 322 323 324 325 326 327 328 329 + 326 331 332 333 326 335 336 337 + 327 331 326 335 327 326 331 332 + 327 326 335 336 327 328 329 330 + 331 326 327 328 331 326 335 336 + 331 332 333 334 335 326 327 328 + 335 326 331 332 335 336 337 338 + 339 340 341 342 339 344 345 346 + 339 348 349 350 340 344 339 348 + 340 339 344 345 340 339 348 349 + 340 341 342 343 344 339 340 341 + 344 339 348 349 344 345 346 347 + 348 339 340 341 348 339 344 345 + 348 349 350 351 352 353 354 355 + 352 357 358 359 352 361 362 363 + 353 357 352 361 353 352 357 358 + 353 352 361 362 353 354 355 356 + 357 352 353 354 357 352 361 362 + 357 358 359 360 361 352 353 354 + 361 352 357 358 361 362 363 364 + 365 366 367 368 365 370 371 372 + 365 374 375 376 366 370 365 374 + 366 365 370 371 366 365 374 375 + 366 367 368 369 370 365 366 367 + 370 365 374 375 370 371 372 373 + 374 365 366 367 374 365 370 371 + 374 375 376 377 378 379 380 381 + 378 383 384 385 378 387 388 389 + 379 383 378 387 379 378 383 384 + 379 378 387 388 379 380 381 382 + 383 378 379 380 383 378 387 388 + 383 384 385 386 387 378 379 380 + 387 378 383 384 387 388 389 390 + 391 392 393 394 391 396 397 398 + 391 400 401 402 392 396 391 400 + 392 391 396 397 392 391 400 401 + 392 393 394 395 396 391 392 393 + 396 391 400 401 396 397 398 399 + 400 391 392 393 400 391 396 397 + 400 401 402 403 404 405 406 407 + 404 409 410 411 404 413 414 415 + 405 409 404 413 405 404 409 410 + 405 404 413 414 405 406 407 408 + 409 404 405 406 409 404 413 414 + 409 410 411 412 413 404 405 406 + 413 404 409 410 413 414 415 416 + 417 418 419 420 417 422 423 424 + 417 426 427 428 418 422 417 426 + 418 417 422 423 418 417 426 427 + 418 419 420 421 422 417 418 419 + 422 417 426 427 422 423 424 425 + 426 417 418 419 426 417 422 423 + 426 427 428 429 430 431 432 433 + 430 435 436 437 430 439 440 441 + 431 435 430 439 431 430 435 436 + 431 430 439 440 431 432 433 434 + 435 430 431 432 435 430 439 440 + 435 436 437 438 439 430 431 432 + 439 430 435 436 439 440 441 442 + 443 444 445 446 443 448 449 450 + 443 452 453 454 444 448 443 452 + 444 443 448 449 444 443 452 453 + 444 445 446 447 448 443 444 445 + 448 443 452 453 448 449 450 451 + 452 443 444 445 452 443 448 449 + 452 453 454 455 456 457 458 459 + 456 461 462 463 456 465 466 467 + 457 461 456 465 457 456 461 462 + 457 456 465 466 457 458 459 460 + 461 456 457 458 461 456 465 466 + 461 462 463 464 465 456 457 458 + 465 456 461 462 465 466 467 468 + + 0 !NDON: donors + + + 0 !NACC: acceptors + + + 0 !NNB + + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 + + 1 0 !NGRP + 0 0 0 + Property changes on: SwiftTutorials/UofC_2012-11-27-fusion/cg_clath_cage.psf ___________________________________________________________________ Added: svn:executable + * Added: SwiftTutorials/UofC_2012-11-27-fusion/data/data.txt =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/data/data.txt (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/data/data.txt 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1 @@ +Hi Swift! Added: SwiftTutorials/UofC_2012-11-27-fusion/par_cg_clath.inp =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/par_cg_clath.inp (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/par_cg_clath.inp 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,80 @@ +* Charmm Parameter file +* For 13 bead CG clathrin model +* Handmade by FXV - 7-21-11 +* Initial guess (very rough) + +BONDS +! + +!V(bond) = Kb(b - b0)**2 +! +!Kb: kcal/mole/A**2 +!b0: A +! +!atom type Kb b0 +! + +HB PX 0.5 85.5 +PX DT 0.018 135.2 +DT AK 0.045 124.2 +AK LT 0.08 94.1 + +ANGLES +! +!V(angle) = Ktheta(Theta - Theta0)**2 +! +!Ktheta: kcal/mole/rad**2 +!Theta0: degrees +! +!atom types Ktheta Theta0 +! +PX HB PX 70.0 120.00 +DT PX HB 50.0 144.3 +AK DT PX 35.0 132.6 +LT AK DT 150.0 141.5 + +DIHEDRALS +! +!V(dihedral) = Kchi(1 + cos(n(chi) - delta)) +! +!Kchi: kcal/mole +!n: multiplicity +!delta: degrees +! +!atom types Kchi n delta +! +X X X X 0.0 1 0.0 ! No dihedrals + +IMPROPER +! +!V(improper) = Kpsi(psi - psi0)**2 +! +!Kpsi: kcal/mole/rad**2 +!psi0: degrees +!note that the second column of numbers (0) is ignored +! +!atom types Kpsi psi0 +! +PX PX HB PX 200.00 0 161.17 +PX HB PX DT 10.0 0 -30.4 +HB PX DT AK 9.5 0 -16.1 +PX DT AK LT 45.0 0 26.1 + +NONBONDED +! +!V(Lennard-Jones) = Eps,i,j[(Rmin,i,j/ri,j)**12 - 2(Rmin,i,j/ri,j)**6] +! +!epsilon: kcal/mole, Eps,i,j = sqrt(eps,i * eps,j) +!Rmin/2: A, Rmin,i,j = Rmin/2,i + Rmin/2,j +! +!atom ignored epsilon Rmin/2 +! +HB 0.000000 HBEPS 43.075000 +PX 0.000000 PXEPS 18.425000 +DT 0.000000 DTEPS 10.455000 +AK 0.000000 AKEPS 25.975000 +LT 0.000000 LTEPS 36.905000 + + +END + Added: SwiftTutorials/UofC_2012-11-27-fusion/rmsd.temp.tcl =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/rmsd.temp.tcl (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/rmsd.temp.tcl 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,56 @@ +#==================================== +# THis script will measure the +# the average angles, bond lengths +# and dihedral angles. +# +# -FXV Oct, 2011 +#=================================== + +mol delete all + +# set atom selection +set seltext "type HB AK" + +# Set the initial frame +set inifrm 200 + +set psf cg_clath_cage.psf +set pdb cg_clath_cage.pdb +set dcd cg_clath_cage.dcd + +# Load input files +mol load psf $psf +# Load trajectory +mol addfile $pdb type pdb +mol addfile $dcd type dcd first $inifrm last -1 waitfor all + +# Get molecule information +set mol [molinfo top] + +# Get the number of frames +set nmfrm [molinfo $mol get numframes] +puts "number of frames $nmfrm" + +# open rmsd file +set frmsd [open rmsd.dat w] + +# Select atoms +set ref [atomselect top $seltext frame 0] + +# Loop over the number of frames +for {set ifrm 0} {$ifrm <= $nmfrm} {incr ifrm} { + + set sel [atomselect top $seltext frame $ifrm] + + set irmsd [measure rmsd $ref $sel] + + lappend rmsdlist $irmsd + + +} + +# Analysis +puts $frmsd "B1 B2 [vecmean $rmsdlist]" + +exit + Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/catsn.swift =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/catsn.swift (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/catsn.swift 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,12 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +file out[]; +foreach j in [1:@toint(@arg("n","1"))] { + file data<"data.txt">; + out[j] = cat(data); +} Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/script01.swift =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/script01.swift (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/script01.swift 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,9 @@ +type file; + +app (file o) getinfo () +{ + getinfo stdout=@o; +} + +file info <"output/info.txt">; +info = getinfo(); Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/script02.swift =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/script02.swift (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/script02.swift 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,13 @@ +type file; + +app (file o) getinfo () +{ + getinfo stdout=@o; +} + +foreach i in [0:24] { + string fname = @strcat("output/info.",i,".txt"); + file info ; + info = getinfo(); +} + Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/script03.swift =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/script03.swift (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/script03.swift 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,19 @@ +type file; + +app (file o) getinfo () +{ + getinfo stdout=@o; +} + +app (file o) filterinfo (file i) +{ + filterinfo @i @o; +} + +foreach i in [0:24] { + string fname = @strcat("output/info.",i,".txt"); + file info ; + info = getinfo(); + file filtered = filterinfo(info); +} + Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/script04.swift =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/script04.swift (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/script04.swift 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,25 @@ +type file; + +app (file o) getinfo () +{ + getinfo stdout=@o; +} + +app (file o) filter (file i) +{ + filterinfo @i @o; +} + +file filtered[]; + +foreach i in [0:24] { + string fname = @strcat("output/info.",i,".txt"); + file info ; + info = getinfo(); + // replace: filtered[i] = filter(info); + // with: + string filfname = ??? + filfname = + filtered[i] = +} + Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/script05.swift =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/script05.swift (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/script05.swift 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,30 @@ +type file; + +app (file o) getinfo () +{ + getinfo stdout=@o; +} + +app (file o) filter (file i) +{ + filterinfo @i @o; +} + +app (file o) reduce (file i[]) +{ + suminfo @filenames(i) stdout=@o; +} + +file filtered[]; + +foreach i in [0:24] { + string fname = @strcat("output/info.",i,".txt"); + file info ; + info = getinfo(); + filtered[i] = filter(info); +} + +file sum<"output/sum.data">; + +sum = reduce(filtered); + Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/script06.swift =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/script06.swift (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/script06.swift 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,9 @@ +type file; + +app (file r) testmpi () +{ + testmpi; +} + +file results <"output/results.tar">; +results = testmpi(); Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.kml =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.kml (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.kml 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,451 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rmsd + + + + + + + + + + + + + + + + b1_val + b2_val + b1_name + b2_name + + namd_input_file + + + namd_params_file + + + vmd_script_file + + + + + o + + + + e + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dats-345532ce-25ec-45f9-933b-4d188d42079b + + + + + + + + + + + + + b1name + swift#string#17000 + + + + + + + + b2name + swift#string#17001 + + + + + + + + b1min + swift#float#17002 + + + + + + + + b1max + swift#float#17003 + + + + + + + + b2min + swift#float#17002 + + + + + + + + b2max + swift#float#17003 + + + + + + + + delta + swift#float#17004 + + + + + + + + + b1min + b1max + delta + + + swift#from + swift#to + swift#step + + + + swift#rangeout + + + + + + + + + + + b2min + b2max + delta + + + swift#from + swift#to + swift#step + + + + swift#rangeout + + + + + + + + + + + + + + swift#mapper#17005 + + + + + + + + + + + + swift#mapper#17009 + + + + + + + + + + + + swift#mapper#17011 + + + + + + + + + + + + swift#mapper#17014 + + + + + + + + swift#mapper#17005 + + swift#string#17006b1swift#string#17007b2swift#string#17008 + + + + + + swift#mapper#17009 + + swift#string#17006b1swift#string#17007b2swift#string#17010 + + + + + + swift#mapper#17011 + + swift#string#17012b1swift#string#17007b2swift#string#17013 + + + + + + swift#mapper#17014 + + swift#string#17015b1nameb1swift#string#17016b2nameb2swift#string#17017 + + + + + + + + dats + b1 + + b2 + + dat + + + + + + output + error + dcd + dat + b1 + b2 + b1name + b2name + namd_input + namd_params + vmd_script + psf + pdb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.swift =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.swift (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.swift 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,38 @@ +type file; + +app (file o, file e, file dcdf, file datf) rmsd (float b1_val, float b2_val, string b1_name, string b2_name, file namd_input_file, file namd_params_file, file vmd_script_file, file psf_file, file pdb_file) +{ + rmsd b1_val b2_val b1_name b2_name @namd_input_file @namd_params_file @vmd_script_file stdout=@o stderr=@e; +} + +# Bead names +string b1name = "PX"; +string b2name = "DT"; + +# Bead ranges +float b1min=0.0; +float b1max=1.0; +float b2min=0.0; +float b2max=1.0; + +# Delta +float delta=0.5; + +# Files +file namd_params <"par_cg_clath.inp">; +file namd_input <"cg_clath_cage.conf">; +file vmd_script <"rmsd.temp.tcl">; +file psf <"cg_clath_cage.psf">; +file pdb <"cg_clath_cage.pdb">; +file[float][float] dats; + +foreach b1 in [b1min:b1max:delta] { + foreach b2 in [b2min:b2max:delta] { + file output ; + file error ; + file dcd ; + file dat ; + dats[b1][b2] = dat; + (output, error, dcd, dat) = rmsd(b1, b2, b1name, b2name, namd_input, namd_params, vmd_script, psf, pdb); + } +} Added: SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.swiftx =================================================================== --- SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.swiftx (rev 0) +++ SwiftTutorials/UofC_2012-11-27-fusion/scripts/script07.swiftx 2012-12-05 20:21:35 UTC (rev 6099) @@ -0,0 +1,157 @@ + + + + file + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rmsd + + o + eb1_valb2_valb1_nameb2_name + namd_input_file + namd_params_file + vmd_script_file + + + + + b1name + PX + + + + b2name + DT + + + + b1min + 0.0 + + + + b1max + 1.0 + + + + b2min + 0.0 + + + + b2max + 1.0 + + + + delta + 0.5 + + + + + + + + + + + b1min + b1max + delta + + + + + + b2min + b2max + delta + + + + + + logs/rmsd-b1-b2.out.txt + + + + + + logs/rmsd-b1-b2.err.txt + + + + + + output/cg_clath_cage-b1-b2.dcd + + + + + + output/rmsd.b1nameb1_b2nameb2.dat + + + + + + dats + b1 + + b2 + + dat + + + output + error + dcd + dat + b1 + b2 + b1name + b2name + namd_input + namd_params + vmd_script + psf + pdb + + + +