RNApolis 0.4.0__py3-none-any.whl → 0.4.2__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)