From 33e45804a38c81232ce492a38f2a347519e09e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Koray=20K=C4=B1rl=C4=B1?= Date: Fri, 31 May 2019 13:59:38 -0400 Subject: [PATCH 1/6] modify paired_with check to work with multiple aliases for cases with 2 different aliases in filefastq aliases, create a symlink key for the secondary aliases, and in the check, look for symlinks and connect to the main item (first alias) --- wranglertools/import_data.py | 50 +++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/wranglertools/import_data.py b/wranglertools/import_data.py index 83c75638..b945cf66 100755 --- a/wranglertools/import_data.py +++ b/wranglertools/import_data.py @@ -909,9 +909,12 @@ def _add_e_to_edict(alias, err, errors): def _pairing_consistency_check(files, errors): """checks the datastructure for consistency""" - file_list = sorted([f for f in files]) + file_list = sorted([f for f in files if not files[f].get('symlink')]) pair_list = [] for f, info in files.items(): + # skip links for secondary aliases + if info.get('symlink'): + continue pair = info.get('pair') if not pair: err = 'no paired file but paired_end = ' + info.get('end') @@ -919,6 +922,7 @@ def _pairing_consistency_check(files, errors): else: pair_list.append(pair) paircnts = Counter(pair_list) + # filelist without symlinks should have the same size as paircnts if len(file_list) != len(paircnts): err = str(len(file_list)) + " FILES paired with " + str(len(paircnts)) errors = _add_e_to_edict('MISMATCH', err, errors) @@ -929,8 +933,10 @@ def check_file_pairing(fastq_row): """checks consistency between file pair info within sheet""" fields = next(fastq_row) fields.pop(0) + # make sure we have the aliases field if 'aliases' not in fields: return {'NO GO': 'Can only check file pairing by aliases'} + # find alias and paired_end column indexes alias_idx = fields.index("aliases") pair_idx = None if 'paired_end' in fields: @@ -946,36 +952,62 @@ def check_file_pairing(fastq_row): err = "alias missing - can't check file pairing" errors = _add_e_to_edict('unaliased', err, errors) continue + # look for multiple aliases, treat first alias as the main one, and others as secondary + aliases = [x.strip() for x in alias.split(",")] + aliases = list(filter(None, aliases)) paired_end = row[pair_idx] if pair_idx else None saw_pair = False for i, fld in enumerate(row): if fld.strip() == 'paired with': if saw_pair: err = 'single row with multiple paired_with values' - errors = _add_e_to_edict(alias, err, errors) + errors = _add_e_to_edict(aliases[0], err, errors) continue else: pfile = row[i + 1] saw_pair = True if not paired_end: err = 'missing paired_end number' - errors = _add_e_to_edict(alias, err, errors) - files[alias] = {'end': paired_end, 'pair': pfile} + errors = _add_e_to_edict(aliases[0], err, errors) + main = True + # if there are multiple aliases, create symlinks with secondary aliases in the files dictionary + for an_alias in aliases: + # if this is the first alias, put all info in the dict + if main: + files[an_alias] = {'end': paired_end, 'pair': pfile} + main = False + else: + files[an_alias] = {'symlink': aliases[0]} + if not saw_pair and paired_end: files[alias] = {'end': paired_end} for f, info in sorted(files.items()): # sorted purely for testing + # skip the aliases that are secondary + if info.get('symlink'): + continue if info.get('pair'): fp = info.get('pair') if fp not in files: err = "paired with not found %s" % fp errors = _add_e_to_edict(f, err, errors) else: - if files[fp].get('pair') and files[fp]['pair'] != f: - err = 'attempting to alter existing pair %s\t%s' % (fp, files[fp]['pair']) - errors = _add_e_to_edict(f, err, errors) - else: + # if the linked one is an symlink, go the the main one + if files[fp].get('symlink'): + fp = files[fp]['symlink'] + # Paired file might not have the mirroring pair info, FF creates that automatically + if not files[fp].get('pair'): files[fp]['pair'] = f - + # if there is pairing info, check that if linking is mutual + else: + mirrored_pair = files[fp]['pair'] + # convert the symlink to the main id + if files[mirrored_pair].get('symlink'): + mirrored_pair = files[mirrored_pair]['symlink'] + # correct the record in files + files[fp]['pair'] = mirrored_pair + if mirrored_pair != f: + err = 'attempting to alter existing pair %s\t%s' % (fp, files[fp]['pair']) + errors = _add_e_to_edict(f, err, errors) return _pairing_consistency_check(files, errors) From 565ec464c7cc797efbc8be5ed6d3e524aeb4b081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Koray=20K=C4=B1rl=C4=B1?= Date: Fri, 31 May 2019 13:59:47 -0400 Subject: [PATCH 2/6] add test --- tests/data_files/FileFastq_pairing.xlsx | Bin 0 -> 24750 bytes tests/test_import_data.py | 9 +++++++++ 2 files changed, 9 insertions(+) create mode 100644 tests/data_files/FileFastq_pairing.xlsx diff --git a/tests/data_files/FileFastq_pairing.xlsx b/tests/data_files/FileFastq_pairing.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9be2870a4fb138ea70366f0d123cc7aef5cfabe6 GIT binary patch literal 24750 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 literal 0 HcmV?d00001 diff --git a/tests/test_import_data.py b/tests/test_import_data.py index 9f24a95d..66bde3d7 100644 --- a/tests/test_import_data.py +++ b/tests/test_import_data.py @@ -1173,6 +1173,15 @@ def test_file_pair_chk_sheets_w_no_aliases_col_skipped(): assert report['NO GO'] == 'Can only check file pairing by aliases' +@pytest.mark.file_operation +def test_file_pair_chk_multiple_aliases(): + """This file contains multiple aliases and various ways to link the paired files + If the check is running properly, should not see any errors.""" + fastq_rows = imp.reader('./tests/data_files/FileFastq_pairing.xlsx', sheetname='FileFastq') + pair_errs = imp.check_file_pairing(fastq_rows) + assert not pair_errs + + @pytest.fixture def mock_profiles(): return { From e72383377c503a7bf28bdd0ff795cb726f75f304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Koray=20K=C4=B1rl=C4=B1?= Date: Fri, 31 May 2019 14:58:50 -0400 Subject: [PATCH 3/6] test cases without any pair info --- tests/data_files/FileFastq_pairing.xlsx | Bin 24750 -> 25302 bytes wranglertools/import_data.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/data_files/FileFastq_pairing.xlsx b/tests/data_files/FileFastq_pairing.xlsx index 9be2870a4fb138ea70366f0d123cc7aef5cfabe6..0c185794f4330ea6f2b9304e7edacf71b6e9ed72 100644 GIT binary patch delta 4297 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 z Date: Fri, 31 May 2019 16:32:54 -0400 Subject: [PATCH 4/6] added single sided connection --- tests/data_files/FileFastq_pairing.xlsx | Bin 25302 -> 25975 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/data_files/FileFastq_pairing.xlsx b/tests/data_files/FileFastq_pairing.xlsx index 0c185794f4330ea6f2b9304e7edacf71b6e9ed72..0b8ca88c513b64ff09176e7f596f8e36eec91ed6 100644 GIT binary patch delta 5150 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 delta 4432 zcmcJTcQ71ox5sxa!75p-Ws$5EL{{`@(M4||2!cqIDB0Cpv|X$&qDRzdt9Le}Ac*=S zNc7$#(N-_P``+KZci#KnnLGF1nfG`8dFIS#=KIWi2)S zkO2VHNg_1Yu})KpkWVb9S3})hA8_1yn5iGT31OrS9yZjvS{Rw)ZHqD6M9KUrI6aHA zm833vBsY*D=`z=REqA4V`%$~t-3O!Pd1e6&!1OjPJ7U?7sioE59^}hm3CiZ7WyPw| z&Z7v0+flMR<+;X2FXnD1;-kUOm1;19u0{2gux#yjy4YejK5pa4=21;QH@B?s%5SK^ zAH;%~Ev;0m#eOBX%h~xacNJ$)V$Oub}*cB?Uk&o=T@e}=Twf$rSkS6%2x;0 z?dcivU$E8Z+enfL(=U!f6>5pgu&|=_1VgnekLmF0Iny_o^~AI5;L|^2x`Wwn8+AvKDR^qE`wHb3@ZvgzC3mzAU9 zVG6v3oR@b_;C}u${@^uCE3l!R6#oHE*0^TO@R5vhm)OpI_uvl}zO0H5=|UZyFM^L$ zk93_r$Lx;mB<~HHZcCEeBdag<{QIj@!g1=m=OHO|Xo(edg=FQk^3cxX^>~H69Qp(J z-O8M2puq6BJ)wwG+Lt8C)7Lhqdm=R_n7-wDY0}*l?)6Z06>%(0H6Z^0KRA;56>59I}br$40^*<+ht0aw)yHf zR@l>pxybPyIWcAnQXaufF$w&DB5qI(wa2eWOjIFwrfTZmR!y|J@9;3#k(g8;469R& znScItvy_Hl8~J;Wdbc>%xXl)pm-DKxuBw}#Hi3FUYZ$VLbqKD^|C$rhwjmX0YUm`3 zi&u>t?Odjbjq%l`xHVv`#}lBL0_(sPi&-qECl*v|g)FVxx`$CbWi+OuVQ8ULfqc5P zS7#cP$x5`&e3R9#oE^#X?u}7;xm4Qw1AA`g>MU1sA=7f>+y@@?uBL^zV%BR?JY>6Y zP>Pa7!j82uR*NYQt~dpUv6p183j^^jRJ>HaKpqFF9=PNQQ@t>%PwP9F@4$Q0S z>aX7hMI!hs>+M_js&|fbPhgRk?`H;nlWo{%ZU>4s^hLz+;l^1@R~X5woE5g*h4qx# zjQf0+W?8cwYxjy?U!&OIjSWc|rY^uR(fv9ud=_Wm%R%Pl@I z1nz~wj+bgPxRs9NJ<5#9mSLDb{ruGTq(W1$M+TnCJL=`*Z}^n&{orbtM)ux}<*kQC zLNkJ{(UoJTg(=NV4fVTp_HUrypTYlFhHf>8-jQ&A{XW*OC;L{Kx7MLWW|~|+ma~ZS zsOvWzdt~C#7`yh>SKj2^q%U?;=-@O6v0XK`9W$g*w2qjzt7Wd*)SryO+SE_g=Mk}c z5fdMIIxhO~RR&djn@F)M4bkxS<~lDU0qN{%jefb2?rYi8o?b6%%bw8t>W%63Em(2( zUbgG82u11_kxSoJJS6R-Mc{dbixzU82H-F>Sdtd zhKG>E*%G5LV|rp@M%Q^4q+t_r=V>91ZzO+fB1x2L5wZtU_4Tr{NT(NMOT*4`M$(r|gqht9hg9i14(BXLCoByglQjyk^Bl>1O%0 z>sj0)@y6sl+tvnOSv)QWjo874KQ$^=GKP0Nm7+$eI9b`J z)mZf?`N$+L#jbXN$CPhAZB!vU-UB)MW>oZIc`U=m_iCDY97hzR1#U(88fykt_1Ytj z#O)l+L$*BbsJ+NAKW8nd(iq??k`W2<4CcN2J%DAJBHmHj#LL%K-&wj{ZRA#=mr`;v zH08vg@6j<9*}86!T+k_uL-4;nf8WL<*W-_wrvXFy$W)4_q1%977 z5TiO7^B{9n@+8TzY{jXY7K;}1WT~Osni=ns<+bP4sWed*KwGV3n%xjXi&Pqgmqm&z z2=SPYTc+K)0{QRu9D6t&Vx;sOPqLtkfTWN-vTf{O4bsk2P9IE{(YgzABxD zO-TR72yHDgVQ9jCmi8Q-7NYLTcMzq&Ns^iCdu1_Lnx*N!aixvii8CN)zt#MSyIt$D zD4&BEgV>T(pd!Qna}Vb@~NCq_;4!0a#^@N>~}1 z1g`5oFq5FyaKR&;H=sB3Q>FR{DIn_;Z1P>sRD%f!qq$newfI>+fid9vC*kF`&IMDV zC~Ac$Sndf()mT$Tuiu{%ap6pDdIPfdU&oCQss}F_z*avd~9X zka1>3yIE=93k#5QOUrFbjSG@Acv!^phcQwxb~A#;Mmr%*PkY$q9s%}tahR(;751D| zl+bB0w%9se*|;lWxM{vO(Et%mRH&#)V$?on$B|Y`jfn`Lya<&hChUC8_tqM*i}Yd zZur4wYJVIph9^9dy;I7xOP`#8sD~BnEL0%GX5Ikiu56O*I}Qt0A4g$*^dnu#6DJC< zCXR(jh~5R7yfbPoYiVoE_Q&Z#+sh24Ld<2fkX09MJ!kkYH6*t0PYzXr6hTz}p_$vk zB~PJ`R;ws2?Dxsf`61-bN+~Um>Fh#~TmjqNq;O%u>rbbxx}5lna1(xVX7^x0jBWYg zb@CpA2~}J;q0wOa?Io5!`fBvv?o}gkto%TzJeSL3*Pp9uGidcI&$t3$IgO?R3sW+p zoI6bE`NG+}L;dHr%(EYp5F}f+S)C%c`gFp=3^(m1#(xg%$6q$$Bhk#<3kn#haoTtB z%5TXuS({iYa+$S%q^PNM1oEuczvgv*P7Qu5s3aRp5w~lYKzHSR3w!D%Fsbz#6x^ge znRF}*036HK&0h1B#ByL-!hTbhtGjuXAL}+eC$x-h(hcP2ss~Ef-<>5;l%)Thd_fDe za~*swvXyA{T5ti!6|s=h=D_nlC4jtEe5GrWpj`pq#*79IHzke^lLQ6O+IMQjDq>+h zHzaHyqQY^4md8vBSqBB)Eb?I9QC2)`{Yo_E`Y=yqYt6)ctUdFmFY%`ET!d{Z8JAD& z(`%ssvsZ11tNBEUoSoU74UIM5@Bw4&yM_1T2-;@(@o$>LfHXs6=jWrS0c*fc2VA3O6Z`v1_x{slGtU#_P_lE8D1 zt^;{UO|MOA6GavfjBo}|f|}<=*Qe>|OTZ*uO`0p>Ip(JKw^(7yq$!IK3X<^S?<#fH zmb^f0zh1jA1i!8E@!qokVxxgJJ5LFDF-tLC1rnKI=Q0&}tWHGsPc3m{s8Ez~vv1D5 zy;snIP_G?|&WBp7kt!l!MbR((O<#w!o2Xy&RmW-RJ?BBH3z*gmR#u4;3<9*aKVnc$jemD`HZS?-v$oKaZ3j390K~vefuS0Gge5RD= z*lAVQjF`7y5pVh+Bw3vH#g@5q&y|Sk(ba;j2b|3IpO4I`vV#}zoFh8$$+qimj+r`< z_KFD$G28k9pno@rR>PqGvZAQBF$8`{qO#@X`0u9i@4oRr;vAZ!Ws6|{#}^p@VEs?_ z=P8|px8-O5$3p=Cu>2DbN$Rylas1gwAOK+g_uUA?Kk=$ZNf0|ZGL&V~eLJozXIB3P F{|2PJR`~z` From 1fd3fadcad641c23c3871f5de3afa8719fa5aa47 Mon Sep 17 00:00:00 2001 From: aschroed Date: Fri, 31 May 2019 17:32:30 -0400 Subject: [PATCH 5/6] adding another type of pairing that does not work when one sided --- tests/data_files/FileFastq_pairing.xlsx | Bin 25975 -> 10210 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/data_files/FileFastq_pairing.xlsx b/tests/data_files/FileFastq_pairing.xlsx index 0b8ca88c513b64ff09176e7f596f8e36eec91ed6..da3e69fda03c203d5c87c388b916ad6a24c11fc4 100644 GIT binary patch delta 7774 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 Date: Fri, 31 May 2019 18:51:40 -0400 Subject: [PATCH 6/6] convert links to first alias, add symlink for rows with only paired_end --- wranglertools/import_data.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/wranglertools/import_data.py b/wranglertools/import_data.py index 338c8034..6d871330 100755 --- a/wranglertools/import_data.py +++ b/wranglertools/import_data.py @@ -978,9 +978,16 @@ def check_file_pairing(fastq_row): main = False else: files[an_alias] = {'symlink': aliases[0]} - + # If there are rows without the pair link (expecting link in the other file, FF mirrors the links after post) if not saw_pair and paired_end: - files[aliases[0]] = {'end': paired_end} + main = True + for an_alias in aliases: + # if this is the first alias, put all info in the dict + if main: + files[an_alias] = {'end': paired_end} + main = False + else: + files[an_alias] = {'symlink': aliases[0]} for f, info in sorted(files.items()): # sorted purely for testing # skip the aliases that are secondary if info.get('symlink'): @@ -994,6 +1001,7 @@ def check_file_pairing(fastq_row): # if the linked one is an symlink, go the the main one if files[fp].get('symlink'): fp = files[fp]['symlink'] + files[f]['pair'] = fp # Paired file might not have the mirroring pair info, FF creates that automatically if not files[fp].get('pair'): files[fp]['pair'] = f