RNApolis 0.4.0__py3-none-any.whl → 0.4.2__py3-none-any.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: RNApolis
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: A Python library containing RNA-related bioinformatics functions and classes
5
5
  Home-page: https://github.com/tzok/rnapolis-py
6
6
  Author: Tomasz Zok
@@ -6,12 +6,12 @@ rnapolis/molecule_filter.py,sha256=hB6-nXgjmw7FAsQ3bj0cZ2FvuW2I1PXunEfcdwEUB1o,7
6
6
  rnapolis/motif_extractor.py,sha256=duHvpi9Ulcny9K60E6VBpz5RpJZw-KdTB4_Ph0iP478,774
7
7
  rnapolis/parser.py,sha256=wCA9rXqt51iLECgeBqOShFpuT8JwanNkHYD5uXYvLzU,13988
8
8
  rnapolis/rfam_folder.py,sha256=SjiiyML_T1__saruFwSMJEoQ7Y55GIU8ktS8ZUn5-fw,11111
9
- rnapolis/tertiary.py,sha256=iA5_ut1_nhwlbYpu2898h5li4pTEOc-iA_uK7vIvQ2o,20269
9
+ rnapolis/tertiary.py,sha256=ya7A2HyhPZSbA4rC8E43-mRIhR73-AeBuLE2GRpOTxk,20347
10
10
  rnapolis/transformer.py,sha256=V9nOQvdq4-p7yUWo0vQg0CDQMpmyxz9t4TMSRVEKHnw,1817
11
11
  rnapolis/util.py,sha256=IdquFO3PV1_KDqodjupzm0Rqvgy0CeSzxGHaGEHYXVU,543
12
- RNApolis-0.4.0.dist-info/LICENSE,sha256=ZGRu12MzCgbYA-Lt8MyBlmjvPZh7xfiD5u5wBx0enq4,1066
13
- RNApolis-0.4.0.dist-info/METADATA,sha256=kz7fPjyFm8j6HMwnDvtwlLkZGPpzw2Ce29XI1pVyIyU,54322
14
- RNApolis-0.4.0.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
15
- RNApolis-0.4.0.dist-info/entry_points.txt,sha256=foN2Pn5e-OzEz0fFmNoX6PnFSZFQntOlY8LbognP5F0,308
16
- RNApolis-0.4.0.dist-info/top_level.txt,sha256=LcO18koxZcWoJ21KDRRRo_tyIbmXL5z61dPitZpy8yc,9
17
- RNApolis-0.4.0.dist-info/RECORD,,
12
+ RNApolis-0.4.2.dist-info/LICENSE,sha256=ZGRu12MzCgbYA-Lt8MyBlmjvPZh7xfiD5u5wBx0enq4,1066
13
+ RNApolis-0.4.2.dist-info/METADATA,sha256=1rZv7syiOsppxC9PAy0kYmgBXABKCX4gWZaqdtpbvis,54322
14
+ RNApolis-0.4.2.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
15
+ RNApolis-0.4.2.dist-info/entry_points.txt,sha256=foN2Pn5e-OzEz0fFmNoX6PnFSZFQntOlY8LbognP5F0,308
16
+ RNApolis-0.4.2.dist-info/top_level.txt,sha256=LcO18koxZcWoJ21KDRRRo_tyIbmXL5z61dPitZpy8yc,9
17
+ RNApolis-0.4.2.dist-info/RECORD,,
rnapolis/tertiary.py CHANGED
@@ -497,42 +497,24 @@ class Mapping2D3D:
497
497
 
498
498
  @cached_property
499
499
  def strands_sequences(self) -> List[Tuple[str, str]]:
500
- nucleotides = [
501
- residue for residue in self.structure3d.residues if residue.is_nucleotide
502
- ]
500
+ result = defaultdict(list)
503
501
 
504
- if len(nucleotides) == 0:
505
- return []
502
+ for i, residue in enumerate(
503
+ filter(lambda r: r.is_nucleotide, self.structure3d.residues)
504
+ ):
505
+ if i > 0 and self.find_gaps:
506
+ previous = self.structure3d.residues[i - 1]
506
507
 
507
- result = []
508
- strand = [nucleotides[0]]
509
-
510
- for i in range(1, len(nucleotides)):
511
- previous = strand[-1]
512
- current = nucleotides[i]
513
-
514
- if previous.chain == current.chain and (
515
- self.find_gaps == False or previous.is_connected(current)
516
- ):
517
- strand.append(current)
518
- else:
519
- result.append(
520
- (
521
- previous.chain,
522
- "".join([residue.one_letter_name for residue in strand]),
523
- )
524
- )
525
- strand = [current]
508
+ if (
509
+ not previous.is_connected(residue)
510
+ and previous.chain == residue.chain
511
+ ):
512
+ for k in range(residue.number - previous.number - 1):
513
+ result[residue.chain].append("?")
526
514
 
527
- if len(strand) > 0:
528
- result.append(
529
- (
530
- strand[0].chain,
531
- "".join([residue.one_letter_name for residue in strand]),
532
- )
533
- )
515
+ result[residue.chain].append(residue.one_letter_name)
534
516
 
535
- return result
517
+ return [(chain, "".join(sequence)) for chain, sequence in result.items()]
536
518
 
537
519
  @cached_property
538
520
  def bpseq(self) -> BpSeq:
@@ -548,11 +530,24 @@ class Mapping2D3D:
548
530
  result: Dict[int, List] = {}
549
531
  residue_map: Dict[Residue3D, int] = {}
550
532
  i = 1
551
- for residue in self.structure3d.residues:
552
- if residue.is_nucleotide:
553
- result[i] = [i, residue.one_letter_name, 0]
554
- residue_map[residue] = i
555
- i += 1
533
+
534
+ for j, residue in enumerate(
535
+ filter(lambda r: r.is_nucleotide, self.structure3d.residues)
536
+ ):
537
+ if self.find_gaps and j > 0:
538
+ previous = self.structure3d.residues[j - 1]
539
+
540
+ if (
541
+ not previous.is_connected(residue)
542
+ and previous.chain == residue.chain
543
+ ):
544
+ for k in range(residue.number - previous.number - 1):
545
+ result[i] = [i, "?", 0]
546
+ i += 1
547
+
548
+ result[i] = [i, residue.one_letter_name, 0]
549
+ residue_map[residue] = i
550
+ i += 1
556
551
 
557
552
  for base_pair in base_pairs:
558
553
  j = residue_map.get(base_pair.nt1_3d, None)