Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Region sorting is non canonical for (at least) Schaefer parcellations #48

Open
gkiar opened this issue Oct 25, 2022 · 5 comments
Open

Comments

@gkiar
Copy link

gkiar commented Oct 25, 2022

When looking at the Schaefer 200 parcellation here in neuroparc, and comparing it to the canonical parcellation produced by Thomas Yeo's lab, I noticed that the regions are inconsistently sorted. For example, note the intensity values in the screenshot (shown in the header bar; first number is neuroparc label and second number is YeoLab label), and the general colour inconsistency (additive map is used, meaning that regions that have the same value in both parcellations are perfectly gray; none other than the background).

image

When opening it in a Python shell, I created a mapping from one to the other — there is a 1-1 correspondence, so all regions are the same size, just differently numbered. I've attached a plot to visualize this mapping, below. When looking at the metadata of the neuroparc copy, the label name is null for all regions, meaning that I cannot reverse-engineer network membership from this metadata, either.

image

My questions are as follows:

  1. How come the regions are sorted differently? Is this intentional, or an error?
  2. How come any processing happened to the canonical file? Is it documented in some way, and is it easily reversible?
  3. Does this issue affect (or was this processing applied to) any other parcellations? While I only investigated this version because I stumbled across it, it limits my enthusiasm to use the other enclosed parcellations here, as I feel I would first need to find the original source to verify it, and at that point, neuroparc isn't providing any more convenience.
@gkiar
Copy link
Author

gkiar commented Oct 31, 2022

Here is the look-up table from the yeo parcellation labels to the neuroparc parcellation labels.

