biotite 1.0.0__cp312-cp312-macosx_10_9_x86_64.whl → 1.0.1__cp312-cp312-macosx_10_9_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of biotite might be problematic. Click here for more details.
- biotite/sequence/align/banded.cpython-312-darwin.so +0 -0
- biotite/sequence/align/kmeralphabet.cpython-312-darwin.so +0 -0
- biotite/sequence/align/kmersimilarity.cpython-312-darwin.so +0 -0
- biotite/sequence/align/kmertable.cpython-312-darwin.so +0 -0
- biotite/sequence/align/localgapped.cpython-312-darwin.so +0 -0
- biotite/sequence/align/localungapped.cpython-312-darwin.so +0 -0
- biotite/sequence/align/multiple.cpython-312-darwin.so +0 -0
- biotite/sequence/align/pairwise.cpython-312-darwin.so +0 -0
- biotite/sequence/align/permutation.cpython-312-darwin.so +0 -0
- biotite/sequence/align/selector.cpython-312-darwin.so +0 -0
- biotite/sequence/align/tracetable.cpython-312-darwin.so +0 -0
- biotite/sequence/codec.cpython-312-darwin.so +0 -0
- biotite/sequence/phylo/nj.cpython-312-darwin.so +0 -0
- biotite/sequence/phylo/tree.cpython-312-darwin.so +0 -0
- biotite/sequence/phylo/upgma.cpython-312-darwin.so +0 -0
- biotite/structure/atoms.py +27 -3
- biotite/structure/bonds.cpython-312-darwin.so +0 -0
- biotite/structure/celllist.cpython-312-darwin.so +0 -0
- biotite/structure/charges.cpython-312-darwin.so +0 -0
- biotite/structure/filter.py +1 -1
- biotite/structure/io/pdb/hybrid36.cpython-312-darwin.so +0 -0
- biotite/structure/io/pdbx/cif.py +79 -51
- biotite/structure/io/pdbx/convert.py +34 -21
- biotite/structure/io/pdbx/encoding.cpython-312-darwin.so +0 -0
- biotite/structure/io/trajfile.py +16 -16
- biotite/structure/sasa.cpython-312-darwin.so +0 -0
- biotite/version.py +2 -2
- {biotite-1.0.0.dist-info → biotite-1.0.1.dist-info}/METADATA +2 -1
- {biotite-1.0.0.dist-info → biotite-1.0.1.dist-info}/RECORD +31 -31
- {biotite-1.0.0.dist-info → biotite-1.0.1.dist-info}/WHEEL +0 -0
- {biotite-1.0.0.dist-info → biotite-1.0.1.dist-info}/licenses/LICENSE.rst +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
biotite/structure/atoms.py
CHANGED
|
@@ -99,9 +99,24 @@ class _AtomArrayBase(Copyable, metaclass=abc.ABCMeta):
|
|
|
99
99
|
See Also
|
|
100
100
|
--------
|
|
101
101
|
set_annotation
|
|
102
|
+
|
|
103
|
+
Notes
|
|
104
|
+
-----
|
|
105
|
+
If the annotation category already exists, a compatible dtype is chosen,
|
|
106
|
+
that is also able to represent the old values.
|
|
102
107
|
"""
|
|
103
108
|
if category not in self._annot:
|
|
104
109
|
self._annot[str(category)] = np.zeros(self._array_length, dtype=dtype)
|
|
110
|
+
elif np.can_cast(self._annot[str(category)].dtype, dtype):
|
|
111
|
+
self._annot[str(category)] = self._annot[str(category)].astype(dtype)
|
|
112
|
+
elif np.can_cast(dtype, self._annot[str(category)].dtype):
|
|
113
|
+
# The existing dtype is more general
|
|
114
|
+
pass
|
|
115
|
+
else:
|
|
116
|
+
raise ValueError(
|
|
117
|
+
f"Cannot cast '{str(category)}' "
|
|
118
|
+
f"with dtype '{self._annot[str(category)].dtype}' into '{dtype}'"
|
|
119
|
+
)
|
|
105
120
|
|
|
106
121
|
def del_annotation(self, category):
|
|
107
122
|
"""
|
|
@@ -145,16 +160,25 @@ class _AtomArrayBase(Copyable, metaclass=abc.ABCMeta):
|
|
|
145
160
|
array : ndarray or None
|
|
146
161
|
The new value of the annotation category. The size of the
|
|
147
162
|
array must be the same as the array length.
|
|
163
|
+
|
|
164
|
+
Notes
|
|
165
|
+
-----
|
|
166
|
+
If the annotation category already exists, a compatible dtype is chosen,
|
|
167
|
+
that is able to represent the old and new array values.
|
|
148
168
|
"""
|
|
169
|
+
array = np.asarray(array)
|
|
149
170
|
if len(array) != self._array_length:
|
|
150
171
|
raise IndexError(
|
|
151
172
|
f"Expected array length {self._array_length}, " f"but got {len(array)}"
|
|
152
173
|
)
|
|
153
174
|
if category in self._annot:
|
|
154
|
-
#
|
|
155
|
-
self._annot[category] =
|
|
175
|
+
# If the annotation already exists, find the compatible dtype
|
|
176
|
+
self._annot[category] = array.astype(
|
|
177
|
+
dtype=np.promote_types(self._annot[category].dtype, array.dtype),
|
|
178
|
+
copy=False,
|
|
179
|
+
)
|
|
156
180
|
else:
|
|
157
|
-
self._annot[category] =
|
|
181
|
+
self._annot[category] = array
|
|
158
182
|
|
|
159
183
|
def get_annotation_categories(self):
|
|
160
184
|
"""
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
biotite/structure/filter.py
CHANGED
|
@@ -577,7 +577,7 @@ def filter_highest_occupancy_altloc(atoms, altloc_ids, occupancies):
|
|
|
577
577
|
if len(letter_altloc_ids) > 0:
|
|
578
578
|
highest = -1.0
|
|
579
579
|
highest_id = None
|
|
580
|
-
for id in set(letter_altloc_ids):
|
|
580
|
+
for id in sorted(set(letter_altloc_ids)):
|
|
581
581
|
occupancy_sum = np.sum(occupancies_in_res[altloc_ids_in_res == id])
|
|
582
582
|
if occupancy_sum > highest:
|
|
583
583
|
highest = occupancy_sum
|
|
Binary file
|
biotite/structure/io/pdbx/cif.py
CHANGED
|
@@ -370,7 +370,7 @@ class CIFCategory(_Component, MutableMapping):
|
|
|
370
370
|
if category_name is None:
|
|
371
371
|
raise DeserializationError("Failed to parse category name")
|
|
372
372
|
|
|
373
|
-
lines = _to_single(lines
|
|
373
|
+
lines = _to_single(lines)
|
|
374
374
|
if is_looped:
|
|
375
375
|
category_dict = CIFCategory._deserialize_looped(lines, expect_whitespace)
|
|
376
376
|
else:
|
|
@@ -439,11 +439,28 @@ class CIFCategory(_Component, MutableMapping):
|
|
|
439
439
|
Process a category where each field has a single value.
|
|
440
440
|
"""
|
|
441
441
|
category_dict = {}
|
|
442
|
-
|
|
442
|
+
line_i = 0
|
|
443
|
+
while line_i < len(lines):
|
|
444
|
+
line = lines[line_i]
|
|
443
445
|
parts = _split_one_line(line)
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
446
|
+
if len(parts) == 2:
|
|
447
|
+
# Standard case -> name and value in one line
|
|
448
|
+
name_part, value_part = parts
|
|
449
|
+
line_i += 1
|
|
450
|
+
elif len(parts) == 1:
|
|
451
|
+
# Value is a multiline value on the next line
|
|
452
|
+
name_part = parts[0]
|
|
453
|
+
parts = _split_one_line(lines[line_i + 1])
|
|
454
|
+
if len(parts) == 1:
|
|
455
|
+
value_part = parts[0]
|
|
456
|
+
else:
|
|
457
|
+
raise DeserializationError(f"Failed to parse line '{line}'")
|
|
458
|
+
line_i += 2
|
|
459
|
+
elif len(parts) == 0:
|
|
460
|
+
raise DeserializationError("Empty line within category")
|
|
461
|
+
else:
|
|
462
|
+
raise DeserializationError(f"Failed to parse line '{line}'")
|
|
463
|
+
category_dict[name_part.split(".")[1]] = CIFColumn(value_part)
|
|
447
464
|
return category_dict
|
|
448
465
|
|
|
449
466
|
@staticmethod
|
|
@@ -468,7 +485,7 @@ class CIFCategory(_Component, MutableMapping):
|
|
|
468
485
|
data_lines = lines[i:]
|
|
469
486
|
# Rows may be split over multiple lines -> do not rely on
|
|
470
487
|
# row-line-alignment at all and simply cycle through columns
|
|
471
|
-
|
|
488
|
+
column_indices = itertools.cycle(range(len(column_names)))
|
|
472
489
|
for data_line in data_lines:
|
|
473
490
|
# If whitespace is expected in quote protected values,
|
|
474
491
|
# use regex-based _split_one_line() to split
|
|
@@ -485,9 +502,18 @@ class CIFCategory(_Component, MutableMapping):
|
|
|
485
502
|
):
|
|
486
503
|
values[k] = values[k][1:-1]
|
|
487
504
|
for val in values:
|
|
488
|
-
|
|
505
|
+
column_index = next(column_indices)
|
|
506
|
+
column_name = column_names[column_index]
|
|
489
507
|
category_dict[column_name].append(val)
|
|
490
508
|
|
|
509
|
+
# Check if all columns have the same length
|
|
510
|
+
# Otherwise, this would indicate a parsing error or an invalid CIF file
|
|
511
|
+
column_index = next(column_indices)
|
|
512
|
+
if column_index != 0:
|
|
513
|
+
raise DeserializationError(
|
|
514
|
+
"Category contains columns with different lengths"
|
|
515
|
+
)
|
|
516
|
+
|
|
491
517
|
return category_dict
|
|
492
518
|
|
|
493
519
|
def _serialize_single(self):
|
|
@@ -496,7 +522,8 @@ class CIFCategory(_Component, MutableMapping):
|
|
|
496
522
|
# "+3" Because of three whitespace chars after longest key
|
|
497
523
|
req_len = max_len + 3
|
|
498
524
|
return [
|
|
499
|
-
|
|
525
|
+
# Remove potential terminal newlines from multiline values
|
|
526
|
+
(key.ljust(req_len) + _escape(column.as_item())).strip()
|
|
500
527
|
for key, column in zip(keys, self.values())
|
|
501
528
|
]
|
|
502
529
|
|
|
@@ -508,7 +535,7 @@ class CIFCategory(_Component, MutableMapping):
|
|
|
508
535
|
array = column.as_array(str)
|
|
509
536
|
# Quote before measuring the number of chars,
|
|
510
537
|
# as the quote characters modify the length
|
|
511
|
-
array = np.array([
|
|
538
|
+
array = np.array([_escape(element) for element in array])
|
|
512
539
|
column_arrays.append(array)
|
|
513
540
|
|
|
514
541
|
# Number of characters the longest string in the column needs
|
|
@@ -522,7 +549,8 @@ class CIFCategory(_Component, MutableMapping):
|
|
|
522
549
|
for j, array in enumerate(column_arrays):
|
|
523
550
|
value_lines[i] += array[i].ljust(column_n_chars[j])
|
|
524
551
|
# Remove trailing justification of last column
|
|
525
|
-
|
|
552
|
+
# and potential terminal newlines from multiline values
|
|
553
|
+
value_lines[i] = value_lines[i].strip()
|
|
526
554
|
|
|
527
555
|
return ["loop_"] + key_lines + value_lines
|
|
528
556
|
|
|
@@ -927,52 +955,50 @@ def _is_loop_start(line):
|
|
|
927
955
|
return line.startswith("loop_")
|
|
928
956
|
|
|
929
957
|
|
|
930
|
-
def _to_single(lines
|
|
931
|
-
"""
|
|
958
|
+
def _to_single(lines):
|
|
959
|
+
r"""
|
|
932
960
|
Convert multiline values into singleline values
|
|
933
961
|
(in terms of 'lines' list elements).
|
|
934
|
-
Linebreaks are preserved.
|
|
962
|
+
Linebreaks are preserved as ``'\n'`` characters within a list element.
|
|
963
|
+
The initial ``';'`` character is also preserved, while the final ``';'`` character
|
|
964
|
+
is removed.
|
|
935
965
|
"""
|
|
936
|
-
processed_lines = [
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
multi_line_str += "\n" + lines[j]
|
|
947
|
-
j += 1
|
|
948
|
-
if is_looped:
|
|
949
|
-
# Create a line for the multiline string only
|
|
950
|
-
processed_lines[out_i] = f"'{multi_line_str}'"
|
|
951
|
-
out_i += 1
|
|
966
|
+
processed_lines = []
|
|
967
|
+
in_multi_line = False
|
|
968
|
+
mutli_line_value = []
|
|
969
|
+
for line in lines:
|
|
970
|
+
# Multiline value are enclosed by ';' at the start of the beginning and end line
|
|
971
|
+
if line[0] == ";":
|
|
972
|
+
if not in_multi_line:
|
|
973
|
+
# Start of multiline value
|
|
974
|
+
in_multi_line = True
|
|
975
|
+
mutli_line_value.append(line)
|
|
952
976
|
else:
|
|
953
|
-
#
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
processed_lines[out_i - 1] += " " + lines[in_i]
|
|
960
|
-
in_i += 1
|
|
961
|
-
|
|
977
|
+
# End of multiline value
|
|
978
|
+
in_multi_line = False
|
|
979
|
+
# The current line contains only the end character ';'
|
|
980
|
+
# Hence this line is not added to the processed lines
|
|
981
|
+
processed_lines.append("\n".join(mutli_line_value))
|
|
982
|
+
mutli_line_value = []
|
|
962
983
|
else:
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
return [line for line in processed_lines if line is not None]
|
|
984
|
+
if in_multi_line:
|
|
985
|
+
mutli_line_value.append(line)
|
|
986
|
+
else:
|
|
987
|
+
processed_lines.append(line)
|
|
988
|
+
return processed_lines
|
|
969
989
|
|
|
970
990
|
|
|
971
|
-
def
|
|
991
|
+
def _escape(value):
|
|
972
992
|
"""
|
|
973
|
-
|
|
993
|
+
Escape special characters in a value to make it compatible with CIF.
|
|
974
994
|
"""
|
|
975
|
-
if
|
|
995
|
+
if "\n" in value:
|
|
996
|
+
# A value with linebreaks must be represented as multiline value
|
|
997
|
+
return _multiline(value)
|
|
998
|
+
elif "'" in value and '"' in value:
|
|
999
|
+
# If both quote types are present, you cannot use them for escaping
|
|
1000
|
+
return _multiline(value)
|
|
1001
|
+
elif len(value) == 0:
|
|
976
1002
|
return "''"
|
|
977
1003
|
elif value[0] == "_":
|
|
978
1004
|
return "'" + value + "'"
|
|
@@ -990,12 +1016,10 @@ def _quote(value):
|
|
|
990
1016
|
|
|
991
1017
|
def _multiline(value):
|
|
992
1018
|
"""
|
|
993
|
-
Convert a string
|
|
1019
|
+
Convert a string that may contain linebreaks into CIF-compatible
|
|
994
1020
|
multiline string.
|
|
995
1021
|
"""
|
|
996
|
-
|
|
997
|
-
return "\n;" + value + "\n;\n"
|
|
998
|
-
return value
|
|
1022
|
+
return "\n;" + value + "\n;\n"
|
|
999
1023
|
|
|
1000
1024
|
|
|
1001
1025
|
def _split_one_line(line):
|
|
@@ -1003,6 +1027,10 @@ def _split_one_line(line):
|
|
|
1003
1027
|
Split a line into its fields.
|
|
1004
1028
|
Supporting embedded quotes (' or "), like `'a dog's life'` to `a dog's life`
|
|
1005
1029
|
"""
|
|
1030
|
+
# Special case of multiline value, where the line starts with ';'
|
|
1031
|
+
if line[0] == ";":
|
|
1032
|
+
return [line[1:]]
|
|
1033
|
+
|
|
1006
1034
|
# Define the patterns for different types of fields
|
|
1007
1035
|
single_quote_pattern = r"('(?:'(?! )|[^'])*')(?:\s|$)"
|
|
1008
1036
|
double_quote_pattern = r'("(?:"(?! )|[^"])*")(?:\s|$)'
|
|
@@ -450,7 +450,7 @@ def _fill_annotations(array, atom_site, extra_fields, use_author_fields):
|
|
|
450
450
|
"chain_id",
|
|
451
451
|
_get_or_fallback(
|
|
452
452
|
atom_site, f"{prefix}_asym_id", f"{alt_prefix}_asym_id"
|
|
453
|
-
).as_array(
|
|
453
|
+
).as_array(str),
|
|
454
454
|
)
|
|
455
455
|
array.set_annotation(
|
|
456
456
|
"res_id",
|
|
@@ -458,21 +458,21 @@ def _fill_annotations(array, atom_site, extra_fields, use_author_fields):
|
|
|
458
458
|
atom_site, f"{prefix}_seq_id", f"{alt_prefix}_seq_id"
|
|
459
459
|
).as_array(int, -1),
|
|
460
460
|
)
|
|
461
|
-
array.set_annotation("ins_code", atom_site["pdbx_PDB_ins_code"].as_array(
|
|
461
|
+
array.set_annotation("ins_code", atom_site["pdbx_PDB_ins_code"].as_array(str, ""))
|
|
462
462
|
array.set_annotation(
|
|
463
463
|
"res_name",
|
|
464
464
|
_get_or_fallback(
|
|
465
465
|
atom_site, f"{prefix}_comp_id", f"{alt_prefix}_comp_id"
|
|
466
|
-
).as_array(
|
|
466
|
+
).as_array(str),
|
|
467
467
|
)
|
|
468
468
|
array.set_annotation("hetero", atom_site["group_PDB"].as_array(str) == "HETATM")
|
|
469
469
|
array.set_annotation(
|
|
470
470
|
"atom_name",
|
|
471
471
|
_get_or_fallback(
|
|
472
472
|
atom_site, f"{prefix}_atom_id", f"{alt_prefix}_atom_id"
|
|
473
|
-
).as_array(
|
|
473
|
+
).as_array(str),
|
|
474
474
|
)
|
|
475
|
-
array.set_annotation("element", atom_site["type_symbol"].as_array(
|
|
475
|
+
array.set_annotation("element", atom_site["type_symbol"].as_array(str))
|
|
476
476
|
|
|
477
477
|
if "atom_id" in extra_fields:
|
|
478
478
|
array.set_annotation("atom_id", atom_site["id"].as_array(int))
|
|
@@ -577,7 +577,7 @@ def _parse_inter_residue_bonds(atom_site, struct_conn):
|
|
|
577
577
|
atoms_indices_2 = atoms_indices_2[mapping_exists_mask]
|
|
578
578
|
|
|
579
579
|
# Interpret missing values as ANY bonds
|
|
580
|
-
bond_order = struct_conn["pdbx_value_order"].as_array(
|
|
580
|
+
bond_order = struct_conn["pdbx_value_order"].as_array(str, "")
|
|
581
581
|
# Consecutively apply the same masks as applied to the atom indices
|
|
582
582
|
# Logical combination does not work here,
|
|
583
583
|
# as the second mask was created based on already filtered data
|
|
@@ -964,25 +964,38 @@ def _set_intra_residue_bonds(array, atom_site):
|
|
|
964
964
|
aromatic_flag[i] = aromatic
|
|
965
965
|
any_mask = bond_array[:, 2] == BondType.ANY
|
|
966
966
|
|
|
967
|
-
|
|
967
|
+
# Remove already existing residue and atom name combinations
|
|
968
|
+
# These appear when the structure contains a residue multiple times
|
|
969
|
+
atom_id_1 = array.atom_name[bond_array[:, 0]]
|
|
970
|
+
atom_id_2 = array.atom_name[bond_array[:, 1]]
|
|
968
971
|
# Take the residue name from the first atom index, as the residue
|
|
969
972
|
# name is the same for both atoms, since we have only intra bonds
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
+
comp_id = array.res_name[bond_array[:, 0]]
|
|
974
|
+
_, unique_indices = np.unique(
|
|
975
|
+
np.stack([comp_id, atom_id_1, atom_id_2], axis=-1), axis=0, return_index=True
|
|
976
|
+
)
|
|
977
|
+
unique_indices.sort()
|
|
978
|
+
|
|
979
|
+
chem_comp_bond = Category()
|
|
980
|
+
n_bonds = len(unique_indices)
|
|
981
|
+
chem_comp_bond["pdbx_ordinal"] = np.arange(1, n_bonds + 1, dtype=np.int32)
|
|
982
|
+
chem_comp_bond["comp_id"] = comp_id[unique_indices]
|
|
983
|
+
chem_comp_bond["atom_id_1"] = atom_id_1[unique_indices]
|
|
984
|
+
chem_comp_bond["atom_id_2"] = atom_id_2[unique_indices]
|
|
973
985
|
chem_comp_bond["value_order"] = Column(
|
|
974
|
-
value_order,
|
|
986
|
+
value_order[unique_indices],
|
|
987
|
+
np.where(any_mask[unique_indices], MaskValue.MISSING, MaskValue.PRESENT),
|
|
975
988
|
)
|
|
976
989
|
chem_comp_bond["pdbx_aromatic_flag"] = Column(
|
|
977
|
-
aromatic_flag,
|
|
990
|
+
aromatic_flag[unique_indices],
|
|
991
|
+
np.where(any_mask[unique_indices], MaskValue.MISSING, MaskValue.PRESENT),
|
|
978
992
|
)
|
|
979
993
|
# BondList does not contain stereo information
|
|
980
994
|
# -> all values are missing
|
|
981
995
|
chem_comp_bond["pdbx_stereo_config"] = Column(
|
|
982
|
-
np.zeros(
|
|
983
|
-
np.full(
|
|
996
|
+
np.zeros(n_bonds, dtype="U1"),
|
|
997
|
+
np.full(n_bonds, MaskValue.MISSING),
|
|
984
998
|
)
|
|
985
|
-
chem_comp_bond["pdbx_ordinal"] = np.arange(1, len(bond_array) + 1, dtype=np.int32)
|
|
986
999
|
return chem_comp_bond
|
|
987
1000
|
|
|
988
1001
|
|
|
@@ -1007,6 +1020,7 @@ def _set_inter_residue_bonds(array, atom_site):
|
|
|
1007
1020
|
bond_array = _filter_bonds(array, "inter")
|
|
1008
1021
|
if len(bond_array) == 0:
|
|
1009
1022
|
return None
|
|
1023
|
+
|
|
1010
1024
|
struct_conn = Category()
|
|
1011
1025
|
struct_conn["id"] = np.arange(1, len(bond_array) + 1)
|
|
1012
1026
|
struct_conn["conn_type_id"] = np.full(len(bond_array), "covale")
|
|
@@ -1135,12 +1149,11 @@ def get_component(pdbx_file, data_block=None, use_ideal_coord=True, res_name=Non
|
|
|
1135
1149
|
|
|
1136
1150
|
array = AtomArray(atom_category.row_count)
|
|
1137
1151
|
|
|
1138
|
-
array.hetero[
|
|
1139
|
-
array.res_name
|
|
1140
|
-
array.atom_name
|
|
1141
|
-
array.element
|
|
1142
|
-
array.
|
|
1143
|
-
array.charge = atom_category["charge"].as_array(int, 0)
|
|
1152
|
+
array.set_annotation("hetero", np.full(len(atom_category["comp_id"]), True))
|
|
1153
|
+
array.set_annotation("res_name", atom_category["comp_id"].as_array(str))
|
|
1154
|
+
array.set_annotation("atom_name", atom_category["atom_id"].as_array(str))
|
|
1155
|
+
array.set_annotation("element", atom_category["type_symbol"].as_array(str))
|
|
1156
|
+
array.set_annotation("charge", atom_category["charge"].as_array(int, 0))
|
|
1144
1157
|
|
|
1145
1158
|
coord_fields = [f"pdbx_model_Cartn_{dim}_ideal" for dim in ("x", "y", "z")]
|
|
1146
1159
|
alt_coord_fields = [f"model_Cartn_{dim}" for dim in ("x", "y", "z")]
|
|
Binary file
|
biotite/structure/io/trajfile.py
CHANGED
|
@@ -54,9 +54,9 @@ class TrajectoryFile(File, metaclass=abc.ABCMeta):
|
|
|
54
54
|
|
|
55
55
|
Parameters
|
|
56
56
|
----------
|
|
57
|
-
file_name : str
|
|
57
|
+
file_name : str or Path
|
|
58
58
|
The path of the file to be read.
|
|
59
|
-
|
|
59
|
+
Any other file-like object cannot be used.
|
|
60
60
|
start : int, optional
|
|
61
61
|
The frame index, where file parsing is started. If no value
|
|
62
62
|
is given, parsing starts at the first frame.
|
|
@@ -101,7 +101,7 @@ class TrajectoryFile(File, metaclass=abc.ABCMeta):
|
|
|
101
101
|
chunk_size = ((chunk_size // step) + 1) * step
|
|
102
102
|
|
|
103
103
|
traj_type = cls.traj_type()
|
|
104
|
-
with traj_type(file_name, "r") as f:
|
|
104
|
+
with traj_type(str(file_name), "r") as f:
|
|
105
105
|
if start is None:
|
|
106
106
|
start = 0
|
|
107
107
|
# Discard atoms before start
|
|
@@ -153,9 +153,9 @@ class TrajectoryFile(File, metaclass=abc.ABCMeta):
|
|
|
153
153
|
|
|
154
154
|
Parameters
|
|
155
155
|
----------
|
|
156
|
-
file_name : str
|
|
156
|
+
file_name : str or Path
|
|
157
157
|
The path of the file to be read.
|
|
158
|
-
|
|
158
|
+
Any other file-like object cannot be used.
|
|
159
159
|
start : int, optional
|
|
160
160
|
The frame index, where file parsing is started. If no value
|
|
161
161
|
is given, parsing starts at the first frame.
|
|
@@ -196,7 +196,7 @@ class TrajectoryFile(File, metaclass=abc.ABCMeta):
|
|
|
196
196
|
The `step` parameter does currently not work for *DCD* files.
|
|
197
197
|
"""
|
|
198
198
|
traj_type = cls.traj_type()
|
|
199
|
-
with traj_type(file_name, "r") as f:
|
|
199
|
+
with traj_type(str(file_name), "r") as f:
|
|
200
200
|
if start is None:
|
|
201
201
|
start = 0
|
|
202
202
|
# Discard atoms before start
|
|
@@ -280,9 +280,9 @@ class TrajectoryFile(File, metaclass=abc.ABCMeta):
|
|
|
280
280
|
|
|
281
281
|
Parameters
|
|
282
282
|
----------
|
|
283
|
-
file_name : str
|
|
283
|
+
file_name : str or Path
|
|
284
284
|
The path of the file to be read.
|
|
285
|
-
|
|
285
|
+
Any other file-like object cannot be used.
|
|
286
286
|
template : AtomArray or AtomArrayStack
|
|
287
287
|
The template array or stack, where the atom annotation data
|
|
288
288
|
is taken from.
|
|
@@ -354,13 +354,13 @@ class TrajectoryFile(File, metaclass=abc.ABCMeta):
|
|
|
354
354
|
|
|
355
355
|
Parameters
|
|
356
356
|
----------
|
|
357
|
-
file_name : str
|
|
358
|
-
The path of the file to be
|
|
359
|
-
|
|
357
|
+
file_name : str or Path
|
|
358
|
+
The path of the file to be read.
|
|
359
|
+
Any other file-like object cannot be used.
|
|
360
360
|
"""
|
|
361
361
|
traj_type = self.traj_type()
|
|
362
362
|
param = self.prepare_write_values(self._coord, self._box, self._time)
|
|
363
|
-
with traj_type(file_name, "w") as f:
|
|
363
|
+
with traj_type(str(file_name), "w") as f:
|
|
364
364
|
f.write(**param)
|
|
365
365
|
|
|
366
366
|
@classmethod
|
|
@@ -378,9 +378,9 @@ class TrajectoryFile(File, metaclass=abc.ABCMeta):
|
|
|
378
378
|
|
|
379
379
|
Parameters
|
|
380
380
|
----------
|
|
381
|
-
file_name : str
|
|
382
|
-
The path of the file to be
|
|
383
|
-
|
|
381
|
+
file_name : str or Path
|
|
382
|
+
The path of the file to be read.
|
|
383
|
+
Any other file-like object cannot be used.
|
|
384
384
|
coord : generator or array-like of ndarray, shape=(n,3), dtype=float
|
|
385
385
|
The atom coordinates for each frame.
|
|
386
386
|
box : generator or array-like of ndarray, shape=(3,3), dtype=float, optional
|
|
@@ -398,7 +398,7 @@ class TrajectoryFile(File, metaclass=abc.ABCMeta):
|
|
|
398
398
|
time = itertools.repeat(None)
|
|
399
399
|
|
|
400
400
|
traj_type = cls.traj_type()
|
|
401
|
-
with traj_type(file_name, "w") as f:
|
|
401
|
+
with traj_type(str(file_name), "w") as f:
|
|
402
402
|
for c, b, t in zip(coord, box, time):
|
|
403
403
|
if c.ndim != 2:
|
|
404
404
|
raise IndexError(
|
|
Binary file
|
biotite/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: biotite
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: A comprehensive library for computational molecular biology
|
|
5
5
|
Project-URL: homepage, https://www.biotite-python.org
|
|
6
6
|
Project-URL: repository, https://github.com/biotite-dev/biotite
|
|
@@ -56,6 +56,7 @@ Requires-Dist: numpy>=1.25
|
|
|
56
56
|
Requires-Dist: requests>=2.12
|
|
57
57
|
Provides-Extra: test
|
|
58
58
|
Requires-Dist: pytest; extra == 'test'
|
|
59
|
+
Requires-Dist: pytest-codspeed; extra == 'test'
|
|
59
60
|
Description-Content-Type: text/x-rst
|
|
60
61
|
|
|
61
62
|
.. image:: https://img.shields.io/pypi/v/biotite.svg
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
biotite
|
|
2
|
-
biotite-1.0.0.dist-info/WHEEL,sha256=0oG4CjoGfYHRJPy3gHncDJdYpmnqlf1ZuriAgA0fRmw,106
|
|
3
|
-
biotite-1.0.0.dist-info/METADATA,sha256=C6tIVbg8HfB-DgcNYsM7sb56iNpH-n4EulEWtL_-2fQ,7111
|
|
4
|
-
biotite-1.0.0.dist-info/licenses/LICENSE.rst,sha256=ZuNQuB65Dxf0rDB_5LxvA4SVQJBWxRZyvbjbvE-APWY,1534
|
|
5
|
-
biotite/version.py,sha256=DGJ4pj32xs3_DRJhSzQwCiRNnAQrMgo09USYpyMZsKc,411
|
|
1
|
+
biotite/version.py,sha256=IIj5MPQqf7H30zvHF3gsfSLSw1SsdlKYR9SngW-9GC8,411
|
|
6
2
|
biotite/copyable.py,sha256=C7ycTQxqanxT0SmXhzy5OLp7NpZdNWHyokozdoVDGNA,1897
|
|
7
3
|
biotite/__init__.py,sha256=rL8ZyaCUjOrECEvRxyHj8MOMp4FHMJ8n6KKgrYf5OAQ,545
|
|
8
4
|
biotite/visualize.py,sha256=EYUBKgeNrkPI53f7L4T893NMmLWgBp07aO2XFcdpYTU,10012
|
|
@@ -65,7 +61,7 @@ biotite/sequence/__init__.py,sha256=fSWhobaPGRMJI6-8UYFpjguxVtP4O4cAHmiRxNAGzYI,
|
|
|
65
61
|
biotite/sequence/seqtypes.py,sha256=zdj3fFkb_EDB0T4rqQuq-ErtX6TcFiP8kZ0tWINibnI,19346
|
|
66
62
|
biotite/sequence/codon.py,sha256=6SBjwz4c6IZiAFZL03qjcrjT84zczltc14haOOAkm6Q,16392
|
|
67
63
|
biotite/sequence/search.py,sha256=dF-OtPocZ5XAIgS4GCMt2YOKz0Oxb9b8FvPmVUY8j-k,3089
|
|
68
|
-
biotite/sequence/codec.cpython-312-darwin.so,sha256=
|
|
64
|
+
biotite/sequence/codec.cpython-312-darwin.so,sha256=MCuoSegNP7mrlLQGZHH0Y7fbOWxLAEhC1EhL5vAgD1M,282056
|
|
69
65
|
biotite/sequence/alphabet.py,sha256=OiUxnsbTaxuDjAiB96sVHYTOqG3XvwF5ceJ3tvViqh4,17190
|
|
70
66
|
biotite/sequence/io/__init__.py,sha256=4K13uxFWe8IpNC8yuVxjDiI7-8lmXu7qT6iMmVSqPs4,314
|
|
71
67
|
biotite/sequence/io/general.py,sha256=sD03pLnkxsT6vFh8806ZhErC8GEG3LF_70NMcVJyGe0,6694
|
|
@@ -86,33 +82,33 @@ biotite/sequence/io/fastq/file.py,sha256=OwSUw-Unp8AQc7LdpJSI2zmavBWsCcqov23HPHW
|
|
|
86
82
|
biotite/sequence/align/matrix.py,sha256=6N0b6j1MOBrFMnSdX83sWZqGH0e5_dFfIVEhGglbSBI,12720
|
|
87
83
|
biotite/sequence/align/permutation.pyx,sha256=xbbw5DJ7c5SXnuSUl2hJUMxzvinKP1Khc7CSdH5cEE0,10028
|
|
88
84
|
biotite/sequence/align/selector.pyx,sha256=13MYCmECOYFGoMQHgCRgKKeN74VOUSc0TnZuqRJhBo0,33471
|
|
89
|
-
biotite/sequence/align/pairwise.cpython-312-darwin.so,sha256=
|
|
85
|
+
biotite/sequence/align/pairwise.cpython-312-darwin.so,sha256=2ePTYBYHc9l1V9Lu5NH9IFGMibY9eK0tjkpIqElhzHg,625808
|
|
90
86
|
biotite/sequence/align/primes.txt,sha256=7pKfLGN1vjYl_KJ3y5uuo8np_5DDUH52UAkhb3fJfWE,10140
|
|
91
|
-
biotite/sequence/align/localgapped.cpython-312-darwin.so,sha256=
|
|
92
|
-
biotite/sequence/align/banded.cpython-312-darwin.so,sha256
|
|
87
|
+
biotite/sequence/align/localgapped.cpython-312-darwin.so,sha256=g9aEs9WI1Qq5i3DWoJ-YJD3Yjv76B1zrhIQp_KUKO7g,1090672
|
|
88
|
+
biotite/sequence/align/banded.cpython-312-darwin.so,sha256=-tOqfiK7-3v4oPiX83mQ8YQ-X-Gz7kyib9KzSYbv6HE,609448
|
|
93
89
|
biotite/sequence/align/kmeralphabet.pyx,sha256=J8I33f6AT8vhCNeW7tuZERqbCCC7Z9baC0RCrF01_zk,18115
|
|
94
|
-
biotite/sequence/align/localungapped.cpython-312-darwin.so,sha256=
|
|
90
|
+
biotite/sequence/align/localungapped.cpython-312-darwin.so,sha256=JblYHlIS_zG88w9BgaL0IH0_SZNt3dzA0i6nil54UxA,305312
|
|
95
91
|
biotite/sequence/align/alignment.py,sha256=XxFE0tdH37oiWcxfcbPYt25d2S3MePan7RY6fl8noP0,21351
|
|
96
|
-
biotite/sequence/align/permutation.cpython-312-darwin.so,sha256=
|
|
97
|
-
biotite/sequence/align/multiple.cpython-312-darwin.so,sha256=
|
|
92
|
+
biotite/sequence/align/permutation.cpython-312-darwin.so,sha256=kl0rvDK4emogw4w6b2UwTzzlZ9mwWq-wUjo_fLFHwbw,220800
|
|
93
|
+
biotite/sequence/align/multiple.cpython-312-darwin.so,sha256=AZk7OzRaPhZHpMWWXGICbgDpP4fsuwMtVlIyR575VFc,539024
|
|
98
94
|
biotite/sequence/align/tracetable.pyx,sha256=1gsT3OV7VkE6i_UpNiYOLVvD2_tfJgbNZb1yv9F4XR8,15455
|
|
99
95
|
biotite/sequence/align/pairwise.pyx,sha256=88bZUcDG3CflZPdUN_HMJaIMTKCAtBhmhq946tY__KE,22836
|
|
100
96
|
biotite/sequence/align/__init__.py,sha256=Twwj35DdxgKu9pN84u2PEtwo6MekLENbkaGbAPxB2A4,4715
|
|
101
97
|
biotite/sequence/align/localungapped.pyx,sha256=rj6gbuyLQIo6ZuPwVt01rs3fOSOjpzq6Vx3v6_zKdEQ,9696
|
|
102
98
|
biotite/sequence/align/buckets.py,sha256=k8H5RBS5Y7DrMoIOd5Ifrxp-nYWosJuqOYgLd1y-DWs,2464
|
|
103
99
|
biotite/sequence/align/localgapped.pyx,sha256=djdmgvACXde0dyqbKttc4itgu0MNh7aF0U9L6tHTZXM,33385
|
|
104
|
-
biotite/sequence/align/kmersimilarity.cpython-312-darwin.so,sha256=
|
|
100
|
+
biotite/sequence/align/kmersimilarity.cpython-312-darwin.so,sha256=0LGc1bNteuuwfoVd22zQgfcRAXgM5YvxUie84qhkIyE,211128
|
|
105
101
|
biotite/sequence/align/cigar.py,sha256=HGHelQe2SH4SdKjcyTmVlvrlllFzDtpiysskFcclIW4,14285
|
|
106
102
|
biotite/sequence/align/tracetable.pxd,sha256=_VP1ayP6FZL1Tzn1pCCbt6xPZDzFtE9bH0Gvop2lxyQ,2825
|
|
107
103
|
biotite/sequence/align/kmertable.pyx,sha256=6f-ifIWbICKP_ZAItxPqgjQVBoyId5bT2g6-dIO0zS4,121334
|
|
108
|
-
biotite/sequence/align/tracetable.cpython-312-darwin.so,sha256
|
|
104
|
+
biotite/sequence/align/tracetable.cpython-312-darwin.so,sha256=-bjOnTAxwUkAR4pIV3G1K_WBqlkTPFSpDCP9ZMX7-Is,181032
|
|
109
105
|
biotite/sequence/align/multiple.pyx,sha256=cUnbuAfYBp_Kt4Y7LeuPeuBiRdyu1D694i1kQIsUqPM,21965
|
|
110
106
|
biotite/sequence/align/statistics.py,sha256=98Vaz__s_8GltcMwfErNuKQfXuFKZCq-i1XWkJ_iAMQ,9655
|
|
111
|
-
biotite/sequence/align/selector.cpython-312-darwin.so,sha256=
|
|
107
|
+
biotite/sequence/align/selector.cpython-312-darwin.so,sha256=ku9GCeyHhNf2F8bWyuI8IaRolmFgU7SEQdRNMvdV_VU,316176
|
|
112
108
|
biotite/sequence/align/banded.pyx,sha256=-5peQOsZHoe27GjZCWrlrVN6YxsCEQCn0HkpglxDsbU,25392
|
|
113
|
-
biotite/sequence/align/kmeralphabet.cpython-312-darwin.so,sha256=
|
|
109
|
+
biotite/sequence/align/kmeralphabet.cpython-312-darwin.so,sha256=uDekjDRJrZPAct9x2vR6wTkn9zapR-orgjDXjotetLs,395056
|
|
114
110
|
biotite/sequence/align/kmersimilarity.pyx,sha256=EBpz8R_fofRd4gsmBJLuH2qZgMWKlzQkCJ54w_-K7gQ,8433
|
|
115
|
-
biotite/sequence/align/kmertable.cpython-312-darwin.so,sha256=
|
|
111
|
+
biotite/sequence/align/kmertable.cpython-312-darwin.so,sha256=OUpAD-xcSlC2OEXCVQwvs7BheS5ffiRF9aDyZZyifFQ,727792
|
|
116
112
|
biotite/sequence/align/matrix_data/PAM370.mat,sha256=ZD8BpkVrVK22_oLSXZb9d_kzNDfic_i0eVT1fUNkyBk,2068
|
|
117
113
|
biotite/sequence/align/matrix_data/PAM210.mat,sha256=UfUmaJ09ID11GUzuNeK7aUzgZTW1iJLizADnD0qT2BI,2067
|
|
118
114
|
biotite/sequence/align/matrix_data/BLOSUM30.mat,sha256=j6FWyeTXvfpSR0ZGecI18MCATcjM_FTJ2XGoEjWg3Qg,2122
|
|
@@ -228,38 +224,38 @@ biotite/sequence/graphics/color_schemes/jalview_prop_strand.json,sha256=83GsLW_L
|
|
|
228
224
|
biotite/sequence/graphics/color_schemes/autumn.json,sha256=usp-Y70tk39LCJV64vi7t3wd0pcf7kOjEE8dZhAbryM,842
|
|
229
225
|
biotite/sequence/graphics/color_schemes/jalview_zappo.json,sha256=V0IJ-GsT8G8-J9CILWaiY3QkB35wYEq2kbWEDqYjm-4,701
|
|
230
226
|
biotite/sequence/graphics/color_schemes/clustalx_dna.json,sha256=xkNRgGj_ersYNx8eSDAnI1HQalGiAWHw97tO_pmfyNE,249
|
|
231
|
-
biotite/sequence/phylo/tree.cpython-312-darwin.so,sha256=
|
|
232
|
-
biotite/sequence/phylo/upgma.cpython-312-darwin.so,sha256=
|
|
227
|
+
biotite/sequence/phylo/tree.cpython-312-darwin.so,sha256=XuGoDjyMvFVdgHFRBqrBe_7CrGG6uK1-icetsDOUi3Q,267536
|
|
228
|
+
biotite/sequence/phylo/upgma.cpython-312-darwin.so,sha256=bBYEZtpqPOHccDL-ge7rvk-t54NokRrCNfqannEYcds,199176
|
|
233
229
|
biotite/sequence/phylo/nj.pyx,sha256=s6hoo_7s3VFy-7Hgq9lKtUVXTZ-To8Dxwytk-ohfWYI,7281
|
|
234
230
|
biotite/sequence/phylo/__init__.py,sha256=TW1CQqOa3JZYqidRy5XE8gA0HuzA8zo2Iouit3wSsBM,1261
|
|
235
231
|
biotite/sequence/phylo/upgma.pyx,sha256=86QxGjj8fcGRhze7vZfqw8JLjLAZUevhkWDmzTy357E,5213
|
|
236
232
|
biotite/sequence/phylo/tree.pyx,sha256=4e4Bhlm1qWY0Wvj6JqDE9jVwP6lEUmE8lIHEUmRNLwU,39206
|
|
237
|
-
biotite/sequence/phylo/nj.cpython-312-darwin.so,sha256=
|
|
233
|
+
biotite/sequence/phylo/nj.cpython-312-darwin.so,sha256=yYejjC-VjjyJtz4HdInOyZbtJTMWSS2Tj2x27Jo8jGQ,204832
|
|
238
234
|
biotite/structure/repair.py,sha256=-1orK6q9tRNy36GWuS8_r4_goaGiaVtJy0I1VPCao2Q,6996
|
|
239
235
|
biotite/structure/superimpose.py,sha256=MvPsab-ZRdeig_SoJH3XrrOY0VteTNCnLEKNSsar0_Y,25124
|
|
240
236
|
biotite/structure/chains.py,sha256=I_A8JslWdBxi8cagoSGCfHddvHJ2WBSSe_WfovCwHxM,8827
|
|
241
237
|
biotite/structure/box.py,sha256=6iGaGbxnsoIRt_mq727yLqU1txz7PRpA2H458Xk00Uk,18598
|
|
242
|
-
biotite/structure/charges.cpython-312-darwin.so,sha256=
|
|
238
|
+
biotite/structure/charges.cpython-312-darwin.so,sha256=zke8JyLHhM_N1agd-Y_FiINNFAujq5oOLkxDKO4QmMI,262584
|
|
243
239
|
biotite/structure/error.py,sha256=NI8oZfhO7oYWlcEIi025QZFD3Wjvwn6SvOn_RanrFT0,783
|
|
244
240
|
biotite/structure/util.py,sha256=z-yxfc60EMJMPyEpTZ8cdl0LTb2zURrJm6xDYZUprF0,2200
|
|
245
241
|
biotite/structure/segments.py,sha256=_yotEX4cr9WbxHdezLmoak5M3306PZZmPAxcO-tqSHU,5546
|
|
246
242
|
biotite/structure/sequence.py,sha256=HLUaO32S_iDw2Ot1XEqQ7UtGDrxjCg30cCpzBqKpVPY,4246
|
|
247
243
|
biotite/structure/sasa.pyx,sha256=fEUWuLtqjEmviPuL57lLuLdopndW-b7xtzvCr0vfQtk,12984
|
|
248
|
-
biotite/structure/bonds.cpython-312-darwin.so,sha256=
|
|
244
|
+
biotite/structure/bonds.cpython-312-darwin.so,sha256=CYd1ypVu7rHsHvS2l5oY6gGW4J1_CfF4WmszVeZhEXQ,596544
|
|
249
245
|
biotite/structure/__init__.py,sha256=r2CR-UtCLVqbAygpKCri0pXD1FCe2M9wZSOi1Szp700,5324
|
|
250
246
|
biotite/structure/mechanics.py,sha256=1qzDJZ1U1T_KsxwKioYjtMTy9cGYRirtxKD5AcsaJ3E,2588
|
|
251
247
|
biotite/structure/sse.py,sha256=MUdyNSaDvxGi_gaY9bQjUSVNm-W8B1oinJ-UFV7slwk,11406
|
|
252
248
|
biotite/structure/charges.pyx,sha256=RpCz4sVOiwmZeVTcMAapiWJFVBPAK0gAAiNoNZuxZWA,18822
|
|
253
249
|
biotite/structure/density.py,sha256=BosyeB-0RGrANMpnq78A8cx_fYAOFnkcAJYxP8LKtZ0,4196
|
|
254
250
|
biotite/structure/rdf.py,sha256=Yf9PoWqSpNK3QsWqnCnOUBGL8WwKGOakgZ0pxj5UOiA,8104
|
|
255
|
-
biotite/structure/celllist.cpython-312-darwin.so,sha256=
|
|
251
|
+
biotite/structure/celllist.cpython-312-darwin.so,sha256=hh9cKBvkTv4a38fEWYHe0e5o-VBniuM7Zd6fgJuWJ50,304448
|
|
256
252
|
biotite/structure/transform.py,sha256=uz0t7-uv3QxJEd7oe8tpcnQPt5YfoFT6CLoruxEmvpA,19649
|
|
257
253
|
biotite/structure/geometry.py,sha256=nYFJxpZvtujFK-9ERBRxAl1yQSikezGVz6ZAKjoa96U,25058
|
|
258
254
|
biotite/structure/molecules.py,sha256=gkOSUTkIf1csP_6vDuxBhfJjIJWx-9xf_dW6dO7vFPY,15504
|
|
259
|
-
biotite/structure/filter.py,sha256=
|
|
255
|
+
biotite/structure/filter.py,sha256=X2Mj5_Z0_lk1LxuJudlztxuu7VkVF_ObtV_FCrXyHhg,17967
|
|
260
256
|
biotite/structure/bonds.pyx,sha256=XYd9QtCtyqEZKGXkSQyt74oku9NVNufPmaC35BFLZX0,67996
|
|
261
|
-
biotite/structure/atoms.py,sha256=
|
|
262
|
-
biotite/structure/sasa.cpython-312-darwin.so,sha256=
|
|
257
|
+
biotite/structure/atoms.py,sha256=y_dSNDNpn0RGNOphCQ4LRNvm0Pe9sBuqb7vtde4TOMs,47411
|
|
258
|
+
biotite/structure/sasa.cpython-312-darwin.so,sha256=J5RdyesQc_CswsSqiwkQQwIC5lZnxfO1BdX29hb-dRA,261736
|
|
263
259
|
biotite/structure/pseudoknots.py,sha256=hHxS4IOekR8ZqYFJvuXMexM1e1kaWmdqX18zfxAL4W0,22224
|
|
264
260
|
biotite/structure/basepairs.py,sha256=2qxTgl6Q1zMjvZLa331hfQzbeMwrFzvSJYAfSETnwWo,49759
|
|
265
261
|
biotite/structure/integrity.py,sha256=I2gcIgCoxWsC_adSsHYvbmvCz1aSeeXvIjt8uZWxYOM,6826
|
|
@@ -268,19 +264,19 @@ biotite/structure/hbond.py,sha256=4y2FXeAXl7g2EDnwb1uDXFieGpZPQhnnkdATBechvW8,15
|
|
|
268
264
|
biotite/structure/dotbracket.py,sha256=8S1DHu1-PRgeMHERztfOKggneVEcoUdwd0QNtcH3qI4,6834
|
|
269
265
|
biotite/structure/residues.py,sha256=nYkbDjGYK6pFNJ0mZ1Hyb2ocmIOWLLnLyGi1tuhXxXk,22454
|
|
270
266
|
biotite/structure/celllist.pyx,sha256=PCK5hx4QyuRrernfP_ty-w2ZRG5Qyn5dmibRwdVKXsE,34461
|
|
271
|
-
biotite/structure/io/trajfile.py,sha256=
|
|
267
|
+
biotite/structure/io/trajfile.py,sha256=vQehU2tsUnvK_y5VyAyBpQX9ec-MQrFjFr7X0tYM8tI,25184
|
|
272
268
|
biotite/structure/io/__init__.py,sha256=Lxmd8x6lpWz8nA0QhXmrgjvD_mOP0KyGmEzsVGzxXX4,998
|
|
273
269
|
biotite/structure/io/general.py,sha256=GknBtXTMUsxhEiBrnB1dxW5ndFDHXnXT39xAlNAEr_4,8448
|
|
274
270
|
biotite/structure/io/dcd/__init__.py,sha256=tYiiTSmqDrsSgg_sZaoQgx2D8N9OeqlooxH46-4-iaQ,388
|
|
275
271
|
biotite/structure/io/dcd/file.py,sha256=jaU81fvGl4WG0zXB1dBKTOtSvFF3fS0kxeNR-wwpXlY,2224
|
|
276
272
|
biotite/structure/io/trr/__init__.py,sha256=5WNHMGiHNNzYdoiybE6Cs0bYAcznS5D3ABu7gHDJ__A,359
|
|
277
273
|
biotite/structure/io/trr/file.py,sha256=2LjaLoKYfNgyQGSEfQ1TdZQqaPyrBh3irbJdmEKFTMI,1235
|
|
278
|
-
biotite/structure/io/pdbx/encoding.cpython-312-darwin.so,sha256=
|
|
274
|
+
biotite/structure/io/pdbx/encoding.cpython-312-darwin.so,sha256=XW0js9XClBLwoaUZ_Qs6yj2DTQcoB1UOt1QkOHO9Ve4,1137080
|
|
279
275
|
biotite/structure/io/pdbx/bcif.py,sha256=FD9F_K14wDLApgaHtJ8Ove6Gogpk_8MB4MbuvMJ0SlY,19820
|
|
280
|
-
biotite/structure/io/pdbx/convert.py,sha256=
|
|
276
|
+
biotite/structure/io/pdbx/convert.py,sha256=Ih1BEJNUes-NzvNhSyi8bWOZn4vNWyT_BVvkUclRGqY,60208
|
|
281
277
|
biotite/structure/io/pdbx/encoding.pyx,sha256=KMfSe853yRKRCKzBNOl-JWtep7_i7Z0rzFFu6Tct0vE,28725
|
|
282
278
|
biotite/structure/io/pdbx/__init__.py,sha256=t8TqRYZdoHW_Jt68ZfXCZ0jmchLOuQbtYWRYwCocnEc,693
|
|
283
|
-
biotite/structure/io/pdbx/cif.py,sha256=
|
|
279
|
+
biotite/structure/io/pdbx/cif.py,sha256=Lg9BjYiKLni76J3gqeKiwWgqA7tSVxXuja8kUiK0A8g,34455
|
|
284
280
|
biotite/structure/io/pdbx/component.py,sha256=1ILksDKeb2TdRy3hW1-mSpno_zZEqT0sdpGlq_eY4U0,8026
|
|
285
281
|
biotite/structure/io/xtc/__init__.py,sha256=ipZjsWBil-h2ujdlEobyI2jGy5xsfRVOPAyCsYAJ7G4,357
|
|
286
282
|
biotite/structure/io/xtc/file.py,sha256=PknO2-xzLgKTBW5Gig5Hv1HUZ4BIHRf2con2MLxEwNU,1235
|
|
@@ -297,7 +293,7 @@ biotite/structure/io/mol/__init__.py,sha256=WvcNPDdf9W1zPyJ0tjTvGNxA83ht18uRQA8B
|
|
|
297
293
|
biotite/structure/io/mol/ctab.py,sha256=r6Ryx3ZBhlxm88PWVOWGwxrgPow95DLEAcIf8N2mkGU,13470
|
|
298
294
|
biotite/structure/io/mol/mol.py,sha256=Eterau_ZfXbIkFHpDTvWzM2Yxxmem2hZn1tOQkXNuqM,5461
|
|
299
295
|
biotite/structure/io/mol/sdf.py,sha256=6u2oSfY1BICf0TZ7qkOrMpfbbyYlf6QruoLBCipzKE8,32245
|
|
300
|
-
biotite/structure/io/pdb/hybrid36.cpython-312-darwin.so,sha256=
|
|
296
|
+
biotite/structure/io/pdb/hybrid36.cpython-312-darwin.so,sha256=CZ2J5J56Cwsq0DUe5yQeL4k5CHfeRdC-U3gha4ufDNw,187416
|
|
301
297
|
biotite/structure/io/pdb/convert.py,sha256=fzXkfm-SN9HswZ8srj0v15RRec9hq0BtB3gCgNIlk9s,10602
|
|
302
298
|
biotite/structure/io/pdb/__init__.py,sha256=5NbUMDRKIe7jJ2ByRHpMhJzY_vIasjSgO63Zxrpq8BM,733
|
|
303
299
|
biotite/structure/io/pdb/file.py,sha256=Ox_ufeO9B78c3ZS06Dpb0I-aYXftEhPN7T3oXnW_uW4,47896
|
|
@@ -320,3 +316,7 @@ biotite/structure/info/ccd/nucleotides.txt,sha256=Q7Zjz45BAO6c2QDAgvYdKtWAqmjQxy
|
|
|
320
316
|
biotite/structure/graphics/__init__.py,sha256=YwMT8-c2DjrkcwyK6jPeDtAKxQda0OhElnwk8J0y3Hc,353
|
|
321
317
|
biotite/structure/graphics/rna.py,sha256=w7zFMKo2ZZ4n60SkbkupEXPxe3-KUNa261PF784ry8k,12016
|
|
322
318
|
biotite/structure/graphics/atoms.py,sha256=988_URX4hfTE3oBOYgAvZruOrzogMPcFKiTT5RJL01E,8116
|
|
319
|
+
biotite-1.0.1.dist-info/RECORD,,
|
|
320
|
+
biotite-1.0.1.dist-info/WHEEL,sha256=0oG4CjoGfYHRJPy3gHncDJdYpmnqlf1ZuriAgA0fRmw,106
|
|
321
|
+
biotite-1.0.1.dist-info/METADATA,sha256=lnwl1IjHDLJ5EVhHYSUQplx3-4Ql4gbbezrkspTCRK8,7159
|
|
322
|
+
biotite-1.0.1.dist-info/licenses/LICENSE.rst,sha256=ZuNQuB65Dxf0rDB_5LxvA4SVQJBWxRZyvbjbvE-APWY,1534
|
|
File without changes
|
|
File without changes
|