Пример #1
0
	def minus(self, objects):
		assert len(objects) == 2
		new_paths, untouched_paths = base.intersect_objects(objects)
		buffer = []
		for i, paths in new_paths:
			if i == 0:
				container = objects[1]
				condition = 0
			else:
				container = objects[0]
				condition = 1
			for cp1, path, cp2 in paths:
				if base.contained(path, container) == condition:
					buffer.append((cp1, path, cp2))
		paths = base.join(buffer)
		for i, path in untouched_paths:
			if i == 0:
				container = objects[1]
				condition = 0
			else:
				container = objects[0]
				condition = 1
			if base.contained(path, container) == condition:
				paths.append(path)
		object = objects[0].Duplicate()
		object.SetPaths(paths)
		return object
Пример #2
0
	def divide(self, object1, object2):
		buffer = []
		new_paths, untouched_paths = base.intersect_objects([object1, object2])
		if new_paths:
			common = []
			parts = ([], [])
			for i, paths in new_paths:
				if i == 0:
					container = object2
					parts2, parts1 = parts
				else:
					container = object1
					parts1, parts2 = parts
				for cp1, path, cp2 in paths:
					if base.contained(path, container):
						common.append((cp1, path, cp2))
						parts2.append((cp1, path, cp2))
					else:						 
						parts1.append((cp1, path, cp2))
			for path in base.join(parts1):
				object = object1.Duplicate()
				object.SetPaths([path])
				buffer.append(object)
			for path in base.join(parts2):
				object = object2.Duplicate()
				object.SetPaths([path])
				buffer.append(object)
			for path in base.join(common):
				object = object2.Duplicate()
				object.SetPaths([path])
				buffer.append(object)
			for i, path in untouched_paths:
				if i == 0:
					object = object1.Duplicate()
				else:
					object = object2.Duplicate()
				object.SetPaths([path])
				buffer.append(object)
		else:
			buffer.append(object1.Duplicate())
			buffer.append(object2.Duplicate())
		return buffer
Пример #3
0
 def divide(self, object1, object2):
     buffer = []
     new_paths, untouched_paths = base.intersect_objects([object1, object2])
     if new_paths:
         common = []
         parts = ([], [])
         for i, paths in new_paths:
             if i == 0:
                 container = object2
                 parts2, parts1 = parts
             else:
                 container = object1
                 parts1, parts2 = parts
             for cp1, path, cp2 in paths:
                 if base.contained(path, container):
                     common.append((cp1, path, cp2))
                     parts2.append((cp1, path, cp2))
                 else:
                     parts1.append((cp1, path, cp2))
         for path in base.join(parts1):
             object = object1.Duplicate()
             object.SetPaths([path])
             buffer.append(object)
         for path in base.join(parts2):
             object = object2.Duplicate()
             object.SetPaths([path])
             buffer.append(object)
         for path in base.join(common):
             object = object2.Duplicate()
             object.SetPaths([path])
             buffer.append(object)
         for i, path in untouched_paths:
             if i == 0:
                 object = object1.Duplicate()
             else:
                 object = object2.Duplicate()
             object.SetPaths([path])
             buffer.append(object)
     else:
         buffer.append(object1.Duplicate())
         buffer.append(object2.Duplicate())
     return buffer
Пример #4
0
 def generate_content(self):
     if_predicate = fmt('if hash {0} 2> /dev/null; then\n', self.program)
     else_clause = fmt('else\n    echo "missing {0}"\nfi', self.program)
     clone_github = 'git clone https://github.com'
     body = ['mkdir -p ' + self.reporoot]
     for reponame in self.reponames:
         repopath = os.path.join(self.reporoot, reponame)
         body += [
             fmt('[ -d "{repopath}" ] || {clone_github}/{reponame} {repopath}'
                 )
         ]
         body += [fmt('(cd {repopath} && git pull && git checkout HEAD)')]
     return if_predicate + join(body, prefix='    ', sepby='\n',
                                tail='\n') + else_clause
Пример #5
0
	def intersect(self, objects):
		assert len(objects) == 2
		buffer = []
		new_paths, untouched_paths = base.intersect_objects(objects)
		if not new_paths:
			return None
		for i, paths in new_paths:
			if i == 0:
				container = objects[1]
			else:
				container = objects[0]
			for cp1, path, cp2 in paths:
				if base.contained(path, container):
					buffer.append((cp1, path, cp2))
		object = objects[0].Duplicate()
		object.SetPaths(base.join(buffer))
		return object
Пример #6
0
	def union(self,objects):
		assert len(objects) == 2
		buffer = []
		new_paths, untouched_paths = base.intersect_objects(objects)
		for i, paths in new_paths:
			if i == 0:
				container = objects[1]
			else:
				container = objects[0]
			for cp1, path, cp2 in paths:
				if not base.contained(path, container):
					buffer.append((cp1, path, cp2))
		paths = base.join(buffer)
		for i, path in untouched_paths:
			paths.append(path)
		object = objects[0].Duplicate()
		object.SetPaths(paths)
		return object
Пример #7
0
 def union(self, objects):
     assert len(objects) == 2
     buffer = []
     new_paths, untouched_paths = base.intersect_objects(objects)
     for i, paths in new_paths:
         if i == 0:
             container = objects[1]
         else:
             container = objects[0]
         for cp1, path, cp2 in paths:
             if not base.contained(path, container):
                 buffer.append((cp1, path, cp2))
     paths = base.join(buffer)
     for i, path in untouched_paths:
         paths.append(path)
     object = objects[0].Duplicate()
     object.SetPaths(paths)
     return object
Пример #8
0
    def _translate(self, atoms, **kwargs):
        # CHARMM index is 1-based
        def _index(atom):
            return "BYNUM %d" % (atom.number + 1)

        return base.join(atoms, ' .or.', _index)
Пример #9
0
    def _translate(self, atoms, **kwargs):
        # PyMol index is 1-based
        def _index(atom):
            return "index %d" % (atom.number + 1)

        return base.join(atoms, ' |', _index)
Пример #10
0
    def _translate(self, atoms, **kwargs):
        # CHARMM index is 1-based
        def _index(atom):
            return "BYNUM %d" % (atom.number + 1)

        return base.join(atoms, ' .or.', _index)
Пример #11
0
    def _translate(self, atoms, **kwargs):
        # PyMol index is 1-based
        def _index(atom):
            return "index %d" % (atom.number + 1)

        return base.join(atoms, ' |', _index)