@@ -482,9 +482,7 @@ pub fn annotate_seq_core(
482
482
let mut mis = semi[ i] . 4 . clone ( ) ;
483
483
let mut mis_count = 0 ;
484
484
while l > 0 && l + off > 0 {
485
- if b. get ( ( l - 1_i32 ) as usize )
486
- != refs[ t as usize ] . get ( ( l + off - 1_i32 ) as usize )
487
- {
485
+ if b. get ( ( l - 1_i32 ) as usize ) != refs[ t as usize ] . get ( ( l + off - 1_i32 ) as usize ) {
488
486
mis. push ( l - 1 ) ;
489
487
mis_count += 1 ;
490
488
}
@@ -1208,11 +1206,13 @@ pub fn annotate_seq_core(
1208
1206
{
1209
1207
win1 = true ;
1210
1208
} else if zstop1 == 0 && zstop2 > 0 {
1211
- } else if ( outside2 <= 10.0 || total2 - share <= 10 ) && ( m1 < m2
1209
+ } else if ( outside2 <= 10.0 || total2 - share <= 10 )
1210
+ && ( m1 < m2
1212
1211
|| ( m1 == m2 && err1 < err2 && !c2)
1213
1212
|| ( m1 == m2 && err1 == err2 && outside1 > outside2)
1214
1213
|| ( m1 == m2 && err1 == err2 && outside1 == outside2 && t1 < t2)
1215
- || c1) {
1214
+ || c1)
1215
+ {
1216
1216
win1 = true ;
1217
1217
}
1218
1218
@@ -1223,11 +1223,13 @@ pub fn annotate_seq_core(
1223
1223
{
1224
1224
win2 = true ;
1225
1225
} else if zstop2 == 0 && zstop1 > 0 {
1226
- } else if ( outside1 <= 10.0 || total1 - share <= 10 ) && ( m2 < m1
1226
+ } else if ( outside1 <= 10.0 || total1 - share <= 10 )
1227
+ && ( m2 < m1
1227
1228
|| ( m2 == m1 && err2 < err1 && !c1)
1228
1229
|| ( m2 == m1 && err2 == err1 && outside2 > outside1)
1229
1230
|| ( m2 == m1 && err2 == err1 && outside2 == outside1 && t2 < t1)
1230
- || c2) {
1231
+ || c2)
1232
+ {
1231
1233
win2 = true ;
1232
1234
}
1233
1235
if win2 {
@@ -1307,14 +1309,10 @@ pub fn annotate_seq_core(
1307
1309
&& err1 == err2
1308
1310
&& t1 < t2
1309
1311
{
1310
- if refdata. name [ t1] == * "TRBC1"
1311
- && refdata. name [ t2] == * "TRBC2"
1312
- {
1312
+ if refdata. name [ t1] == * "TRBC1" && refdata. name [ t2] == * "TRBC2" {
1313
1313
continue ;
1314
1314
}
1315
- if refdata. name [ t2] == * "TRBC1"
1316
- && refdata. name [ t1] == * "TRBC2"
1317
- {
1315
+ if refdata. name [ t2] == * "TRBC1" && refdata. name [ t1] == * "TRBC2" {
1318
1316
continue ;
1319
1317
}
1320
1318
win1 = true ;
@@ -1460,7 +1458,10 @@ pub fn annotate_seq_core(
1460
1458
let mut have_v = false ;
1461
1459
for i2 in 0 ..annx. len ( ) {
1462
1460
let t2 = annx[ i2] . 2 as usize ;
1463
- if !rheaders[ t2] . contains ( "segment" ) && refdata. segtype [ t2] == * "V" && refdata. rtype [ t1] == refdata. rtype [ t2] {
1461
+ if !rheaders[ t2] . contains ( "segment" )
1462
+ && refdata. segtype [ t2] == * "V"
1463
+ && refdata. rtype [ t1] == refdata. rtype [ t2]
1464
+ {
1464
1465
have_v = true ;
1465
1466
}
1466
1467
}
@@ -1652,14 +1653,10 @@ pub fn annotate_seq_core(
1652
1653
}
1653
1654
1654
1655
if mis1 == mis2 {
1655
- if refdata. name [ t1] == * "TRBC1"
1656
- && refdata. name [ t2] == * "TRBC2"
1657
- {
1656
+ if refdata. name [ t1] == * "TRBC1" && refdata. name [ t2] == * "TRBC2" {
1658
1657
continue ;
1659
1658
}
1660
- if refdata. name [ t2] == * "TRBC1"
1661
- && refdata. name [ t1] == * "TRBC2"
1662
- {
1659
+ if refdata. name [ t2] == * "TRBC1" && refdata. name [ t1] == * "TRBC2" {
1663
1660
continue ;
1664
1661
}
1665
1662
}
@@ -2819,17 +2816,19 @@ pub fn make_annotation_units(
2819
2816
}
2820
2817
let mut entries = 1 ;
2821
2818
let mut len = ann[ j] . 1 ;
2822
- if j < ann. len ( ) - 1 && ann[ j + 1 ] . 2 as usize == t && ( ( ann[ j] . 0 + ann[ j] . 1 == ann[ j + 1 ] . 0 && ann[ j] . 3 + ann[ j] . 1 < ann[ j + 1 ] . 3 )
2823
- || ( ann[ j] . 0 + ann[ j] . 1 < ann[ j + 1 ] . 0 && ann[ j] . 3 + ann[ j] . 1 == ann[ j + 1 ] . 3 ) ) {
2819
+ if j < ann. len ( ) - 1
2820
+ && ann[ j + 1 ] . 2 as usize == t
2821
+ && ( ( ann[ j] . 0 + ann[ j] . 1 == ann[ j + 1 ] . 0 && ann[ j] . 3 + ann[ j] . 1 < ann[ j + 1 ] . 3 )
2822
+ || ( ann[ j] . 0 + ann[ j] . 1 < ann[ j + 1 ] . 0 && ann[ j] . 3 + ann[ j] . 1 == ann[ j + 1 ] . 3 ) )
2823
+ {
2824
2824
entries = 2 ;
2825
2825
len += ann[ j + 1 ] . 1 ;
2826
2826
}
2827
2827
let mut score = len as usize ;
2828
2828
if refdata. segtype [ t] == * "V" && ann[ j] . 3 == 0 {
2829
2829
score += 1_000_000 ;
2830
2830
}
2831
- if refdata. segtype [ t] == * "J"
2832
- && ( ann[ j] . 3 + ann[ j] . 1 ) as usize == refdata. refs [ t] . len ( )
2831
+ if refdata. segtype [ t] == * "J" && ( ann[ j] . 3 + ann[ j] . 1 ) as usize == refdata. refs [ t] . len ( )
2833
2832
{
2834
2833
score += 1_000_000 ;
2835
2834
}
@@ -2852,41 +2851,7 @@ pub fn make_annotation_units(
2852
2851
#[ cfg( test) ]
2853
2852
mod tests {
2854
2853
use super :: * ;
2855
- use crate :: refx:: { human_ref, make_vdj_ref_data_core} ;
2856
- use crate :: { annotate, refx} ;
2857
-
2858
- // The following test checks for alignment of a D region. This example was fixed by code
2859
- // changes in March 2020.
2860
-
2861
- #[ test]
2862
- fn test_d_region_alignment ( ) {
2863
- use annotate:: { annotate_seq, DnaString , RefData } ;
2864
- let seq = DnaString :: from_acgt_bytes (
2865
- b"GGAGGTGCGAATGACTCTGCTCTCTGTCCTGTCTCCTCATCTGCAAAATTAGGAAGCCTGTCTTGATTATCTCCAGGAA\
2866
- CCTCCCACCTCTTCATTCCAGCCTCTGACAAACTCTGCACATTAGGCCAGGAGAAGCCCCCGAGCCAAGTCTCTTTTCTCATTCTC\
2867
- TTCCAACAAGTGCTTGGAGCTCCAAGAAGGCCCCCTTTGCACTATGAGCAACCAGGTGCTCTGCTGTGTGGTCCTTTGTCTCCTGG\
2868
- GAGCAAACACCGTGGATGGTGGAATCACTCAGTCCCCAAAGTACCTGTTCAGAAAGGAAGGACAGAATGTGACCCTGAGTTGTGAA\
2869
- CAGAATTTGAACCACGATGCCATGTACTGGTACCGACAGGACCCAGGGCAAGGGCTGAGATTGATCTACTACTCACAGATAGTAAA\
2870
- TGACTTTCAGAAAGGAGATATAGCTGAAGGGTACAGCGTCTCTCGGGAGAAGAAGGAATCCTTTCCTCTCACTGTGACATCGGCCC\
2871
- AAAAGAACCCGACAGCTTTCTATCTCTGTGCCAGTAGTATTTTTCTTGCCGGGACAGGGGGCTGGAGCGGCACTGAAGCTTTCTTT\
2872
- GGACAAGGCACCAGACTCACAGTTGTAGAGGACCTGAACAAGGTGTTCCCACCCGAGGTCGCTGTGTTTGAGCCATCAGA",
2873
- ) ;
2874
- let ( refx, ext_refx) = ( human_ref ( ) , String :: new ( ) ) ;
2875
- let ( is_tcr, is_bcr) = ( true , false ) ;
2876
- let mut refdata = RefData :: new ( ) ;
2877
- make_vdj_ref_data_core ( & mut refdata, & refx, & ext_refx, is_tcr, is_bcr, None ) ;
2878
- let mut ann = Vec :: < ( i32 , i32 , i32 , i32 , i32 ) > :: new ( ) ;
2879
- annotate_seq ( & seq, & refdata, & mut ann, true , false , true ) ;
2880
- let mut have_d = false ;
2881
- for i in 0 ..ann. len ( ) {
2882
- if refdata. is_d ( ann[ i] . 2 as usize ) {
2883
- have_d = true ;
2884
- }
2885
- }
2886
- if !have_d {
2887
- panic ! ( "\n Failed to find alignment of D region.\n " ) ;
2888
- }
2889
- }
2854
+ use crate :: refx;
2890
2855
2891
2856
#[ test]
2892
2857
fn test_no_internal_soft_clipping ( ) {
0 commit comments