California’s primary results are somewhat unique in the country in that all candidates run against each other, with the top two emerging regardless of party affiliation. In other words, the primary results mimic a general election. Of course, they don’t perfectly mimic a general election, because turnout is relatively low, but they still offer something of a “dry run” for the general (akin to what I’ve long observed with respect to Washington state).

If we add in the fact that California is unusually competitive this year – one in five of the Republican seats that RealClearPolitics rates as leaning toward Democrats or as a tossup is located in the Golden State – it isn’t surprising that we have seen a higher number of takes on Tuesday’s outcome than usual. Moreover, these are contradictory, with some suggesting that the results were good news for Democrats, while others suggest the opposite. Sorting through them, I concluded that the primary was a mixed bag for Democrats. Of course – and this bears repeating multiple times – all of these takes are somewhat premature, as the state is still counting ballots. But as MSNBC’s Steve Kornacki observed, there doesn’t tend to be a large shift in vote shares after this point, so we can probably make at least some useful conclusions.

Perhaps the simplest take is the most common one we heard on election night: That outside of California’s 49th Congressional District, Republicans actually won a majority of the two-party vote in all of the competitive districts. The response to this is fairly straightforward: Although there is a nice correlation between vote share in the primary and in the general election, and although we might expect better from Democrats in a year when their base’s enthusiasm is off the charts, California Democrats historically tend to overperform their primary results. We can see this in the following plot of Democratic primary vs. general election vote share from 2012 to 2016. Anything above the line shows a district where Democratic vote totals in the general election exceeded their performance in the primary election; most of the dots are above the line.

Kornacki offers a more sophisticated take by noting the similarity between the primary vote shares in key districts and the final vote totals in 2016. If these particular districts were to move between the primary election and general election the same way that they did then, the Democrats would only pick up two seats: the 49th District and the 10th. This would be a disappointing night for them and probably would be inconsistent with them winning control of the House of Representatives.

Of course, there are responses to this. The most common one is that the 2016 primary has to be placed in the context of a hyper-competitive Democratic presidential race between Hillary Clinton and Bernie Sanders. In other words, comparing the primary for that year to the general might not produce a good comparison for other years, since the primary vote totals were potentially inflated.

Perhaps. Yet we should recall that one hypothetical electoral reality being posited involves Democrats being ultra-energized this year. So, if the response to the 2016 analogy is that that year’s primary took place in a hyper-energized environment, and we believe that the 2018 primary is taking place in a similar one, then ought we not expect similarly small shifts in these races?

The Crystal Ball’s Kyle Kondik offers a somewhat different analysis by comparing Democratic performance in 2018 to the average performance from 2012 to 2016. He notes that Democrats overperformed this average by as much as 12 points in some of these districts, which would again seem consistent with a very good Democratic night.

This is also a credible take, but again, there are responses. First, it isn’t at all clear why we should look at the average outcome from 2012 to 2016. Everyone, regardless of partisan stripe, agrees that these districts have moved toward Democrats since 2012, and almost everyone agrees that this is not shaping up to be a year like 2014 for Republicans. So why would we use information from this? Moreover, if we are going to compare results to 2012-2016, then we should also use the average shift from primary-to-general over these three election years as our baseline. Applying this shift actually results in a three-seat gain for Democrats. Again, this would be a good result for Democrats, but is not the sweep for which they are hoping.

So how should we evaluate these results? A better way is to build on what I did in 2014 by making a rough model of these elections. To re-emphasize, these are taken far too literally by most analysts, and are better thought of as loose approximations for reality. They can nevertheless be useful for giving us an idea of how things are playing out. The data consist of all of the elections from 2012 to 2016 where the parties had non-write-in candidates in both the primary and general election.

The obvious point of comparison is the primary vote share, and unsurprisingly there is a significant relationship between these outcomes. But there is one other important factor to consider: the number of Republican and Democratic candidates running in primaries. There are a couple of reasons why this could matter, but the most straightforward one is this: Additional candidates draw on their respective bases of support for primaries. As they increase turnout in the primary election, they do so by drawing from the pool of general election voters, resulting in smaller increases in vote share for the general election. Indeed, there’s a significant relationship between the net number of candidates running in primaries and the eventual outcome.

If we put this all together, we end up with a pretty good model. As noted above, it predicted the 2014 outcomes reasonably well. For this year? It suggests that all of the currently Democratic seats are safe. Republicans seem likely to lose the 49th District (where Darrell Issa is retiring), perhaps by a significant margin. But we should expect very tight races in the remaining seats, with the 39th (Ed Royce, pictured) and 48th districts (Dana Rohrabacher) in particular looking vulnerable. (Jeff Denham actually looks surprisingly strong in the 10th District, given the large number of Democrats running in the primary there.)

So this ultimately looks like a mixed bag for Democrats. They have succeeded in making some districts competitive that didn’t look at all competitive a few years ago, which reflects the deterioration of the GOP’s standing in suburbs during the Trump era. But except for the 49th, these races do not look like slam dunks for the Democrats, which is what they perhaps should be in the large wave environment some are expecting. Overall, Democrats can come away from Tuesday night knowing that they are still in the hunt for control of the House – but Republicans can probably walk away with the same feeling.