Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

SoilID: Fix component-group selection being sorted alphabetically instead of by cond_prob

オープン
#398 コメント 1 件 リアクション 0 件 担当者 1 名 GitHub で見る

@johannesparty がすでに取り組んでいます。

2026年9月24日 から。

評価

この issue はまだ評価されていません。

説明

bug

Summary

process_distance_scores sorts component-instance rows by descending cond_prob, but then groups them with sort=True. This reorders the groups alphabetically by compname before selecting the first 12 groups, so the function can discard high-probability component groups and retain lower-probability groups solely because their names sort earlier.

Location

soil_id/utils.py, in process_distance_scores:

mucompdata_pd = mucompdata_pd.sort_values(
    ["cond_prob", comp_name_col], ascending=[False, True]
)

mucompdata_comp_grps = [
    g for _, g in mucompdata_pd.groupby([comp_name_col], sort=True)
]
mucompdata_comp_grps = mucompdata_comp_grps[: min(12, len(mucompdata_comp_grps))]

Expected behavior

The selected 12 component groups should be the groups with the highest cond_prob values, preserving the ranking established before grouping.

Actual behavior

sort=True orders the groups by the component name key. Consequently, mucompdata_comp_grps[:12] selects the first 12 groups alphabetically rather than the 12 highest-ranked groups.

Proposed fix

Use sort=False so pandas yields groups in first-appearance order, which follows the preceding cond_prob descending sort:

mucompdata_comp_grps = [
    g for _, g in mucompdata_pd.groupby([comp_name_col], sort=False)
]

Add or update regression tests to verify that the retained groups are the highest-probability component groups, not the alphabetically first groups.

Related issue in the same block

The loop below reassigns and modifies only a local group variable, so its distance sort and min_dist assignment are not reflected in mucompdata_comp_grps or the final concatenated DataFrame:

for group in mucompdata_comp_grps:
    group = group.sort_values(distance_col).reset_index(drop=True)
    group["min_dist"] = group[distance_col].iloc[0]

The implementation should also preserve those intended modifications, for example by assigning the transformed groups back into the list. This should be covered by tests or handled as part of the fix if it is within scope.

@johannesparty regarding our conversation today, we originally truncated the number of soil series (compname) to 12 in the old app due to display issues. It probably makes sense to remove this constraint because, in the US case, many 1000m buffers can contain more than 12 soils.

主要言語
Python
スター
2
フォーク
3
平均マージ
16時間 14分
マージ済み PR(30日)
1

環境構築

  • Dockerfile または Docker Compose ファイルあり
  • プルリクエストのテンプレートなし
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

techmatters/soil-id-algorithm のほかの issue

techmatters/soil-id-algorithm の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。