Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if not isinstance(chain, str):
raise TypeError('chain must be a string')
elif len(chain) == 0:
raise ValueError('chain must not be an empty string')
title_suffix = chain + title_suffix
ag = kwargs.pop('ag', None)
if ag is not None:
if not isinstance(ag, AtomGroup):
raise TypeError('ag must be an AtomGroup instance')
n_csets = ag.numCoordsets()
elif model != 0:
ag = AtomGroup(str(kwargs.get('title', 'Unknown')) + title_suffix)
n_csets = 0
biomol = kwargs.get('biomol', False)
auto_secondary = SETTINGS.get('auto_secondary')
secondary = kwargs.get('secondary', auto_secondary)
split = 0
hd = None
if model != 0:
LOGGER.timeit()
try:
lines = stream.readlines()
except AttributeError as err:
try:
lines = stream.read().split('\n')
except AttributeError:
raise err
if not len(lines):
raise ValueError('empty PDB file or stream')
if header or biomol or secondary:
hd, split = getHeaderDict(lines)
the current folder, pass an invalid path, e.g. ``folder=''``.
If *divided* is **True**, the divided folder structure of wwPDB servers
will be assumed when reading from and writing to the local folder. For
example, a structure with identifier **1XYZ** will be present as
:file:`pdblocalfolder/yz/pdb1xyz.pdb.gz`.
If *divided* is **False**, a plain folder structure will be expected and
adopted when saving files. For example, the same structure will be
present as :file:`pdblocalfolder/1xyz.pdb.gz`.
Finally, in either case, lower case letters will be used and compressed
files will be stored."""
if folder is None:
folder = SETTINGS.get('pdb_local_folder')
if folder:
if isdir(folder):
return folder, SETTINGS.get('pdb_local_divided', True)
else:
LOGGER.warn('PDB local folder {0} is not a accessible.'
.format(repr(folder)))
else:
if isdir(folder):
folder = abspath(folder)
LOGGER.info('Local PDB folder is set: {0}'.format(repr(folder)))
if divided:
LOGGER.info('wwPDB divided folder structure will be assumed.')
else:
LOGGER.info('A plain folder structure will be assumed.')
SETTINGS['pdb_local_folder'] = folder
SETTINGS['pdb_local_divided'] = bool(divided)
matrix, format=kwargs.get('numformat', '%12g'))
if heatmap:
writeHeatmap(prefix + suffix + '.hm', matrix,
title = msa.getTitle() + tuffix, **hmargs)
if kwargs.get('figcoevol'):
try:
import matplotlib.pyplot as plt
except ImportError:
LOGGER.warn('Matplotlib could not be imported, '
'figures are not saved.')
else:
cmin = kwargs.get('cmin', matrix.min())
cmax = kwargs.get('cmax', matrix.max())
prody.SETTINGS['auto_show'] = False
width = kwargs.get('figwidth', 8)
height = kwargs.get('figheight', 6)
xlabel = kwargs.get('xlabel')
title = kwargs.get('title')
figure = plt.figure(figsize=(width, height))
show = showMutinfoMatrix(matrix, msa=msa, clim=(cmin, cmax),
xlabel=xlabel, title=title)
format = kwargs.get('figformat', 'pdf')
figure.savefig(prefix + suffix + '.' + format, format=format,
dpi=kwargs.get('figdpi', 300))
def getWWPDBFTPServer():
"""Return a tuple containing name, host, and path of the currently
set `wwPDB `_ FTP server."""
server = SETTINGS.get('wwpdb_ftp', None)
if server is None:
LOGGER.warning('A wwPDB FTP server is not set, default FTP server '
'RCSB PDB is used. Use `setWWPDBFTPServer` function '
'to set a server close to your location.')
return _WWPDB_RCSB
else:
if server[2].endswith('data/structures/divided/pdb/'):
return (server[0], server[1],
server[2][:-len('data/structures/divided/pdb/')])
else:
return server
Following ProDy functions are for visualizing Hi-C data:
* :func:`.showMap` - show Hi-C contact map
* :func:`.showDomains` - show Hi-C structural domains
Save/load HiC class
-------------------
* :func:`.saveHiC`
* :func:`.loadHiC`
"""
import prody
LOGGER = prody.LOGGER
SETTINGS = prody.SETTINGS
__all__ = []
from . import hic
from .hic import *
__all__.extend(hic.__all__)
from . import norm
from .norm import *
__all__.extend(norm.__all__)
from . import cluster
from .cluster import *
__all__.extend(cluster.__all__)
from . import functions
url = 'http://files.rcsb.org/ligands/download/{0}.xml'.format(cci.upper())
if not xml:
#'http://www.pdb.org/pdb/files/ligand/{0}.xml'
try:
inp = openURL(url)
except IOError:
raise IOError('XML file for ligand {0} is not found online'
.format(cci))
else:
xml = inp.read()
inp.close()
if filename:
out = openFile(filename, mode='w', folder=folder)
out.write(xml)
out.close()
if SETTINGS.get('ligand_xml_save'):
with openFile(xmlgz, 'w') as out:
out.write(xml)
import xml.etree.cElementTree as ET
root = ET.XML(xml)
if (root.get('{http://www.w3.org/2001/XMLSchema-instance}'
'schemaLocation') !=
'http://pdbml.pdb.org/schema/pdbx-v40.xsd pdbx-v40.xsd'):
LOGGER.warn('XML is not in PDBx/PDBML v 4.0 format, resulting '
'dictionary may not contain all data fields')
ns = root.tag[:root.tag.rfind('}')+1]
len_ns = len(ns)
dict_ = {'url': url, 'path': path}
for child in list(root.find(ns + 'chem_compCategory')[0]):
'macro name'.format(repr(name)))
elif not (name.isalpha() and name.islower()):
raise ValueError('macro names must be all lower case letters, {0} '
'is not a valid macro name'.format(repr(name)))
LOGGER.info('Testing validity of selection string.')
try:
ATOMGROUP.select(selstr)
except SelectionError:
LOGGER.warn('{0} is not a valid selection string, macro {1} is not'
'defined.'.format(repr(selstr), repr(name)))
else:
LOGGER.info("Macro {0} is defined as {1}."
.format(repr(name), repr(selstr)))
MACROS[name] = selstr
SETTINGS['selection_macros'] = MACROS
SETTINGS.save()
SETTINGS.pop(NONSTANDARD_KEY, None)
SETTINGS[TIMESTAMP_KEY] = int(time())
SETTINGS.save()
updateDefinitions()
elif flag == 'nonstdaa':
SETTINGS.pop(NONSTANDARD_KEY, None)
SETTINGS[TIMESTAMP_KEY] = int(time())
SETTINGS.save()
updateDefinitions()
else:
try:
SETTINGS.pop(DEFINITIONS_KEY, {}).pop(flag)
except KeyError:
pass
else:
SETTINGS[TIMESTAMP_KEY] = int(time())
SETTINGS.save()
updateDefinitions()
"""
V = _getEigvecs(V, row_norm=True)
try:
from scipy.cluster.hierarchy import linkage, dendrogram
except ImportError:
raise ImportError('Use of this function (showLinkage) requires the '
'installation of scipy.')
method = kwargs.pop('method', 'single')
metric = kwargs.pop('metric', 'euclidean')
Z = linkage(V, method=method, metric=metric)
no_labels = kwargs.pop('no_labels', True)
dendrogram(Z, no_labels=no_labels, **kwargs)
if SETTINGS['auto_show']:
showFigure()
return Z