Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
failure += 1
filenames[i] = None
else:
pdbfile.close()
if not compressed:
gunzip(filename)
filename = relpath(filename)
LOGGER.debug('{0:s} downloaded ({1:s})'
.format(pdbid, filename))
success += 1
filenames[i] = filename
ftp.quit()
if len(identifiers) == 1:
return filenames[0]
else:
LOGGER.info('PDB download completed ({2:d} found, '
'{0:d} downloaded, {1:d} failed).'
.format(success, failure, exists))
return filenames
i = 0
f = openFile(outname, 'wb')
if label is None:
label = 'Serial Index'
numpairs = kwargs.get('numpairs')
size = len(row)
seqsep = kwargs.get('seqsep')
if not kwargs.get('usedist') or not pdbflag:
if kwargs.get('usedist'):
LOGGER.info('use-struct-sep set to true, but PDB not given or '
'incorrect residue number. Using sequence separation')
else:
if pdbflag:
LOGGER.info('use-dist not set, using sequence separation'
' to report coevolving pairs')
f.write(('Label: '+ label + '\t' + 'Residue Numbers: ' +
str(resnum[0]) + '-' + str(resnum[-1]) + '\tSequence Separation:' +
str(seqsep) + '\n'))
if pdbflag:
f.write((header + '\tDistance\n'))
while count <=numpairs and i < size:
if row[i] > (column[i] + seqsep):
f.write('{0}\t{1}\t{2}\t{3:.3f}\t{4:.2f}\n'.
format(count, resnum[row[i]], resnum[column[i]],
mi[row[i], column[i]],
distance[row[i], column[i]]))
count += 1
i += 1
else:
f.write((header + '\n'))
if not re.search('^P(F|B)[0-9]{5}$', accession):
raise ValueError('{0} does not match pfam accession'
' format'.format(accession))
match = matches.setdefault(accession, dict(child.items()))
locations = match.setdefault('locations', [])
for loc in child:
locations.append(dict(loc.items()))
if len(seq) < MINSEQLEN:
query = 'Query ' + repr(query)
else:
query = 'Query sequence'
if matches:
LOGGER.info(query + ' matched {0} Pfam families.'.format(len(matches)))
else:
LOGGER.info(query + ' did not match any Pfam families.')
return matches
mob = match[0]
tar = match[1]
if selstr:
which = SELECT.getIndices(tar, selstr)
n_atoms = len(which)
else:
which = slice(None)
n_atoms = len(tar)
selstr = 'calpha'
if kwargs.get('allcets', True):
csets = range(mobile.numCoordsets()) # PY3K: OK
else:
csets = [mobile.getACSIndex()]
LOGGER.info('Alignment is based on {0} atoms matching {1}.'
.format(n_atoms, repr(selstr)))
printRMSD(tar._getCoords()[which], mob._getCoordsets()[:, which],
msg='Before alignment ')
for acsi in csets:
mob.setACSIndex(acsi)
mobile.setACSIndex(acsi)
calcTransformation(mob._getCoords()[which],
tar._getCoords()[which]).apply(mobile)
printRMSD(tar._getCoords()[which], mob._getCoordsets()[:, which],
msg='After alignment ')
return (mobile,) + match
def loadPDBClusters(sqid=None):
"""Load previously fetched PDB sequence clusters from disk to memory."""
PDB_CLUSTERS_PATH = os.path.join(getPackagePath(), 'pdbclusters')
if sqid is None:
sqid_list = list(PDB_CLUSTERS)
LOGGER.info('Loading all PDB sequence clusters.')
else:
assert isinstance(sqid, Integral), 'sqid must be an integer'
if sqid not in PDB_CLUSTERS:
raise ValueError('PDB cluster data is not available for sequence '
'identity {0}%, try one of {1}'
.format(sqid, PDB_CLUSTERS_SQID_STR))
LOGGER.info('Loading PDB sequence clusters for sequence identity '
'{0}.'.format(sqid))
sqid_list = [sqid]
global PDB_CLUSTERS_UPDATE_WARNING
for sqid in sqid_list:
filename = os.path.join(PDB_CLUSTERS_PATH,
'bc-{0}.out.gz'.format(sqid))
if not os.path.isfile(filename):
fetchPDBClusters(sqid)
def _superpose(self, **kwargs):
"""Superpose conformations and update coordinates."""
calcT = getTransformation
if kwargs.get('trans', False):
if self._trans is not None:
LOGGER.info('Existing transformations will be overwritten.')
trans = np.zeros((self._n_csets, 4, 4))
else:
trans = None
indices = self._indices
if indices is None:
weights = self._weights
coords = self._coords
confs = self._confs
confs_selected = self._confs
else:
weights = self._weights[:, indices]
coords = self._coords[indices]
confs = self._confs
confs_selected = self._confs[:, indices]
for i, conf in enumerate(confs_selected):
evalue = ''
for i, location in enumerate(val.get('locations', [])):
temp = location.get('evalue', None)
if temp:
if i==0:
evalue = float(temp)
else:
if float(temp) < evalue:
evalue = float(temp)
output = delimiter.join([val.get('accession', ' '),
val.get('id', ' '),
val.get('type', ' '),
str(evalue)]) + '\n'
out.write(output)
if outname:
prody.LOGGER.info('Search results written in {0}.'.format(filepath))
out.close()
try:
polymers = parsePDBHeader(seq[:4], 'polymers')
except Exception as err:
LOGGER.warn('failed to parse header for {0} ({1})'
.format(seq[:4], str(err)))
else:
chid = seq[4:].upper()
for poly in polymers:
if chid and poly.chid != chid:
continue
for dbref in poly.dbrefs:
if dbref.database != 'UniProt':
continue
idcode = dbref.idcode
LOGGER.info('UniProt ID code {0} for {1} chain '
'{2} will be used.'
.format(idcode, seq[:4], poly.chid))
break
if idcode is not None:
break
if idcode is None:
LOGGER.warn('A UniProt ID code for PDB {0} could not be '
'parsed.'.format(repr(seq)))
url = prefix + 'protein/' + seq + '?output=xml'
else:
url = prefix + 'protein/' + idcode + '?output=xml'
else:
url = prefix + 'protein/' + seq + '?output=xml'
LOGGER.debug('Retrieving Pfam search results: ' + url)
name. If a macro with given *name* exists, it will be overwritten.
.. ipython:: python
defSelectionMacro('cbeta', 'name CB and protein')"""
if not isinstance(name, str) or not isinstance(selstr, str):
raise TypeError('both name and selstr must be strings')
elif isReserved(name):
raise ValueError('{0} is a reserved word and cannot be used as a '
'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()
k = eigvals[-1] + 1
else:
j = 0
k = dof
if k >= dof:
k -= 1
LOGGER.warning('Cannot calculate all eigenvalues for sparse matrices, thus '
'the last eigenvalue is omitted. See scipy.sparse.linalg.eigsh '
'for more information')
values, vectors = scipy_sparse_la.eigsh(M, k=k, which='SA')
values = values[j:k]
vectors = vectors[:, j:k]
else:
if n_modes is not None:
LOGGER.info('Scipy is not found, all modes were calculated.')
else:
n_modes = dof
values, vectors = linalg.eigh(M)
return values, vectors