{"0.0": 0.0, "1.0": 3.0, "2.0": 5.0, "3.0": 6.0, "4.0": 9.0, "5.0": 12.0, "6.0": 14.0, "7.0": 15.0, "8.0": 17.0, "9.0": 19.0, "10.0": 23.0, "11.0": 24.0, "12.0": 27.0, "13.0": 4.0, "14.0": 10.0, "15.0": 11.0, "16.0": 13.0, "17.0": 16.0, "18.0": 18.0, "19.0": 21.0, "20.0": 22.0, "21.0": 25.0, "22.0": 26.0, "23.0": 29.0, "24.0": 30.0, "25.0": 49.0, "26.0": 50.0, "27.0": 51.0, "28.0": 52.0, "29.0": 53.0, "30.0": 54.0, "31.0": 55.0, "32.0": 56.0, "33.0": 57.0, "34.0": 59.0, "35.0": 60.0, "36.0": 61.0, "37.0": 62.0, "38.0": 63.0, "39.0": 64.0, "40.0": 65.0, "41.0": 66.0, "42.0": 67.0, "43.0": 68.0, "44.0": 32.0, "45.0": 33.0, "46.0": 34.0, "47.0": 35.0, "48.0": 36.0, "49.0": 37.0, "50.0": 38.0, "51.0": 39.0, "52.0": 40.0, "53.0": 41.0, "54.0": 42.0, "55.0": 43.0, "56.0": 44.0, "57.0": 45.0, "58.0": 47.0, "59.0": 48.0, "60.0": 69.0, "61.0": 1.0, "62.0": 70.0, "63.0": 8.0, "64.0": 72.0, "65.0": 28.0, "66.0": 73.0, "67.0": 31.0, "68.0": 75.0, "69.0": 78.0, "70.0": 80.0, "71.0": 81.0, "72.0": 82.0, "73.0": 94.0, "74.0": 46.0, "75.0": 74.0, "76.0": 76.0, "77.0": 79.0, "78.0": 58.0, "79.0": 83.0, "80.0": 84.0, "81.0": 85.0, "82.0": 86.0, "83.0": 87.0, "84.0": 88.0, "85.0": 91.0, "86.0": 92.0, "87.0": 93.0, "88.0": 95.0, "89.0": 98.0, "90.0": 100.0, "91.0": 101.0, "92.0": 102.0, "93.0": 104.0, "94.0": 105.0, "95.0": 109.0, "96.0": 111.0, "97.0": 112.0, "98.0": 108.0, "99.0": 110.0, "100.0": 113.0, "101.0": 137.0, "102.0": 106.0, "103.0": 142.0, "104.0": 143.0, "105.0": 99.0, "106.0": 103.0, "107.0": 134.0, "108.0": 107.0, "109.0": 114.0, "110.0": 115.0, "111.0": 116.0, "112.0": 117.0, "113.0": 118.0, "114.0": 119.0, "115.0": 120.0, "116.0": 121.0, "117.0": 122.0, "118.0": 123.0, "119.0": 125.0, "120.0": 97.0, "121.0": 71.0, "122.0": 127.0, "123.0": 128.0, "124.0": 130.0, "125.0": 132.0, "126.0": 77.0, "127.0": 89.0, "128.0": 136.0, "129.0": 139.0, "130.0": 90.0, "131.0": 140.0, "132.0": 141.0, "133.0": 146.0, "134.0": 151.0, "135.0": 133.0, "136.0": 165.0, "137.0": 129.0, "138.0": 131.0, "139.0": 186.0, "140.0": 135.0, "141.0": 171.0, "142.0": 138.0, "143.0": 148.0, "144.0": 194.0, "145.0": 144.0, "146.0": 145.0, "147.0": 193.0, "148.0": 147.0, "149.0": 162.0, "150.0": 164.0, "151.0": 181.0, "152.0": 184.0, "153.0": 187.0, "154.0": 192.0, "155.0": 195.0, "156.0": 196.0, "157.0": 197.0, "158.0": 198.0, "159.0": 199.0, "160.0": 200.0, "161.0": 168.0, "162.0": 169.0, "163.0": 173.0, "164.0": 174.0, "165.0": 176.0, "166.0": 177.0, "167.0": 124.0, "168.0": 149.0, "169.0": 150.0, "170.0": 152.0, "171.0": 154.0, "172.0": 155.0, "173.0": 160.0, "174.0": 163.0, "175.0": 178.0, "176.0": 179.0, "177.0": 180.0, "178.0": 183.0, "179.0": 188.0, "180.0": 189.0, "181.0": 182.0, "182.0": 185.0, "183.0": 166.0, "184.0": 167.0, "185.0": 170.0, "186.0": 172.0, "187.0": 175.0, "188.0": 161.0, "189.0": 20.0, "190.0": 190.0, "191.0": 191.0, "192.0": 126.0, "193.0": 2.0, "194.0": 7.0, "195.0": 153.0, "196.0": 156.0, "197.0": 157.0, "198.0": 158.0, "199.0": 96.0, "200.0": 159.0, "201.0": 203.0, "202.0": 204.0, "203.0": 206.0, "204.0": 208.0, "205.0": 210.0, "206.0": 213.0, "207.0": 215.0, "208.0": 218.0, "209.0": 221.0, "210.0": 222.0, "211.0": 223.0, "212.0": 226.0, "213.0": 205.0, "214.0": 207.0, "215.0": 211.0, "216.0": 212.0, "217.0": 214.0, "218.0": 219.0, "219.0": 220.0, "220.0": 224.0, "221.0": 225.0, "222.0": 228.0, "223.0": 229.0, "224.0": 249.0, "225.0": 251.0, "226.0": 252.0, "227.0": 253.0, "228.0": 254.0, "229.0": 255.0, "230.0": 256.0, "231.0": 257.0, "232.0": 258.0, "233.0": 259.0, "234.0": 260.0, "235.0": 261.0, "236.0": 262.0, "237.0": 263.0, "238.0": 264.0, "239.0": 265.0, "240.0": 266.0, "241.0": 268.0, "242.0": 269.0, "243.0": 270.0, "244.0": 231.0, "245.0": 233.0, "246.0": 234.0, "247.0": 235.0, "248.0": 236.0, "249.0": 237.0, "250.0": 239.0, "251.0": 240.0, "252.0": 241.0, "253.0": 242.0, "254.0": 243.0, "255.0": 244.0, "256.0": 245.0, "257.0": 246.0, "258.0": 248.0, "259.0": 201.0, "260.0": 271.0, "261.0": 209.0, "262.0": 216.0, "263.0": 273.0, "264.0": 227.0, "265.0": 230.0, "266.0": 275.0, "267.0": 277.0, "268.0": 280.0, "269.0": 282.0, "270.0": 284.0, "271.0": 286.0, "272.0": 288.0, "273.0": 272.0, "274.0": 247.0, "275.0": 276.0, "276.0": 278.0, "277.0": 279.0, "278.0": 283.0, "279.0": 287.0, "280.0": 289.0, "281.0": 267.0, "282.0": 290.0, "283.0": 291.0, "284.0": 292.0, "285.0": 297.0, "286.0": 298.0, "287.0": 299.0, "288.0": 301.0, "289.0": 302.0, "290.0": 303.0, "291.0": 304.0, "292.0": 305.0, "293.0": 307.0, "294.0": 308.0, "295.0": 309.0, "296.0": 312.0, "297.0": 250.0, "298.0": 313.0, "299.0": 314.0, "300.0": 315.0, "301.0": 316.0, "302.0": 317.0, "303.0": 318.0, "304.0": 300.0, "305.0": 344.0, "306.0": 345.0, "307.0": 348.0, "308.0": 310.0, "309.0": 340.0, "310.0": 306.0, "311.0": 360.0, "312.0": 311.0, "313.0": 319.0, "314.0": 320.0, "315.0": 321.0, "316.0": 322.0, "317.0": 323.0, "318.0": 324.0, "319.0": 325.0, "320.0": 326.0, "321.0": 327.0, "322.0": 328.0, "323.0": 329.0, "324.0": 330.0, "325.0": 334.0, "326.0": 335.0, "327.0": 336.0, "328.0": 281.0, "329.0": 355.0, "330.0": 346.0, "331.0": 347.0, "332.0": 349.0, "333.0": 293.0, "334.0": 350.0, "335.0": 359.0, "336.0": 338.0, "337.0": 339.0, "338.0": 365.0, "339.0": 332.0, "340.0": 333.0, "341.0": 337.0, "342.0": 351.0, "343.0": 352.0, "344.0": 353.0, "345.0": 354.0, "346.0": 376.0, "347.0": 341.0, "348.0": 342.0, "349.0": 343.0, "350.0": 361.0, "351.0": 394.0, "352.0": 356.0, "353.0": 357.0, "354.0": 400.0, "355.0": 285.0, "356.0": 393.0, "357.0": 358.0, "358.0": 368.0, "359.0": 364.0, "360.0": 366.0, "361.0": 388.0, "362.0": 390.0, "363.0": 395.0, "364.0": 396.0, "365.0": 397.0, "366.0": 398.0, "367.0": 399.0, "368.0": 379.0, "369.0": 380.0, "370.0": 381.0, "371.0": 382.0, "372.0": 383.0, "373.0": 384.0, "374.0": 371.0, "375.0": 373.0, "376.0": 367.0, "377.0": 385.0, "378.0": 386.0, "379.0": 387.0, "380.0": 389.0, "381.0": 391.0, "382.0": 375.0, "383.0": 377.0, "384.0": 378.0, "385.0": 363.0, "386.0": 274.0, "387.0": 217.0, "388.0": 392.0, "389.0": 331.0, "390.0": 202.0, "391.0": 369.0, "392.0": 370.0, "393.0": 372.0, "394.0": 232.0, "395.0": 374.0, "396.0": 294.0, "397.0": 295.0, "398.0": 238.0, "399.0": 362.0, "400.0": 296.0}

@Lawreros
Copy link
Collaborator

The regions being sorted differently seem to be a result of the work done before I inherited this repo. Nowhere in the code I used for parcellation label creation would the intensity values for a given region be changed. Can I get a copy of the code you used to check this parcellation agreement?

@ebridge2
Copy link
Collaborator

Looks like the orientations were updated somewhere along the way; wonder if that did something?

@gkiar
Copy link
Author

gkiar commented Oct 31, 2022

@Lawreros the code was relatively simple, but I think it would be faster for me to type it as pseudocode than find it on my harddrive:

1. Load both images with nibabel, and grab data matrix from files
2. Get unique list from one matrix or the other.
3. for each value in the unique list:
4.   find where they occur in the matrix they came from
5.   find all values that exist in the other matrix at those same locations

In this case, there was a 1-1 mapping, so I took all the values and bumped them all out of lists into numbers, making the mapping/look-ups easier.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants