{"_id":"575b55e2b1b4d60e00b57c41","category":{"_id":"5477c47ef3736008009e9eb7","__v":10,"pages":["5477c4dbf3736008009e9eb9","5477c545f3736008009e9ebc","54d36f225616470d0013ccf9","54d372fa69578e0d0027311f","54d3e371514a230d0018195a","54d410f79873ad0d00b3793b","54d42ca39873ad0d00b37950","54e9099bf152c50d009b49b5","552c27bb7820b80d00aa4ede","5570b1829ea7860d008b272f"],"version":"5476bf10817e8d080031f98b","project":"5476bf0f817e8d080031f988","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2014-11-28T00:40:30.938Z","from_sync":false,"order":5,"slug":"packages","title":"Packages"},"user":"54e3d35e464a9c3700f7ca7f","__v":79,"project":"5476bf0f817e8d080031f988","version":{"_id":"5476bf10817e8d080031f98b","__v":17,"project":"5476bf0f817e8d080031f988","createdAt":"2014-11-27T06:05:04.263Z","releaseDate":"2014-11-27T06:05:04.263Z","categories":["5476bf10817e8d080031f98c","5477c46cf3736008009e9eb5","5477c474f3736008009e9eb6","5477c47ef3736008009e9eb7","5477c48ff3736008009e9eb8","5477c4948deb230800808bf0","54e68328154f8e0d0007b55c","54e90194c8e0c00d007ac061","54eed2275bf74a0d00ef4076","54f7a7be0a3cbb0d00d666fb","559b0ebf7ae7f80d0096d871","55d697f9ae529e0d00d34f03","562d4dcc8c6e5a0d00d6ed1d","562e591c4376430d006f17e0","568f0e73bdb9260d00149d8c","5719542aac1e2e0e001834c6","57a14a8ed778850e0047e230"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-06-11T00:05:54.950Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":true,"api":{"settings":"","results":{"codes":[]},"auth":"required","params":[],"url":""},"isReference":false,"order":3,"body":"Inside the basic <a href=\"https://developers.transcriptic.com/docs/the-manifest\"> framework of the manifest, </a> `inputs` act as a dictionary that assign variable names as keys and input type information as values. Below you will find examples of key-value combinations.\n\n#####The valid input types for a protocol are:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Meaning\",\n    \"0-0\": \"[`aliquot`](https://developers.transcriptic.com/docs/input-types#section-aliquots)\",\n    \"0-1\": \"A single aliquot.\",\n    \"1-0\": \"[`aliquot+`](https://developers.transcriptic.com/docs/input-types#section-aliquots)\",\n    \"1-1\": \"Several aliquots.\",\n    \"2-0\": \"[`aliquot++`](https://developers.transcriptic.com/docs/input-types#section-aliquots)\",\n    \"2-1\": \"Groups of multiple aliquots.\",\n    \"3-0\": \"[`container`](https://developers.transcriptic.com/docs/input-types#section-containers)\",\n    \"h-2\": \"autoprotocol-python type\",\n    \"0-2\": \"`Well`\",\n    \"1-2\": \"`WellGroup`\",\n    \"2-2\": \"`list(WellGroup)`\",\n    \"3-1\": \"A single container.\",\n    \"3-2\": \"`Container`\",\n    \"5-0\": \"[`integer`, `decimal`](https://developers.transcriptic.com/docs/input-types#section-strings-integers-and-dimensionalized-values)\",\n    \"5-1\": \"An integral or decimal number, respectively.\",\n    \"5-2\": \"`int`, `float`\",\n    \"6-0\": \"[`acceleration`, `concentration(mass)`, `concentration(molar)`, `frequency`, `flowrate`, `temperature`,  `time`, `volume`](https://developers.transcriptic.com/docs/input-types#section-implementation-of-integer-string-and-value)\",\n    \"6-1\": \"A dimensioned value.\",\n    \"6-2\": \"`Unit`\",\n    \"7-0\": \"[`bool`](https://developers.transcriptic.com/docs/input-types#section-boolean)\",\n    \"7-1\": \"True or false.\",\n    \"7-2\": \"`bool`\",\n    \"8-0\": \"[`string`](https://developers.transcriptic.com/docs/input-types#section-strings-integers-and-dimensionalized-values)\",\n    \"8-1\": \"A string.\",\n    \"8-2\": \"`str`\",\n    \"9-0\": \"[`group`](https://developers.transcriptic.com/docs/input-types#section-group-and-group-)\",\n    \"9-1\": \"A group of related inputs.\",\n    \"9-2\": \"`dict`\",\n    \"10-0\": \"[`group+`](https://developers.transcriptic.com/docs/input-types#section-group-and-group-)\",\n    \"10-1\": \"Groups of groups of related inputs.\",\n    \"10-2\": \"`list of dicts`\",\n    \"13-0\": \"[`thermocycle`](https://developers.transcriptic.com/docs/input-types#section-thermocycle)\",\n    \"13-1\": \"Groups of thermocycle cycles with groups of steps.\",\n    \"13-2\": \"Combination, see details below.\",\n    \"14-0\": \"[`csv`, `csv_table`](https://developers.transcriptic.com/docs/input-types#section-csv-table)\",\n    \"14-1\": \"Bulk input from a comma-separated values (CSV) file.\",\n    \"14-2\": \"`list of dicts`, see details below.\",\n    \"11-0\": \"[`choice`](https://developers.transcriptic.com/docs/input-types#section-choice-and-group-choice)\",\n    \"11-1\": \"A list of options that renders as a dropdown menu\",\n    \"11-2\": \"`list of dicts`\",\n    \"12-0\": \"[`group-choice`](https://developers.transcriptic.com/docs/input-types#section-choice-and-group-choice)\",\n    \"12-1\": \"A list of options that render another set of inputs when selected\",\n    \"12-2\": \"Combination, see details below.\",\n    \"4-0\": \"[`container+`](https://developers.transcriptic.com/docs/input-types#section-containers)\",\n    \"4-1\": \"Several containers.\",\n    \"4-2\": \"`list(Container)`\"\n  },\n  \"cols\": 3,\n  \"rows\": 15\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Manifest UI mapping\"\n}\n[/block]\nDemonstrated below are the input types and parameters to construct the manifest. All input types have a \"label,\" \"type,\" \"description,\" and \"required\" field. The `choice` and `group-choice` input types do not have the \"required\" fieldThe \"required\" field accepts a boolean value that indicates if this input type must be completed.\n### Aliquots\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"sample\\\": {\\n  \\\"type\\\": \\\"aliquot\\\",\\n  \\\"label\\\": \\\"...\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"...\\\",\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Aliquot\"\n    },\n    {\n      \"code\": \"\\\"sample\\\": {\\n  \\\"type\\\": \\\"aliquot+\\\",\\n  \\\"label\\\": \\\"...\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"....\\\"\\n},\",\n      \"language\": \"json\",\n      \"name\": \"Aliquot+\"\n    },\n    {\n      \"code\": \"\\\"compounds\\\": {\\n  \\\"type\\\": \\\"aliquot++\\\",\\n  \\\"label\\\": \\\"List of compounds.\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"...\\\"\\n},\",\n      \"language\": \"json\",\n      \"name\": \"Aliquot++\"\n    }\n  ]\n}\n[/block]\n##### Implementation of the aliquot input type.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/86hJwej0TM6avymBfQZ2_Aliquot%20Screenshot.png\",\n        \"Aliquot Screenshot.png\",\n        \"713\",\n        \"324\",\n        \"#8599a9\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n### Containers\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"sample\\\": {\\n  \\\"type\\\": \\\"container\\\",\\n  \\\"label\\\": \\\"...\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"...\\\",\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Container\"\n    },\n    {\n      \"code\": \"\\\"samples\\\": {\\n  \\\"type\\\": \\\"container+\\\",\\n  \\\"label\\\": \\\"Destination(s) from Your Inventory\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"Select destination(s) from your inventory.\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Container+\"\n    }\n  ]\n}\n[/block]\n##### Implementation of Container+\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/HKKrFoiR7WyksZInsCsO_Container+%20Screenshot.png\",\n        \"Container+ Screenshot.png\",\n        \"704\",\n        \"858\",\n        \"#597b98\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n###Dimensional Values, Strings, and Integers\nPlease note, `acceleration`, `concentration(mass)`, `concentration(molar)`, `frequency`, `flowrate`, `temperature`, `time`, and `volume` are just extensions of an integer or string.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"input\\\": {\\n  \\\"type\\\": \\\"volume\\\",\\n  \\\"label\\\": \\\"...\\\",\\n  \\\"default\\\": \\\"10:microliter\\\",\\n  \\\"description\\\": \\\"....\\\",\\n  \\\"required\\\": true,\\n},\",\n      \"language\": \"json\",\n      \"name\": \"Dimensional Value\"\n    },\n    {\n      \"code\": \"\\\"id\\\": {\\n  \\\"type\\\": \\\"string\\\",\\n  \\\"label\\\": \\\"...\\\",\\n  \\\"default\\\": \\\"example\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"...\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"String\"\n    },\n    {\n      \"code\": \"\\\"number\\\": {\\n  \\\"type\\\": \\\"integer\\\",\\n  \\\"label\\\": \\\"your_label\\\",\\n  \\\"default\\\": \\\"5\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"number of your input\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Integer/Decimal\"\n    }\n  ]\n}\n[/block]\n##### Implementation of integer, string, and value \nPlease note that wavelength was used in example, but any dimension can be used.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/1YyBEUqQxuEg3Fnq2bFy_Int:dec:length%20Screenshot.png\",\n        \"Int:dec:length Screenshot.png\",\n        \"706\",\n        \"240\",\n        \"#ecf2f2\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n### Boolean\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"boolean_box\\\": {\\n  \\\"type\\\": \\\"bool\\\",\\n  \\\"default\\\": false,\\n  \\\"label\\\": \\\"your_label\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"Is false until assigned true\\\"\\n},\",\n      \"language\": \"json\",\n      \"name\": \"Boolean\"\n    }\n  ]\n}\n[/block]\n##### Implementation of boolean. \nNote that the default for this boolean selector is set to \"true.\"\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/mvFLY3wmRXOWIZATfvTQ_Bool%20Screenshot.png\",\n        \"Bool Screenshot.png\",\n        \"229\",\n        \"98\",\n        \"#4694fa\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n### Group and Group+\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"sample\\\": {\\n  \\\"type\\\": \\\"group\\\",\\n  \\\"label\\\": \\\"...\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"...\\\",\\n  \\\"inputs\\\": {\\n    \\\"group1\\\": {\\n      \\\"label\\\": \\\"your_label\\\",\\n      \\\"type\\\": \\\"another_type\\\",\\n      \\\"default\\\": \\\"00\\\",\\n    },\\n    \\\"group2\\\": {\\n      \\\"label\\\": \\\"your_label\\\",\\n      \\\"type\\\": \\\"another_type\\\",\\n      \\\"default\\\": \\\"00\\\",\\n    }\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Group\"\n    },\n    {\n      \"code\": \"\\\"samples\\\": {\\n  \\\"type\\\": \\\"group+\\\",\\n  \\\"label\\\": \\\"...\\\",\\n  \\\"required\\\": true,\\n  \\\"description\\\": \\\"...\\\",\\n  \\\"inputs\\\": {\\n    \\\"sample\\\": {\\n      \\\"type\\\": \\\"...\\\",\\n      \\\"label\\\": \\\"...\\\",\\n      \\\"description\\\": \\\"...\\\"\\n    },\\n    \\\"sample2\\\": {\\n      \\\"type\\\": \\\"...\\\",\\n      \\\"description\\\": \\\"...\\\",\\n      \\\"label\\\": \\\"...\\\"\\n    }\\n    ... (ability to add more groups)\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Group+\"\n    }\n  ]\n}\n[/block]\n##### Implementation of Group+. \nSimilar to Group but with ability to add more groups\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/Q247Aem9Q0iSqALs5hiL_Group+%20Screenshot.png\",\n        \"Group+ Screenshot.png\",\n        \"1398\",\n        \"740\",\n        \"#457598\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n### Choice and Group-Choice\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"# One drop-down choice\\n\\\"source\\\": {\\n  \\\"type\\\": \\\"choice\\\",\\n  \\\"label\\\": \\\"Choose ...\\\",\\n  \\\"default\\\": \\\"value1\\\",\\n  \\\"description\\\": \\\"...\\\",\\n  \\\"options\\\": [\\n    {\\n      \\\"value\\\": \\\"value1\\\",\\n      \\\"name\\\": \\\"...\\\"\\n    },\\n    {\\n      \\\"value\\\": \\\"...\\\",\\n      \\\"name\\\": \\\"...\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Choice\"\n    },\n    {\n      \"code\": \"# List of options, each provides unique set of inputs\\n\\\"source\\\": {\\n  \\\"type\\\": \\\"group-choice\\\",\\n  \\\"label\\\": \\\"your_label\\\",\\n  \\\"description\\\": \\\"...\\\",\\n  \\\"default\\\": \\\"this_must_match\\\",\\n  \\\"options\\\": [\\n    {\\n      \\\"value\\\": \\\"this_must_match\\\",\\n      \\\"name\\\": \\\"your_name\\\",\\n      \\\"inputs\\\": {\\n        \\\"name\\\": {\\n          \\\"type\\\": \\\"group+\\\",\\n          \\\"label\\\": \\\"...\\\",\\n          \\\"inputs\\\": {\\n            \\\"source\\\": {\\n              \\\"type\\\": \\\"...\\\",\\n              \\\"label\\\": \\\"...\\\"\\n            },\\n            \\\"name1\\\": {\\n              \\\"type\\\": \\\"...\\\",\\n              \\\"label\\\": \\\"...\\\"\\n            },\\n            \\\"name2\\\": {\\n              \\\"type\\\": \\\"...\\\",\\n              \\\"label\\\": \\\"...\\\"\\n            }\\n          }\\n        }\\n      }\\n    }\\n    ]\\n  }\",\n      \"language\": \"json\",\n      \"name\": \"Group-Choice\"\n    }\n  ]\n}\n[/block]\n##### Implementation of Choice.\nGroup-Choice provides ability to add more groups with choice functionality.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/dCZEnHHaRl2XNd3VrP7n_Choice%20Screenshot.png\",\n        \"Choice Screenshot.png\",\n        \"271\",\n        \"186\",\n        \"#4a92e2\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n### Thermocycle\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"therm\\\": {\\n  \\\"label\\\": \\\"Thermocycling Parameters\\\",\\n  \\\"description\\\": \\\"Vendor specific defaults for the chosen polymerase are filled in below, you can make any changes to the thermocycle protocol by changing temperatures and durations or adding or removing steps or groups below.\\\",\\n  \\\"type\\\": \\\"thermocycle\\\",\\n  \\\"required\\\": true,\\n  \\\"default\\\": [\\n    {\\n      \\\"cycles\\\": 1,\\n      \\\"steps\\\": [\\n        {\\n          \\\"temperature\\\": \\\"98:celsius\\\",\\n          \\\"duration\\\": \\\"30:second\\\"\\n        }\\n      ]\\n    },\\n    {\\n      \\\"cycles\\\": 30,\\n      \\\"steps\\\": [\\n        {\\n          \\\"temperature\\\": \\\"98:celsius\\\",\\n          \\\"duration\\\": \\\"10:second\\\"\\n        },\\n        {\\n          \\\"temperature\\\": \\\"60:celsius\\\",\\n          \\\"duration\\\": \\\"60:second\\\"\\n        },\\n        {\\n          \\\"temperature\\\": \\\"72:celsius\\\",\\n          \\\"duration\\\": \\\"120:second\\\"\\n        }\\n      ]\\n    },\\n    ... (more cycles can be added here)\\n  ]\\n}\\n},\",\n      \"language\": \"json\",\n      \"name\": \"Thermocycle\"\n    }\n  ]\n}\n[/block]\n##### Implementation of Thermocycle\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/v0APZeeZSLmy6RgBb2lK_Thermocycle%20Screenshot.png\",\n        \"Thermocycle Screenshot.png\",\n        \"725\",\n        \"551\",\n        \"#7cabcd\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n### CSV Table\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"drugs\\\":{\\n  \\\"type\\\": \\\"csv-table\\\",\\n  \\\"label\\\": \\\"...\\\",\\n  \\\"required\\\": true,\\n  \\\"template\\\": {\\n    \\\"header\\\": [\\\"header1\\\", \\\"header2\\\", \\\"header3\\\", \\\"header4\\\"],\\n    \\\"keys\\\": [\\\"key1\\\", \\\"key2\\\", \\\"key3\\\", \\\"key4\\\"],\\n    \\\"col_type\\\": [\\\"integer\\\", \\\"string\\\", \\\"container\\\", \\\"aliquot\\\"],\\n    \\\"rows\\\": [[\\\"0\\\", \\\"1\\\", \\\"2\\\"],\\n             [\\\"0\\\", \\\"1\\\", \\\"2\\\"]],\\n    \\\"label\\\": \\\"...\\\"\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"csv_table\"\n    },\n    {\n      \"code\": \"\\\"bulk_upload\\\": {\\n  \\\"type\\\": \\\"csv\\\",\\n  \\\"label\\\": \\\"...\\\",\\n  \\\"required\\\": true,\\n  \\\"template\\\": {\\n    \\\"label\\\": \\\"...\\\",\\n    \\\"header\\\": [\\n      \\\"sample_name\\\",\\n      \\\"sample_volume\\\",\\n      \\\"sample_well\\\"\\n    ],\\n    \\\"rows\\\": [\\n      [\\n        \\\"compound_1\\\",\\n        \\\"00:microliter\\\",\\n        \\\"A1\\\"\\n      ],\\n      [\\n        \\\"compound_2\\\",\\n        \\\"00:microliter\\\",\\n        \\\"A2\\\"\\n      ]\\n    ]\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"csv\"\n    }\n  ]\n}\n[/block]\n##### Implementation of CSV Table upload\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/Cw1FvdYmRjyCTcBmXr5a_CSV%20within%20Group%20Screenshot.png\",\n        \"CSV within Group Screenshot.png\",\n        \"703\",\n        \"222\",\n        \"#4c687c\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {}\n  ]\n}\n[/block]","excerpt":"","slug":"input-types","type":"basic","title":"Input Types"}
Inside the basic <a href="https://developers.transcriptic.com/docs/the-manifest"> framework of the manifest, </a> `inputs` act as a dictionary that assign variable names as keys and input type information as values. Below you will find examples of key-value combinations. #####The valid input types for a protocol are: [block:parameters] { "data": { "h-0": "Name", "h-1": "Meaning", "0-0": "[`aliquot`](https://developers.transcriptic.com/docs/input-types#section-aliquots)", "0-1": "A single aliquot.", "1-0": "[`aliquot+`](https://developers.transcriptic.com/docs/input-types#section-aliquots)", "1-1": "Several aliquots.", "2-0": "[`aliquot++`](https://developers.transcriptic.com/docs/input-types#section-aliquots)", "2-1": "Groups of multiple aliquots.", "3-0": "[`container`](https://developers.transcriptic.com/docs/input-types#section-containers)", "h-2": "autoprotocol-python type", "0-2": "`Well`", "1-2": "`WellGroup`", "2-2": "`list(WellGroup)`", "3-1": "A single container.", "3-2": "`Container`", "5-0": "[`integer`, `decimal`](https://developers.transcriptic.com/docs/input-types#section-strings-integers-and-dimensionalized-values)", "5-1": "An integral or decimal number, respectively.", "5-2": "`int`, `float`", "6-0": "[`acceleration`, `concentration(mass)`, `concentration(molar)`, `frequency`, `flowrate`, `temperature`, `time`, `volume`](https://developers.transcriptic.com/docs/input-types#section-implementation-of-integer-string-and-value)", "6-1": "A dimensioned value.", "6-2": "`Unit`", "7-0": "[`bool`](https://developers.transcriptic.com/docs/input-types#section-boolean)", "7-1": "True or false.", "7-2": "`bool`", "8-0": "[`string`](https://developers.transcriptic.com/docs/input-types#section-strings-integers-and-dimensionalized-values)", "8-1": "A string.", "8-2": "`str`", "9-0": "[`group`](https://developers.transcriptic.com/docs/input-types#section-group-and-group-)", "9-1": "A group of related inputs.", "9-2": "`dict`", "10-0": "[`group+`](https://developers.transcriptic.com/docs/input-types#section-group-and-group-)", "10-1": "Groups of groups of related inputs.", "10-2": "`list of dicts`", "13-0": "[`thermocycle`](https://developers.transcriptic.com/docs/input-types#section-thermocycle)", "13-1": "Groups of thermocycle cycles with groups of steps.", "13-2": "Combination, see details below.", "14-0": "[`csv`, `csv_table`](https://developers.transcriptic.com/docs/input-types#section-csv-table)", "14-1": "Bulk input from a comma-separated values (CSV) file.", "14-2": "`list of dicts`, see details below.", "11-0": "[`choice`](https://developers.transcriptic.com/docs/input-types#section-choice-and-group-choice)", "11-1": "A list of options that renders as a dropdown menu", "11-2": "`list of dicts`", "12-0": "[`group-choice`](https://developers.transcriptic.com/docs/input-types#section-choice-and-group-choice)", "12-1": "A list of options that render another set of inputs when selected", "12-2": "Combination, see details below.", "4-0": "[`container+`](https://developers.transcriptic.com/docs/input-types#section-containers)", "4-1": "Several containers.", "4-2": "`list(Container)`" }, "cols": 3, "rows": 15 } [/block] [block:api-header] { "type": "basic", "title": "Manifest UI mapping" } [/block] Demonstrated below are the input types and parameters to construct the manifest. All input types have a "label," "type," "description," and "required" field. The `choice` and `group-choice` input types do not have the "required" fieldThe "required" field accepts a boolean value that indicates if this input type must be completed. ### Aliquots [block:code] { "codes": [ { "code": "\"sample\": {\n \"type\": \"aliquot\",\n \"label\": \"...\",\n \"required\": true,\n \"description\": \"...\",\n}", "language": "json", "name": "Aliquot" }, { "code": "\"sample\": {\n \"type\": \"aliquot+\",\n \"label\": \"...\",\n \"required\": true,\n \"description\": \"....\"\n},", "language": "json", "name": "Aliquot+" }, { "code": "\"compounds\": {\n \"type\": \"aliquot++\",\n \"label\": \"List of compounds.\",\n \"required\": true,\n \"description\": \"...\"\n},", "language": "json", "name": "Aliquot++" } ] } [/block] ##### Implementation of the aliquot input type. [block:image] { "images": [ { "image": [ "https://files.readme.io/86hJwej0TM6avymBfQZ2_Aliquot%20Screenshot.png", "Aliquot Screenshot.png", "713", "324", "#8599a9", "" ] } ] } [/block] ### Containers [block:code] { "codes": [ { "code": "\"sample\": {\n \"type\": \"container\",\n \"label\": \"...\",\n \"required\": true,\n \"description\": \"...\",\n}", "language": "json", "name": "Container" }, { "code": "\"samples\": {\n \"type\": \"container+\",\n \"label\": \"Destination(s) from Your Inventory\",\n \"required\": true,\n \"description\": \"Select destination(s) from your inventory.\"\n}", "language": "json", "name": "Container+" } ] } [/block] ##### Implementation of Container+ [block:image] { "images": [ { "image": [ "https://files.readme.io/HKKrFoiR7WyksZInsCsO_Container+%20Screenshot.png", "Container+ Screenshot.png", "704", "858", "#597b98", "" ] } ] } [/block] ###Dimensional Values, Strings, and Integers Please note, `acceleration`, `concentration(mass)`, `concentration(molar)`, `frequency`, `flowrate`, `temperature`, `time`, and `volume` are just extensions of an integer or string. [block:code] { "codes": [ { "code": "\"input\": {\n \"type\": \"volume\",\n \"label\": \"...\",\n \"default\": \"10:microliter\",\n \"description\": \"....\",\n \"required\": true,\n},", "language": "json", "name": "Dimensional Value" }, { "code": "\"id\": {\n \"type\": \"string\",\n \"label\": \"...\",\n \"default\": \"example\",\n \"required\": true,\n \"description\": \"...\"\n}", "language": "json", "name": "String" }, { "code": "\"number\": {\n \"type\": \"integer\",\n \"label\": \"your_label\",\n \"default\": \"5\",\n \"required\": true,\n \"description\": \"number of your input\"\n}", "language": "json", "name": "Integer/Decimal" } ] } [/block] ##### Implementation of integer, string, and value Please note that wavelength was used in example, but any dimension can be used. [block:image] { "images": [ { "image": [ "https://files.readme.io/1YyBEUqQxuEg3Fnq2bFy_Int:dec:length%20Screenshot.png", "Int:dec:length Screenshot.png", "706", "240", "#ecf2f2", "" ] } ] } [/block] ### Boolean [block:code] { "codes": [ { "code": "\"boolean_box\": {\n \"type\": \"bool\",\n \"default\": false,\n \"label\": \"your_label\",\n \"required\": true,\n \"description\": \"Is false until assigned true\"\n},", "language": "json", "name": "Boolean" } ] } [/block] ##### Implementation of boolean. Note that the default for this boolean selector is set to "true." [block:image] { "images": [ { "image": [ "https://files.readme.io/mvFLY3wmRXOWIZATfvTQ_Bool%20Screenshot.png", "Bool Screenshot.png", "229", "98", "#4694fa", "" ] } ] } [/block] ### Group and Group+ [block:code] { "codes": [ { "code": "\"sample\": {\n \"type\": \"group\",\n \"label\": \"...\",\n \"required\": true,\n \"description\": \"...\",\n \"inputs\": {\n \"group1\": {\n \"label\": \"your_label\",\n \"type\": \"another_type\",\n \"default\": \"00\",\n },\n \"group2\": {\n \"label\": \"your_label\",\n \"type\": \"another_type\",\n \"default\": \"00\",\n }\n }\n}", "language": "json", "name": "Group" }, { "code": "\"samples\": {\n \"type\": \"group+\",\n \"label\": \"...\",\n \"required\": true,\n \"description\": \"...\",\n \"inputs\": {\n \"sample\": {\n \"type\": \"...\",\n \"label\": \"...\",\n \"description\": \"...\"\n },\n \"sample2\": {\n \"type\": \"...\",\n \"description\": \"...\",\n \"label\": \"...\"\n }\n ... (ability to add more groups)\n }\n}", "language": "json", "name": "Group+" } ] } [/block] ##### Implementation of Group+. Similar to Group but with ability to add more groups [block:image] { "images": [ { "image": [ "https://files.readme.io/Q247Aem9Q0iSqALs5hiL_Group+%20Screenshot.png", "Group+ Screenshot.png", "1398", "740", "#457598", "" ] } ] } [/block] ### Choice and Group-Choice [block:code] { "codes": [ { "code": "# One drop-down choice\n\"source\": {\n \"type\": \"choice\",\n \"label\": \"Choose ...\",\n \"default\": \"value1\",\n \"description\": \"...\",\n \"options\": [\n {\n \"value\": \"value1\",\n \"name\": \"...\"\n },\n {\n \"value\": \"...\",\n \"name\": \"...\"\n }\n ]\n}", "language": "json", "name": "Choice" }, { "code": "# List of options, each provides unique set of inputs\n\"source\": {\n \"type\": \"group-choice\",\n \"label\": \"your_label\",\n \"description\": \"...\",\n \"default\": \"this_must_match\",\n \"options\": [\n {\n \"value\": \"this_must_match\",\n \"name\": \"your_name\",\n \"inputs\": {\n \"name\": {\n \"type\": \"group+\",\n \"label\": \"...\",\n \"inputs\": {\n \"source\": {\n \"type\": \"...\",\n \"label\": \"...\"\n },\n \"name1\": {\n \"type\": \"...\",\n \"label\": \"...\"\n },\n \"name2\": {\n \"type\": \"...\",\n \"label\": \"...\"\n }\n }\n }\n }\n }\n ]\n }", "language": "json", "name": "Group-Choice" } ] } [/block] ##### Implementation of Choice. Group-Choice provides ability to add more groups with choice functionality. [block:image] { "images": [ { "image": [ "https://files.readme.io/dCZEnHHaRl2XNd3VrP7n_Choice%20Screenshot.png", "Choice Screenshot.png", "271", "186", "#4a92e2", "" ] } ] } [/block] ### Thermocycle [block:code] { "codes": [ { "code": "\"therm\": {\n \"label\": \"Thermocycling Parameters\",\n \"description\": \"Vendor specific defaults for the chosen polymerase are filled in below, you can make any changes to the thermocycle protocol by changing temperatures and durations or adding or removing steps or groups below.\",\n \"type\": \"thermocycle\",\n \"required\": true,\n \"default\": [\n {\n \"cycles\": 1,\n \"steps\": [\n {\n \"temperature\": \"98:celsius\",\n \"duration\": \"30:second\"\n }\n ]\n },\n {\n \"cycles\": 30,\n \"steps\": [\n {\n \"temperature\": \"98:celsius\",\n \"duration\": \"10:second\"\n },\n {\n \"temperature\": \"60:celsius\",\n \"duration\": \"60:second\"\n },\n {\n \"temperature\": \"72:celsius\",\n \"duration\": \"120:second\"\n }\n ]\n },\n ... (more cycles can be added here)\n ]\n}\n},", "language": "json", "name": "Thermocycle" } ] } [/block] ##### Implementation of Thermocycle [block:image] { "images": [ { "image": [ "https://files.readme.io/v0APZeeZSLmy6RgBb2lK_Thermocycle%20Screenshot.png", "Thermocycle Screenshot.png", "725", "551", "#7cabcd", "" ] } ] } [/block] ### CSV Table [block:code] { "codes": [ { "code": "\"drugs\":{\n \"type\": \"csv-table\",\n \"label\": \"...\",\n \"required\": true,\n \"template\": {\n \"header\": [\"header1\", \"header2\", \"header3\", \"header4\"],\n \"keys\": [\"key1\", \"key2\", \"key3\", \"key4\"],\n \"col_type\": [\"integer\", \"string\", \"container\", \"aliquot\"],\n \"rows\": [[\"0\", \"1\", \"2\"],\n [\"0\", \"1\", \"2\"]],\n \"label\": \"...\"\n }\n}", "language": "json", "name": "csv_table" }, { "code": "\"bulk_upload\": {\n \"type\": \"csv\",\n \"label\": \"...\",\n \"required\": true,\n \"template\": {\n \"label\": \"...\",\n \"header\": [\n \"sample_name\",\n \"sample_volume\",\n \"sample_well\"\n ],\n \"rows\": [\n [\n \"compound_1\",\n \"00:microliter\",\n \"A1\"\n ],\n [\n \"compound_2\",\n \"00:microliter\",\n \"A2\"\n ]\n ]\n }\n}", "language": "json", "name": "csv" } ] } [/block] ##### Implementation of CSV Table upload [block:image] { "images": [ { "image": [ "https://files.readme.io/Cw1FvdYmRjyCTcBmXr5a_CSV%20within%20Group%20Screenshot.png", "CSV within Group Screenshot.png", "703", "222", "#4c687c", "" ] } ] } [/block] [block:image] { "images": [ {} ] } [/block]