예제 #1
0
def gen_ring_network(network, size=None):
  if not size:
    size = DEFAULT_SIZE
  first = next = Server('id-0', network.distribute)
  network.servers.append(first)
  for i in xrange(1, size):
    _next = Server('id-%d' % (i), network.distribute)
    link(next, _next)
    next = _next
    network.servers.append(next)
  next.link(first)
예제 #2
0
def gen_torus_network(network, size=None):
  if not size:
    size = DEFAULT_SIZE
  # Generate all servers
  for i in xrange(size**2):
    network.servers.append(Server('id-%d' % (i), network.distribute))
  # Link across rows
  for i in xrange(size**2):
    if i % size != 0:
      s1 = network.servers[i]
      s2 = network.servers[i - 1]
      link(s1, s2)
  # Link across row edges
  i = 0
  while i < size**2:
    s1 = network.servers[i]
    s2 = network.servers[i + size - 1]
    link(s1, s2)
    i += size
  # Link down columns
  for i in xrange(size**2 - size):
    s1 = network.servers[i]
    s2 = network.servers[i + size]
    link(s1, s2)
  # Link down column edges
  for i in xrange(size):
    s1 = network.servers[i]
    s2 = network.servers[-1 * size + i]
    link(s1, s2)
예제 #3
0
def forwardVariable(th, linkparam):
    """
    Calculate the forward transformation by
    angle(theta) and it's link parameters.
    """
    T = Transform()
    i = 0
    for p in linkparam:
        if p[2] is None:
            T = T * link(p[0], p[1], th[i], p[3])
            i += 1
        elif p[3] is None:
            T = T * link(p[0], p[1], p[2], th[i])
            i += 1
        else:
            T = T * link(p[0], p[1], p[2], p[3])
    return T
예제 #4
0
    def sim(self, th, text=""):
        # init
        trans = [Transform()]
        pos = [Translation()]
        dirs = [np.identity(4)]

        # main
        for i in range(len(th)):
            L = self.linkparam[i]
            T = link(L[0], L[1], th[i], L[3])
            trans.append(trans[-1] * T)
            pos.append(trans[-1] * pos[0])
            dirs.append(trans[-1].mat)

        # save it
        self.trans.append(trans)
        self.poses.append(np.array([p.mat for p in pos]))
        self.dirs.append(dirs)
        self.text.append(text)
예제 #5
0
    #just grab the first item in keys to lookup dirname..
    first_key = input["keys"][0]
    input_dir = os.path.dirname(input["_key2path"][first_key])

    dest = path + "/" + name
    short_dest = path + "/" + short_name  #does not contain task and run

    ##################################################
    ##
    ## now handle each datatype
    ##

    if input["datatype"] == utils.ANAT_T1W:
        src = os.path.join(input_dir, 't1.nii.gz')
        utils.link(src, dest + "_T1w.nii.gz")
        utils.outputSidecar(dest + "_T1w.json", input)

    elif input["datatype"] == utils.ANAT_T2W:
        src = os.path.join(input_dir, 't2.nii.gz')
        utils.link(src, dest + "_T2w.nii.gz")
        utils.outputSidecar(dest + "_T2w.json", input)

    elif input["datatype"] == utils.DWI:
        src = os.path.join(input_dir, 'dwi.nii.gz')
        utils.link(src, dest + "_dwi.nii.gz")
        src = os.path.join(input_dir, 'dwi.bvals')
        utils.link(src, dest + "_dwi.bval")
        src = os.path.join(input_dir, 'dwi.bvecs')
        utils.link(src, dest + "_dwi.bvec")
        src = os.path.join(input_dir, 'sbref.nii.gz')
예제 #6
0
def gen_dual_server_network(network, size=None):
  s0 = Server('id-0', network.distribute)
  s1 = Server('id-1', network.distribute)
  link(s0, s1)
  network.servers += [s0, s1]
예제 #7
0
v = [vTranslate()]
a = [vTranslate(v=Translation(0, g, 0))]
xy = [Translation()]
ac = [Translation()]
F = [Translation()]
N = [Translation()]
f = [Translation()] * (len(linkparam) + 1)
n = [Translation()] * (len(linkparam) + 1)

# joint
for i in range(len(linkparam)):
    # set angle of joint
    linkparam[i][2] = th[i]

    # transform matrix for angle
    T = link(*linkparam[i])
    Ts.append(T)
    Ts0.append(Ts0[-1] * T)

    # Space location i+1
    xy.append(Ts0[-1] * Translation())

    # transform matrix for velcoity
    T_v = vTransform(Rotation(mat=T.rot.mat.T), T.loc)

    # velcoity i+1 (R-joint)
    new_v = T_v * v[i]
    new_v.mat[5] += vth[i] / 180 * np.pi
    v.append(new_v)

    # acceleration i+1 (R-joint)