--- a +++ b/tests/diffexp/test_meta.py @@ -0,0 +1,939 @@ +import unittest + +import numpy as np +import pandas as pd +import patsy + +from inmoose.deseq2 import DESeq, makeExampleDESeqDataSet +from inmoose.diffexp import DEResults, meta_de +from inmoose.edgepy import ( + DGEList, + exactTest, + glmLRT, + glmQLFTest, +) +from inmoose.utils import Factor + + +class Test(unittest.TestCase): + def test_meta_de(self): + # test contrasts + dds = makeExampleDESeqDataSet(n=200, m=12, seed=42) + dds.obs["condition"] = Factor(np.repeat([1, 2, 3], 4)) + dds.obs["group"] = Factor(np.repeat([[1, 2]], 6, axis=0).flatten()) + dds.counts()[:, 0] = np.repeat([100, 200, 800], 4) + + dds.design = "~ group + condition" + + # DE with deseq + dds = DESeq(dds) + deseq_res = dds.results() + + # DE with edgepy + d = DGEList(counts=dds.X.T, group=dds.obs["group"]) + d.design = patsy.dmatrix("~ group + condition", data=dds.obs) + d = d.estimateGLMCommonDisp() + + # DE with edgepy (LRT) + edgepy_lrt_res = glmLRT(d.glmFit()) + + # DE with edgepy (QL FTest) + edgepy_ql_res = glmQLFTest(d.glmQLFit()) + + # DE with edgepy (exactTest) + edgepy_et_res = exactTest(d) + + # meta-analysis + des = [deseq_res, edgepy_lrt_res, edgepy_ql_res, edgepy_et_res] + res = meta_de(des) + + # combined logFC and confidence intervals are controlled against metafor + # adjusted p-values have no external control, and are tested for non-regression + ref = pd.DataFrame( + { + "combined logFC (CI_L)": [ + 0.6660151964096146, + -2.6386163106710177, + -2.4294256191695074, + -0.6488512767501585, + -2.91706443340857, + -3.521554387539502, + -0.013715570856962955, + -2.44433271322974, + -3.0287062069792716, + -1.2632361321964904, + -0.4565657144319961, + -1.050526185309593, + -2.898567141180949, + -0.5981094405745551, + 0.542876997367387, + -2.5842836601101418, + -1.4881728468777093, + 0.2816630199971988, + -1.621914242625586, + -2.175531983553664, + -2.426621491203676, + -2.2862239530712416, + 0.6061652115075944, + -1.7988866511533614, + -1.3911906679104926, + -1.6781046771044665, + -1.5607619003814168, + -2.7313354443639586, + -1.819587410152225, + -1.8461737799605058, + -2.396354475817337, + -4.150733072719027, + -0.866612921109145, + -1.6209230508004846, + -1.3932528679807576, + 0.06535739301240662, + -0.8614695037171913, + -0.8949387070851511, + -0.1885094288572462, + -2.32066999356063, + -1.077924632221578, + 0.37794895248328375, + -0.5536367454374285, + -0.21445770439079448, + -1.037823547101704, + -2.0371872963903646, + -2.4346661814814206, + -0.4321573992340394, + -0.2907332240528021, + -0.8539476086445773, + -1.234310858262552, + -2.7156517079926124, + -2.8582388336368183, + -1.2745838405371699, + -2.231898985996819, + -1.8279970283385685, + -4.480837497725425, + -0.8011169122478685, + -1.9799835053398835, + -1.0525039883843812, + -0.11662674646446902, + -2.544956075527203, + -1.064065093263388, + -0.8655309481531789, + -3.13762536071928, + -0.10540785386966345, + -2.518975904098701, + -2.0158475722803484, + -1.6728430608728435, + -0.5029904144572839, + -2.7112359453355257, + -1.608063992292449, + -0.12750004447413454, + -0.8225585773011765, + -1.772440064055683, + -0.9260166010678244, + -2.313239524972868, + -2.2068757891973796, + -1.786675849820731, + -1.0262766837558557, + -1.642001176385648, + 0.2736409499254513, + -1.6755199304028023, + -2.4188282013360873, + -1.1577393065221067, + -2.243289671608783, + -1.5618172554069623, + -2.954474402652569, + -1.4590021786483582, + -2.371121434638752, + 0.4108524092617336, + 0.7039471918836333, + -1.773048451498628, + -0.3511337912563779, + -2.29667638756921, + -1.4953656452894795, + 0.4109470746831836, + -1.620862282034234, + -4.385686353557798, + -1.264780589472257, + -1.0905046361675372, + -1.0403768171893486, + -1.9921809567227817, + -1.0215481046788315, + -1.6201315863839372, + -2.3497397485281812, + -0.9990128404438292, + -5.336487545760831, + -1.0623709246799449, + -0.4845713539981751, + -1.1092279063453114, + -3.022406150569415, + -0.7788181579284017, + -1.7145383153607154, + -1.3029315696858457, + -3.635458688461912, + -1.7449955806992654, + -0.37369875378310724, + -1.0063648668773697, + -3.121738602010506, + -0.9469631938814649, + -1.106923489229556, + -1.497550281217571, + -2.515290508312053, + -0.9689865181728943, + -0.04387428241650848, + -0.37155469916385075, + 0.2678112004933926, + -2.385590578613881, + -0.9158592706903643, + -1.8301813463727143, + 0.07460142020882277, + -1.8353686638038753, + -3.390945408814847, + 0.02301767559765966, + -1.9324366910144262, + -0.678599506709188, + -2.309748259623439, + -1.2948255656204237, + 0.35319753181102975, + -1.0127834932344837, + -2.176779495718015, + -1.5315051529282733, + 0.6836811923317061, + -2.23977305266835, + -1.891197146518215, + -4.784144827741974, + -1.8037230037715726, + -1.9295223989664199, + -0.7340126641402587, + -1.8476750640373827, + -2.3842945946277867, + -1.2424865760658015, + -1.245280551728335, + -1.215932212899843, + -1.9632263729514479, + -1.801494956920078, + -0.2662585394490714, + -1.5599833295880043, + -4.881835644107957, + -3.7493825881515503, + -2.67304198399075, + -1.536839751850891, + -2.19184090843123, + -1.94974510590935, + -0.12555539343831423, + -2.7007627007566892, + -1.4724196092118091, + -1.1455256591450884, + -3.115445854154167, + -1.0084793313977904, + -0.3940975540315449, + 0.2856517318181431, + -1.9711379193519085, + -3.7499696990142724, + -2.2126112079601503, + -0.8543495093303507, + -1.9283857091263117, + -2.264787656888103, + -3.7275147424298174, + -0.554008090864221, + -2.474562426499207, + -0.9685815584803881, + -0.989172560751711, + -0.7884366564329295, + -1.6045380562019598, + -0.7654273118624542, + -4.289165687959561, + -3.5234762679288174, + -1.3877715238168173, + -0.4356219067620921, + -0.4168421506416269, + 0.1318434023527142, + -0.020915214579250163, + -0.9953178311101134, + -0.09157891037095012, + -0.43160817845695565, + -2.8193999937632803, + -0.9965176866672529, + -1.3939413540076844, + ], + "combined logFC (CI_R)": [ + 3.354872058019537, + -0.34054646318095894, + 0.35083068561892405, + 1.2758758057915247, + 0.987419819649228, + -0.43883016404534936, + 2.1355572315208398, + 0.5080118956718125, + -0.534349148975036, + 3.472246864111826, + 1.536101548350488, + 0.8515220599803147, + -0.8176581829870475, + 1.447354013999258, + 2.6303737680491617, + -0.036105150077430315, + 0.49647965833900265, + 3.0187769587400037, + 0.38285920569357956, + -0.02243840495832705, + 0.7756234225826169, + -0.03228481757257251, + 2.56069239477196, + 0.42803292672457405, + 0.6664263638908428, + 1.0336396693493475, + 0.4703412064756911, + -0.7449809664746245, + 1.2827268308386777, + 0.22347520052144698, + -0.42579173099623957, + -1.0378149913948602, + 1.474202085650837, + 0.9832345898694661, + 0.5979839574608838, + 1.9537523108751609, + 1.4094483690114512, + 1.3045573581800696, + 2.076718012172452, + -0.28070340978151154, + 0.9447694039293841, + 2.3437117766301405, + 1.8183642690425976, + 1.8861062700963296, + 1.0774997747736272, + 0.014536046442994888, + -0.3734987169876831, + 1.6657293834968137, + 1.7371529269569606, + 1.6934459447290249, + 0.7288005882108818, + -0.4582096934338016, + 0.47222573634692555, + 0.7525448340628036, + -0.05053394143011802, + 0.666381149024404, + -0.3611533539173757, + 1.1327677959957496, + 1.9093349096061205, + 1.6224956915201059, + 2.8092931584641434, + -0.4675924133882219, + 0.9556382394675933, + 1.1537936002185782, + 0.4719726272864868, + 1.8940426428930035, + -0.370165159637702, + 0.5148047144587685, + 0.37474384949352624, + 3.582528610121325, + 1.266931510128373, + 2.2158467226115492, + 3.071101744852342, + 1.1813346784457122, + 0.18990362116929815, + 1.1106002066088052, + -0.12768912119813525, + -0.1844407501803229, + 0.25835875418293686, + 1.1774869629070284, + 0.3507702603130787, + 2.7960199923829494, + 0.6503959195118854, + -0.02699953769695007, + 1.5711833206054435, + 0.4520306257582095, + 0.5672425711692818, + 0.766116704264352, + 0.5643657171094311, + -0.27795639060702126, + 2.366747950705241, + 2.77534421368124, + 0.41134113503556835, + 1.969588958548259, + 1.2844090294384958, + 0.9380549081602017, + 3.274251586886894, + 0.6590123200119615, + 0.750549465611706, + 2.018855699691608, + 1.0562073319536494, + 0.950802281270808, + 0.5938590357378501, + 1.0494322805270517, + 1.5076695060610152, + 0.9887948817674262, + 4.264921321686238, + 1.0328063734921642, + 0.8621704647652939, + 4.993500038553787, + 0.9499110359553256, + -0.8997966342353689, + 1.4795464281564392, + 0.874904298760736, + 0.7724717737068273, + 0.8436676453709686, + 0.38875016354958924, + 1.6996550100286307, + 1.0180844678588887, + -0.8432083259898191, + 1.814332444242015, + 0.89595219174541, + 0.47768062281587376, + -0.6122504151106485, + 0.9676127377450849, + 1.9942096848086273, + 2.5322997447126463, + 2.6138264680652976, + 0.06389822388153621, + 1.3473614017305102, + 0.2707537486533764, + 4.160256742758929, + 0.3225311846941912, + -0.916644886148936, + 2.691811189135298, + 0.5218401717051796, + 1.2741589329453422, + 0.12126997384548743, + 0.5949804141792554, + 2.316820003047362, + 1.0110795928142386, + 0.6586624521693996, + 3.422985512826824, + 2.7421890347062328, + 1.5513174592326577, + 0.25964239369840003, + 0.20181520548352871, + 0.9264018383524469, + 0.015928832730718212, + 1.28513806241418, + 0.7355117760711144, + 0.8107859106491883, + 2.436102208526566, + 1.0699877757552179, + 0.8751364190659427, + 0.05081803315723321, + 0.22775593873046085, + 1.6470249080421566, + 1.8052433343747047, + -0.6862411763247649, + 0.7657421312167374, + -0.48935736430145216, + 0.3473665242861057, + 0.9672738541238843, + 0.37303455240566996, + 2.348076008955688, + 0.22513005048675083, + 0.6067512405141617, + 0.8955766331258332, + -0.6949808575425094, + 1.313934433369968, + 1.6405906148006886, + 2.68193589852294, + 0.7671934502323494, + 2.818888058186232, + -0.18521862612875628, + 1.0476709254412027, + 0.5922832182532727, + -0.08490117418915877, + -0.7311606079226332, + 1.3351236101816348, + -0.4398791608381776, + 1.151171699680487, + 1.743948784448906, + 1.2591808745192232, + 0.4065967359112883, + 1.2607500621625511, + -1.182757686341431, + -0.9549093767155574, + 0.5752653648553867, + 1.4776432917947777, + 1.8303526779984838, + 2.45286628466279, + 1.9298533345564415, + 1.351808248409464, + 2.2091228037508985, + 1.5322246498088472, + -0.5191787229012983, + 1.0055531958855577, + 0.8993415317328557, + ], + "combined logFC": [ + 2.010443627214576, + -1.4895813869259882, + -1.0392974667752917, + 0.31351226452068304, + -0.964822306879671, + -1.9801922757924255, + 1.0609208303319384, + -0.9681604087789637, + -1.7815276779771538, + 1.1045053659576676, + 0.539767916959246, + -0.09950206266463923, + -1.8581126620839983, + 0.4246222867123514, + 1.5866253827082744, + -1.3101944050937862, + -0.4958465942693533, + 1.6502199893686014, + -0.6195275184660032, + -1.0989851942559956, + -0.8254990343105295, + -1.159254385321907, + 1.5834288031397772, + -0.6854268622143936, + -0.36238215200982493, + -0.32223250387755953, + -0.5452103469528629, + -1.7381582054192914, + -0.2684302896567735, + -0.8113492897195295, + -1.4110731034067885, + -2.5942740320569437, + 0.303794582270846, + -0.3188442304655092, + -0.39763445525993685, + 1.0095548519437838, + 0.27398943264712994, + 0.2048093255474592, + 0.944104291657603, + -1.3006867016710706, + -0.06657761414609703, + 1.3608303645567121, + 0.6323637618025846, + 0.8358242828527676, + 0.019838113835961624, + -1.0113256249736848, + -1.4040824492345518, + 0.6167859921313871, + 0.7232098514520792, + 0.41974916804222373, + -0.252755135025835, + -1.586930700713207, + -1.1930065486449464, + -0.26101950323718315, + -1.1412164637134685, + -0.5808079396570822, + -2.4209954258214, + 0.1658254418739405, + -0.03532429786688163, + 0.2849958515678623, + 1.3463332059998372, + -1.5062742444577124, + -0.05421342689789732, + 0.14413132603269962, + -1.3328263667163966, + 0.89431739451167, + -1.4445705318682016, + -0.7505214289107899, + -0.6490496056896586, + 1.5397690978320207, + -0.7221522176035764, + 0.30389136515955006, + 1.4718008501891038, + 0.1793880505722678, + -0.7912682214431924, + 0.0922918027704904, + -1.2204643230855017, + -1.1956582696888511, + -0.764158547818897, + 0.07560513957558634, + -0.6456154580362846, + 1.5348304711542002, + -0.5125620054454585, + -1.2229138695165187, + 0.20672200704166846, + -0.8956295229252867, + -0.4972873421188403, + -1.0941788491941085, + -0.44731823076946353, + -1.3245389126228866, + 1.3888001799834873, + 1.7396457027824366, + -0.6808536582315298, + 0.8092275836459406, + -0.5061336790653573, + -0.27865536856463896, + 1.842599330785039, + -0.4809249810111363, + -1.817568443973046, + 0.3770375551096756, + -0.017148652106944023, + -0.044787267959270266, + -0.6991609604924658, + 0.01394208792411003, + -0.056231040161460966, + -0.6804724333803774, + 1.6329542406212045, + -2.1518405861343335, + -0.10010022995732543, + 2.2544643422778057, + -0.07965843519499288, + -1.961101392402392, + 0.3503641351140188, + -0.41981700829998975, + -0.26522989798950924, + -1.3958955215454716, + -0.6781227085748381, + 0.6629781281227617, + 0.005859800490759473, + -1.9824734640001627, + 0.43368462518027506, + -0.10548564874207311, + -0.5099348292008486, + -1.5637704617113508, + -0.0006868902139046985, + 0.9751677011960594, + 1.0803725227743979, + 1.440818834279345, + -1.1608461773661722, + 0.21575106552007295, + -0.779713798859669, + 2.117429081483876, + -0.7564187395548421, + -2.1537951474818917, + 1.357414432366479, + -0.7052982596546232, + 0.29777971311807716, + -1.094239142888976, + -0.3499225757205842, + 1.3350087674291957, + -0.0008519502101226178, + -0.7590585217743078, + 0.9457401799492752, + 1.7129351135189694, + -0.3442277967178461, + -0.8157773764099074, + -2.2911648111292227, + -0.43866058270956276, + -0.9567967831178508, + 0.2755626991369606, + -0.5560816439831341, + -0.7867543419892992, + 0.5968078162303823, + -0.08764638798655852, + -0.17039789691695012, + -0.9562041698971073, + -0.7868695090948086, + 0.6903831842965426, + 0.12263000239335031, + -2.7840384102163607, + -1.4918202284674065, + -1.5811996741461012, + -0.5947366137823926, + -0.6122835271536728, + -0.78835527675184, + 1.111260307758687, + -1.2378163251349692, + -0.4328341843488237, + -0.12497451300962753, + -1.9052133558483382, + 0.15272755098608884, + 0.6232465303845719, + 1.4837938151705414, + -0.6019722345597796, + -0.4655408204140199, + -1.1989149170444533, + 0.09666070805542601, + -0.6680512454365195, + -1.1748444155386308, + -2.2293376751762253, + 0.390557759658707, + -1.4572207936686923, + 0.09129507060004953, + 0.37738811184859755, + 0.23537210904314693, + -0.5989706601453357, + 0.2476613751500485, + -2.735961687150496, + -2.2391928223221873, + -0.4062530794807153, + 0.5210106925163428, + 0.7067552636784284, + 1.292354843507752, + 0.9544690599885957, + 0.1782452086496753, + 1.0587719466899743, + 0.5503082356759458, + -1.6692893583322892, + 0.00451775460915238, + -0.24729991113741429, + ], + "adjusted combined pval": [ + 0.002710867577467824, + 0.5286922590236601, + 0.3635268253933128, + 0.9999997373138294, + 0.9999997373138294, + 0.40841535987809763, + 0.8552303143709908, + 0.45397729003343607, + 0.249091508520245, + 0.2061819814543404, + 0.9999997373138294, + 0.9999997373138294, + 0.249091508520245, + 0.9999997373138294, + 0.40841535987809763, + 0.7200961165080368, + 0.9999997373138294, + 0.5115953505542589, + 0.9999997373138294, + 0.845756654704669, + 0.5676481671711865, + 0.8395655047552425, + 0.36422621419559664, + 0.9999997373138294, + 0.9999997373138294, + 0.9239752719474906, + 0.9999997373138294, + 0.2321774685303417, + 0.5115953505542589, + 0.9239752719474906, + 0.5070330046729763, + 0.09174034333551025, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.7200961165080368, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.6847287526005329, + 0.9999997373138294, + 0.5442138166006407, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.9658912215110148, + 0.5892132685871182, + 0.9999997373138294, + 0.9999997373138294, + 0.8063836512383536, + 0.9999997373138294, + 0.3635268253933128, + 0.878906678789298, + 0.9999997373138294, + 0.845756654704669, + 0.9999997373138294, + 0.02353676743785122, + 0.9999997373138294, + 0.4372483768805375, + 0.6899654596418524, + 0.9239752719474906, + 0.5115953505542589, + 0.9999997373138294, + 0.9999997373138294, + 0.19158373821572414, + 0.9999997373138294, + 0.6681718367617152, + 0.7139678179747181, + 0.9999997373138294, + 0.14361191965472642, + 0.5626777439383062, + 0.9999997373138294, + 0.5115953505542589, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.8395655047552425, + 0.6847287526005329, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.6847287526005329, + 0.9999997373138294, + 0.45397729003343607, + 0.9999997373138294, + 0.5115953505542589, + 0.9999997373138294, + 0.19266295410826276, + 0.9999997373138294, + 0.6847287526005329, + 0.5274203426647385, + 0.33573852446575575, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.5115953505542589, + 0.9999997373138294, + 0.01737015553722674, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.845756654704669, + 0.5306621528598132, + 0.13720519336046125, + 0.014432955706249317, + 0.9999997373138294, + 0.249091508520245, + 0.9999997373138294, + 0.29234617948435815, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.18171356404052635, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.249091508520245, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.249091508520245, + 0.9999997373138294, + 0.9550708068178158, + 0.45143711607921805, + 0.6761159592036801, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.14764567543600687, + 0.8655808208804949, + 0.13720519336046125, + 0.7952134754914685, + 0.9999997373138294, + 0.9999997373138294, + 0.4372483768805375, + 0.9999997373138294, + 0.5442138166006407, + 0.9999997373138294, + 0.7200961165080368, + 0.9999997373138294, + 0.4372483768805375, + 0.9999997373138294, + 0.9999997373138294, + 0.04693144675687698, + 0.8395655047552425, + 0.8395655047552425, + 0.9999997373138294, + 0.8395655047552425, + 0.6210330306914035, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.9681522788336918, + 0.9999997373138294, + 0.9999997373138294, + 0.7223703085727059, + 0.02353676743785122, + 0.19266295410826276, + 0.4993454158594806, + 0.9999997373138294, + 0.878906678789298, + 0.5115953505542589, + 0.9999997373138294, + 0.29234617948435815, + 0.9999997373138294, + 0.9999997373138294, + 0.19266295410826276, + 0.9999997373138294, + 0.9999997373138294, + 0.7200961165080368, + 0.9999997373138294, + 0.03371060943211578, + 0.7200961165080368, + 0.9999997373138294, + 0.7200961165080368, + 0.9550708068178158, + 0.18171356404052635, + 0.9999997373138294, + 0.5306621528598132, + 0.9999997373138294, + 0.7200961165080368, + 0.9999997373138294, + 0.9850862188123334, + 0.9999997373138294, + 0.04693144675687698, + 0.19266295410826276, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.8280732314616722, + 0.9327511393735692, + 0.9999997373138294, + 0.9999997373138294, + 0.9999997373138294, + 0.5115953505542589, + 0.9999997373138294, + 0.9999997373138294, + ], + }, + index=[f"gene{i}" for i in range(200)], + ) + pd.testing.assert_frame_equal(res, ref, rtol=1e-4) + + def test_meta_de_nan(self): + """check robustness of meta_de to NaN values""" + idx = ["gene1", "gene2", "gene3"] + res1 = DEResults( + { + "log2FoldChange": [1.0, np.nan, 3.0], + "lfcSE": [0.5, np.nan, 0.5], + "pvalue": [0.1, np.nan, 0.2], + }, + index=idx, + ) + res2 = DEResults( + { + "log2FoldChange": [2.0, 3.0, 4.0], + "lfcSE": [0.5, 0.5, 0.5], + "pvalue": [0.1, 0.15, 0.2], + }, + index=idx, + ) + res3 = DEResults( + { + "log2FoldChange": [3.0, np.nan, 5.0], + "lfcSE": [0.5, np.nan, 0.5], + "pvalue": [0.2, np.nan, 0.1], + }, + index=idx, + ) + meta1 = meta_de([res1, res2, res3]) + meta2 = meta_de([res1, res3]) + ref1 = pd.DataFrame( + { + "combined logFC (CI_L)": [ + 0.8684142716330685, + np.nan, + 2.868414271633068, + ], + "combined logFC (CI_R)": [ + 3.1315857283669315, + np.nan, + 5.131585728366931, + ], + "combined logFC": [2, np.nan, 4], + "adjusted combined pval": [ + 0.13058835750961412, + 0.15, + 0.13058835750961412, + ], + }, + index=idx, + ) + ref2 = pd.DataFrame( + { + "combined logFC (CI_L)": [ + 0.0400360524639638, + np.nan, + 2.0400360524639636, + ], + "combined logFC (CI_R)": [ + 3.9599639475360364, + np.nan, + 5.959963947536036, + ], + "combined logFC": [2, np.nan, 4], + "adjusted combined pval": [ + 0.09824046010856295, + np.nan, + 0.09824046010856295, + ], + }, + index=idx, + ) + pd.testing.assert_frame_equal(meta1, ref1) + pd.testing.assert_frame_equal(meta2, ref2)