Worried about losing your cells due to growth or thawing difficulties, or even a random freezer breakdown? Enjoy peace of mind knowing that you can be covered under abm's Cell Line Insurance.
Sale of this item is subjected to the completion of a Material Transfer Agreement (MTA) by the purchasing institution.
For for-profit organizations, please contact quotes@abmgood.com for pricing.
Immortalized Mast Cells (NCL-2) ; Capable of histamine release (degranulation)
Description
NCL-2 is the only mast line cell line existing without Kit gene mutation derived from NC mouse bone marrow. NCL-2 cells could be maintained without additional growth factors and thus could respond to exogenous growth signals. Moreover, NCL-2 cells expressed FceRI and KIT, and release histamine and LTB4 in response to antigen stimulation. This cell line could be a useful tool to analyze proliferation, differentiation, and function of normal mast cells.
Organism
Mouse (M. musculus)
Tissue
Bone Marrow
Donor History
Male, NC mouse
Growth Properties
Suspension, round
Cell Type
Immortalized Cells
Unit
1x10⁶ cells / 1.0 ml
Storage Condition
Vapor phase of liquid nitrogen, or below -130°C.
Shipping Conditions
Ship with dry ice.
Product Format
Frozen
Intended Use
This product is intended for laboratory research use only. It is not intended for any animal or human therapeutic use, any human or animal consumption, or any diagnostic use.
BioSafety
II
Certificate of Analysis
For batch-specific test results, refer to the applicable certificate of analysis that can be found at www.abmgood.com.
1. Visually examine the packaging containers for signs of leakage or breakage.
2. Immediately transfer frozen cells from dry ice packaging to a temperature below -130°C, preferably in liquid nitrogen vapor phase storage, until ready for use.
To ensure the highest level of viability, thaw the vial and initiate culture as soon as possible upon receipt. If continued storage is desired, the vial should only be stored below -130°C or in liquid nitrogen vapor phase. Do not store at -70°C, as it will result in loss of viability.
Thawing Protocol
1. Thaw cells quickly in a 37°C water bath while agitating gently (maximum 2 minutes). The vial cap should be kept above the water level to minimize the risk of contamination.
2. Decontaminate the vial by spraying and wiping the exterior of the vial with 70% ethanol. From this point onwards, all operations should be strictly carried out inside a biological safety cabinet using aseptic conditions.
3. Transfer the cell suspension into a 15ml sterile conical tube containing 5ml of pre-warmed, complete growth media. Centrifuge cells at 125xg for 5-7 minutes.
4. Aspirate the supernatant without disturbing the cell pellet. Re-suspend the cell pellet in the recommended pre-warmed, complete growth media and dispense into a T25 culture flask.
5. Incubate the cells at the recommended conditions.
Subculture Protocol
1. Simply add fresh complete media directly to the culture. Do not allow cell density to exceed 1x10⁶ cells/ml.
2. Alternatively, replace complete growth media by centrifugation and re-suspend the cell pellet in fresh complete media, and add appropriate aliquots of the cell suspension to new culture vessels, as desired.
3. Incubate the cells at the recommended conditions.
Cryopreservation
Cryopreservation Medium (TM024), or complete growth media with 10% DMSO.
Seeding Density (cells/ml)
150,000 - 200,000
Population Doubling Time (h)
30
Immortalization Method
Spontaneous immortalization
Expression
Fc εRI, KIT
Warranty
abm warrants that cell lines shall be viable upon initiation of culture for a period of thirty (30) days after shipment and that they shall meet the specifications on the applicable abm Material Product Information sheet, certificate of analysis, and/or catalog description. Such thirty (30) day period is referred to herein as the "Warranty Period”.
Disclaimer
1. Sale of this item is subjected to the completion of a Material Transfer Agreement (MTA) by the purchasing individual/institution for each cell line. If you have any questions regarding this, please contact us at licensing@abmgood.com.
2. All test parameters provided in the CoA are conducted using abm's standardized culture system and The stated values may vary under the end-user's culture conditions. Please verify that the product is suitable for your studies by referencing published papers or ordering RNA (0.5 μg, Cat.# C207, $450.00) or cell lysate (100 μg, Cat.# C206, $600.00) to perform preliminary experiments, or alternatively use our Gene Expression Assay Service (Cat# C138). All sales are final.
3. We recommend live cell shipments for ease of cell transfer and this option can be requested at the time of order placement. Please note that the end-user will need to evaluate the feasibility of live cell shipment by taking into account the final destination's temperature variation and its geographical location.
4. All of abm's cell biology products are for research use ONLY and NOT for therapeutic/diagnostic applications. abm is not liable for any repercussions arising from the use of its cell biology product(s) in therapeutic/diagnostic or any other non-RUO application(s).
5. abm makes no warranties or representations as to the accuracy of the information on this site. Citations from literature are provided for informational purposes only. abm does not warrant that such information has been shown to be accurate.
6. abm warrants that cell lines shall be viable upon initiation of culture for a period of thirty (30) days after shipment and that they shall meet the specifications on the applicable abm Material Product Information sheet, certificate of analysis, and/or catalog description. Such thirty (30) day period is referred to herein as the "Warranty Period".
Depositor
Hiroshima University
Application
Research Use Only.
Material Citation
If use of this material results in a scientific publication, please cite the material in the following manner: Applied Biological Materials Inc, Cat. No. T0788
We do not perform extensive downstream characterization, or gene expression profiling of our cell lines. However, you can check the ‘References’ tab to see if a publication is available, or you can contact us to see if RNA or cell lysates are available for your cell line of interest. Please directly contact us for further information at quotes@abmgood.com.
We strongly encourage using the recommended media and culture conditions described in the "Growth Conditions" section as they have been optimized for cell growth. Other supplier's media and coating conditions have not been tested.
We strongly recommend thawing cells in the T25 flasks specified on the cell-specific product page to ensure optimal post-thaw recovery of the frozen cells before testing other culture vessels.
For a protocol on how to coat plates and dishes with Applied Cell Extracellular Matrix (Cat. No. G422), please download the “Applied Cell Extracellular Matrix Data Sheet” from here.
The standard concentration used for subculturing is 0.25% Trypsin-EDTA, available at abm (Cat. No. TM050). Yes, Trypsin-EDTA containing phenol red can be used as it does not interfere with trypsinization.
We follow the CDC-NIH recommendations that all mammalian sourced products should be handled at the Biological Safety Level 2 to minimize exposure of potentially infectious products. This information can be found in 'Biosafety in Microbiological and Biomedical Laboratories' (1999). Your institution's Safety Officer or Technical Services will be able to make the call as to whether BioSafety Level I is possible with these cells at your site, if desired.
Cells that are properly frozen using an effective cryoprotective agent can be stored in liquid nitrogen vapor phase (or below -130°C) indefinitely without affecting viability.
Live cells: acclimatize for 3-5 hours at the recommended temperature and CO2 conditions stated for the cell line under the Growth Conditions section, and then change media afterwards. For more information on how to handle live cells, please view our detailed instructions here (https://www.abmgood.com/uploads/document/Cell_Handling_Instructions_Upon_Arrival_150623.pdf).
Frozen cells: Upon receipt, immediately place cells in liquid nitrogen; or below -130°C.
Live cells are shipped as a live culture in a T12.5 flask. Cells are seeded at an optimal confluency to avoid metabolic waste build up during transport. In addition, we thoroughly test our cell lines for functional freeze-thaw recovery. For more information on how to handle live cells, please view our detailed instructions here (https://www.abmgood.com/uploads/document/Cell_Handling_Instructions_Upon_Arrival_150623.pdf).
Cells form clumps and display attachment issues when the trypsinization agent is not effectively neutralized. To completely neutralize the trypsin agent, add an equal amount of complete growth media prior to centrifugation. Subtle changes in culture conditions, particularly in pH and the quality of serum used in the growth medium, may also affect the amount of clumping exhibited by the cells.
It is important to ensure cell clumps are broken up through gentle re-suspension by pipetting up and down several times after pelleting cells by centrifugation. This will ensure a homogenous single cell suspension for even plating.
Hiragun, T., Yanase, Y., Okabe, T., Hiragun, M., Kawai, M., & Hide, M. (2014). Establishment of a mast cell line, NCL-2, without Kit mutation, derived from NC mouse bone marrow. FEBS open bio, 4, 342-6. doi:10.1016/j.fob.2014.03.011
This product has no review yet.
Other Cell Lines
SELECT CATEGORY
SPECIES
BIO SYSTEM
CELL TYPE
SEARCH RESULT
{"id":40630,"cat_no":"T0788","retired_cat_no":"","old_cat_no":"T0788","name":"Immortalized Mast Cells (NCL-2) ; \u003Cspan style=\u0022color: #ef6331;\u0022\u003ECapable of histamine release (degranulation)\u003C\/span\u003E","price":"0.0000","price_before_discount":"0.0000","academic_price":"3950.00","commercial_price":"0.00","distributor_price_note":"","unit_quantity":"1x10\u2076 cells \/ 1.0 ml","category_id":19,"category_name":"Immortalized Cell Lines","frontend_category_id":22,"frontend_category_ids":"20,21,22","gene_id":0,"ncbi_id":0,"gene_name":"","gene_full_name":"","alias":"","accession_number":"","species_id":2,"species":"Mouse (M. musculus)","real_species_id":0,"cell_type_id":1,"cell_type":"Immortalized Cells","product_type":"","tissue_id":22,"tissue":"Bone Marrow","tissue_system":"Immune System","source":null,"keywords":"Immortalized mouse mast cells, mast cell line, mouse cells, mouse cell line, immortalized mouse cells","invisible_search_keywords":"","filter_group_id":13,"filter_group_name":"Cell Lines","filter_name":"Immortalized Cells","search_filter_ids":"41,42,102,104","search_filter_keys":"41-42,102-104","temp_field":null,"filter_id":14,"customization":0,"filter_table_id":11916,"filter_table_name":"","related_group_id":0,"operator":"","status":1,"is_ko":0,"need_remove":0,"units":null,"document_sort":"","price_old":"0.0000","price2024":"0.0000","created_at":null,"updated_at":"2025-04-04 17:12:06","points_rule":5,"Confirmed":"Tony Confirmed","application_no_use":null,"application_id_no_use":null,"raised_in":null,"raised_in_id":null,"geo_price_before_discount":"0.00","geo_titer7_price_before_discount":"149.00","cate_url":"Immortalized-Cell-Lines.html","frontendBreadcrumbs":[{"id":20,"pid":86,"name":"Cellular Materials","page_id":18,"page_type":"App\\Models\\Category","href":"","sort":20,"show_in_nav":1,"show_in_homepage":1,"has_children":1,"status":1,"related_table":null,"created_at":null,"updated_at":null,"url_key":"cellular-materials.html","url":"cellular-materials.html"},{"id":21,"pid":20,"name":"Cell Library Collections","page_id":221,"page_type":"App\\Models\\Category","href":null,"sort":21,"show_in_nav":1,"show_in_homepage":1,"has_children":1,"status":1,"related_table":null,"created_at":null,"updated_at":"2025-02-12 01:11:16","url_key":"cellular-collections.html","url":"cellular-collections.html"},{"id":22,"pid":21,"name":"Immortalized Cell Lines","page_id":19,"page_type":"App\\Models\\Category","href":null,"sort":22,"show_in_nav":1,"show_in_homepage":1,"has_children":0,"status":1,"related_table":null,"created_at":null,"updated_at":null,"url_key":"Immortalized-Cell-Lines.html","url":"Immortalized-Cell-Lines.html"}],"price_flag":0,"builderURL":"","builderViewerURL":"","mapURL":"","viewerURL":"","builderType":"","productType":"App\\Models\\CatalogBaseCells","info_family":"","geo_price":"Inquiry","geo_price_symbol":"Inquiry","category":{"id":19,"categories":"Immortalized Cell Lines","pid":18,"url_key":"Immortalized-Cell-Lines.html","css":null,"wid":0,"breadcrumbs":"[{\u0022url\u0022:\u0022https:\/\/www.abmgood.com\u0022,\u0022title\u0022:\u0022Home\u0022},{\u0022url\u0022:\u0022https:\/\/www.abmgood.com\/cellular-materials.html\u0022,\u0022title\u0022:\u0022Cellular Materials\u0022},{\u0022url\u0022:\u0022https:\/\/www.abmgood.com\/Immortalized-Cell-Lines.html\u0022,\u0022title\u0022:\u0022Immoralized Cell Lines\u0022}]","breadcrumbsIdJson":"\u003Cscript type=\u0022application\/ld+json\u0022\u003E{\u0022@context\u0022:\u0022https:\/\/schema.org\u0022,\u0022@type\u0022:\u0022BreadcrumbList\u0022,\u0022itemListElement\u0022:[{\u0022@type\u0022:\u0022ListItem\u0022,\u0022position\u0022:1,\u0022name\u0022:\u0022Home\u0022,\u0022item\u0022:\u0022https:\/\/www.abmgood.com\u0022},{\u0022@type\u0022:\u0022ListItem\u0022,\u0022position\u0022:2,\u0022name\u0022:\u0022Cellular Materials\u0022,\u0022item\u0022:\u0022https:\/\/www.abmgood.com\/cellular-materials.html\u0022},{\u0022@type\u0022:\u0022ListItem\u0022,\u0022position\u0022:3,\u0022name\u0022:\u0022Immoralized Cell Lines\u0022}]}\u003C\/script\u003E","breadcrumbsHtml":"\u003Cul class=\u0022abm-breadcrumb\u0022\u003E\u003Cli\u003E\u003Ca href=\u0022https:\/\/www.abmgood.com\u0022\u003EHome\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\u0022https:\/\/www.abmgood.com\/cellular-materials.html\u0022\u003ECellular Materials\u003C\/a\u003E\u003C\/li\u003E\u003Cli class=\u0022active\u0022\u003EImmoralized Cell Lines\u003C\/li\u003E\u003C\/ul\u003E","description":"\u003Ch2 class=\u0022abm-categories-title-h2\u0022\u003EImmortalized Cell Lines\u003C\/h2\u003E\n\u003Cdiv class=\u0022abm-container-fluid abm-mb-5\u0022\u003E\n\u003Cp\u003E\u003Cstrong\u003Eabm Inc.\u003C\/strong\u003E was founded 20 years ago as the first in the industry to introduce cell immortalization technology, products, and services. This achievement established \u003Cstrong\u003Eabm\u003C\/strong\u003E as a pioneer and dominant leader in the cell immortalization field, culminating in a \u003Cstrong\u003EScience Journal technique report\u003C\/strong\u003E published on Nov. 21, 2014.\u003C\/p\u003E\n\u003Cp\u003EOver the past two decades, we have successfully developed the most comprehensive library of over 600 unique cell lines derived from human, mouse, and major pet primary cells. These cell lines have supported cutting-edge research and drug development in both the healthcare and pet industries. Examples include:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003ESkin cells for the beauty industry\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022\/mast-cell-lines.html\u0022 class=\u0022abm-text-bold abm-link\u0022\u003EMast cells\u003C\/a\u003E for allergy research\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022\/dermal-papilla-cells.html\u0022 class=\u0022abm-text-bold abm-link\u0022\u003EDermal papilla cell lines\u003C\/a\u003E from androgenetic alopecia for hair growth research and drug development\u003C\/li\u003E\n\u003Cli\u003ECow and chicken muscle cells for in \u003Ci\u003Evitro\u003C\/i\u003E meat production\u003C\/li\u003E\n\u003Cli\u003EImmortalized human hepatocytes for toxicity studies in new drug development\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003EIn addition to our extensive catalog, we also offer custom cell immortalization services to meet your specific needs. If you have any primary cells requiring immortalization, our team is ready to assist (Cell Immortalization Service).\u003C\/p\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022abm-container-fluid\u0022\u003E\n\u003Cdiv class=\u0022search-box\u0022 id=\u0022search-box\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-row\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-col\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-title\u0022\u003ESELECT CATEGORY\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-items\u0022\u003E\n\u003Cul\u003E\n\u003Cli class=\u0022search-sub-filter-item-radio\u0022\u003E\u003Clabel class=\u0022abm-radio\u0022\u003E\u003Cinput type=\u0022radio\u0022 name=\u0022search-filter_id\u0022 value=\u002214\u0022 \/\u003E\u003Cspan class=\u0022abm-radio-icon\u0022\u003E\u003C\/span\u003E\u003Cspan class=\u0022abm-radio-text\u0022\u003EImmortalized Cells\u003C\/span\u003E\u003C\/label\u003E\u003C\/li\u003E\n\u003Cli class=\u0022search-sub-filter-item-radio\u0022\u003E\u003Clabel class=\u0022abm-radio\u0022\u003E\u003Cinput type=\u0022radio\u0022 name=\u0022search-filter_id\u0022 value=\u002215\u0022 \/\u003E\u003Cspan class=\u0022abm-radio-icon\u0022\u003E\u003C\/span\u003E\u003Cspan class=\u0022abm-radio-text\u0022\u003ETumor Cells\u003C\/span\u003E\u003C\/label\u003E\u003C\/li\u003E\n\u003Cli class=\u0022search-sub-filter-item-radio\u0022\u003E\u003Clabel class=\u0022abm-radio\u0022\u003E\u003Cinput type=\u0022radio\u0022 name=\u0022search-filter_id\u0022 value=\u002216\u0022 checked=\u0022checked\u0022 \/\u003E\u003Cspan class=\u0022abm-radio-icon\u0022\u003E\u003C\/span\u003E\u003Cspan class=\u0022abm-radio-text\u0022\u003EPrimary Cells\u003C\/span\u003E\u003C\/label\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-col\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-title\u0022\u003ESPECIES\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-items\u0022 id=\u0022search-sub-filter-organism-box\u0022\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-col\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-title\u0022\u003EBIO SYSTEM\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-items\u0022 id=\u0022search-sub-filter-tissue_system-box\u0022\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-col\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-title\u0022\u003ECELL TYPE\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-items\u0022 id=\u0022search-sub-filter-tissue-box\u0022\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022search-clear\u0022\u003E\u003Cbutton class=\u0022abm-btn\u0022\u003EClear All\u003C\/button\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022result-box\u0022 id=\u0022result-box\u0022\u003E\n\u003Cdiv class=\u0022result-title\u0022\u003ESEARCH RESULT\u003C\/div\u003E\n\u003Cdiv class=\u0022result-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv id=\u0022result-container\u0022\u003E\u003C\/div\u003E\n\u003Cdiv id=\u0022paginate-container\u0022\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cstyle\u003E\n .search-box *,\n .result-box .result-title {\n font-size: 14px;\n }\n\n .search-filter_id,\n .search-sub-filter {\n width: 100%;\n margin-bottom: 25px;\n }\n\n .search-filter_id-title,\n .search-sub-filter-title,\n .result-title {\n background-color: #EF6331;\n color: #fff;\n width: 100%;\n padding: 0 15px;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: keep-all;\n height: 32px;\n line-height: 32px;\n }\n\n .search-filter_id-line,\n .search-sub-filter-line,\n .result-line {\n width: 100%;\n height: 0;\n background-color: #EF6331;\n }\n\n .search-filter_id-items {\n display: flex;\n flex-wrap: wrap;\n border-top: none;\n align-items: center;\n justify-content: space-around;\n padding: 15px 20px;\n }\n\n .search-filter_id-vertical-line {\n width: 1px;\n font-size: 0;\n background-color: #cacaca;\n }\n\n .search-filter_id-items .abm-radio {\n margin: 5px 15px 5px 0;\n }\n\n .search-sub-filter-row {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr 1fr;\n }\n\n .search-sub-filter-col {\n display: flex;\n flex-direction: column;\n }\n\n .search-sub-filter-items {\n flex: 1;\n padding: 15px;\n border-left: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n }\n\n .search-sub-filter-col:last-child .search-sub-filter-items {\n border-right: 1px solid #ddd;\n }\n\n .search-sub-filter-items ::-webkit-scrollbar {\n width: 10px;\n }\n\n .search-sub-filter-items ::-webkit-scrollbar-track {\n background-color: #eee;\n \/*border-left: 1px solid #ddd;*\/\n \/*border-right: 1px solid #ddd;*\/\n border-radius: 5px;\n }\n\n .search-sub-filter-items ::-webkit-scrollbar-thumb {\n background-color: #ef6331;\n border-radius: 5px;\n }\n\n .search-sub-filter-items ul {\n min-height: 100%;\n height: 200px;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 0;\n margin: -15px;\n }\n\n .search-sub-filter-item, \n .search-sub-filter-item-radio {\n list-style: none;\n padding: 2px 15px;\n cursor: pointer;\n position: relative;\n }\n\n .search-sub-filter-item:hover {\n background-color: #EEE;\n }\n\n .search-sub-filter-item.active,\n .search-sub-filter-item.selected {\n background-color: #CCC;\n }\n\n .search-sub-filter-item-radio label.abm-radio {\n margin-bottom: 0;\n }\n\n .search-sub-filter-item-clear {\n display: none;\n }\n\n .search-sub-filter-item.active .search-sub-filter-item-clear,\n .search-sub-filter-item.selected .search-sub-filter-item-clear {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n right: -1px;\n height: 100%;\n padding: 0 10px;\n background-color: #333;\n color: #fff;\n }\n\n .search-clear {\n text-align: right;\n }\n\n .search-clear button {\n padding: 8px 15px;\n border: 1px solid #EF6331;\n background-color: #EF6331;\n color: #fff;\n border-radius: 4px;\n cursor: pointer;\n opacity: 1;\n transition: .3s;\n }\n\n .search-clear button:not(:disabled):hover {\n opacity: .8;\n }\n\n .search-clear button:disabled {\n opacity: .5;\n cursor: not-allowed;\n }\n\n .result-box {\n margin-top: 50px;\n }\n\n #result-container {\n padding-top: 20px;\n }\n\n #result-container ul {\n list-style: none;\n padding: 0;\n }\n\n .search-result-notice {\n background-color: #f2f2f2;\n padding: 15px 20px;\n margin-bottom: 20px;\n border-radius: 6px;\n }\n\n\n \/* Radio *\/\n .abm-radio {\n display: flex;\n margin-right: 15px;\n align-items: center;\n }\n\n .abm-radio input {\n display: none;\n }\n\n .abm-radio .abm-radio-icon {\n display: block;\n width: 1em;\n height: 1em;\n border-radius: 50%;\n border: 2px solid #ccc;\n margin-right: 5px;\n position: relative;\n }\n\n .abm-radio .abm-radio-text {\n color: #333;\n font-weight: 700;\n }\n\n .abm-radio:hover .abm-radio-icon,\n .abm-radio input:checked+.abm-radio-icon {\n border-color: #EF6331;\n }\n\n .abm-radio:hover .abm-radio-text {\n color: #EF6331;\n }\n\n .abm-radio input:checked+.abm-radio-icon::after {\n content: \u0022\u0022;\n display: block;\n width: 0.5em;\n height: 0.5em;\n background-color: #EF6331;\n border-radius: 50%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n .abm-radio input:checked+.abm-radio-icon+.abm-radio-text {\n color: #EF6331;\n }\n\n .loading {\n display: flex;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n\n .loading-item {\n width: 5px;\n height: 20px;\n background-color: #EF6331;\n\n -webkit-animation: loading 1.2s infinite ease-in-out;\n animation: loading 1.2s infinite ease-in-out;\n }\n\n .loading-item+.loading-item {\n margin-left: 5px;\n }\n\n .loading-item:nth-child(2) {\n -webkit-animation-delay: .1s;\n animation-delay: .1s;\n }\n\n .loading-item:nth-child(3) {\n -webkit-animation-delay: .2s;\n animation-delay: .2s;\n }\n\n .loading-item:nth-child(4) {\n -webkit-animation-delay: .3s;\n animation-delay: .3s;\n }\n\n .loading-item:nth-child(5) {\n -webkit-animation-delay: .4s;\n animation-delay: .4s;\n }\n\n .abm-image-zoomable {\n cursor: zoom-in;\n }\n\n @-webkit-keyframes loading {\n\n 0%,\n 40%,\n 100% {\n -webkit-transform: scaleY(1);\n }\n\n 20% {\n -webkit-transform: scaleY(1.7);\n }\n }\n\n @keyframes loading {\n\n 0%,\n 40%,\n 100% {\n transform: scaleY(1);\n -webkit-transform: scaleY(1);\n }\n\n 20% {\n transform: scaleY(1.7);\n -webkit-transform: scaleY(1.7);\n }\n }\n\n @media screen and (max-width: 768px) {\n .search-sub-filter-row {\n grid-template-columns: 1fr;\n grid-gap: 15px;\n }\n\n .search-sub-filter-items {\n height: unset;\n border-right: 1px solid #ddd;\n }\n\n .abm-search-item-action {\n display: none;\n }\n }\n\u003C\/style\u003E\n\u003Cp\u003E\n\u003Cscript\u003E\n const API = \u0027\/product\/searchApi\u0027;\n\n const DEFAULT_FILTER_ID = 14;\n\n function jump(params = {}, id = \u0027search-box\u0027) {\n let url = generateURL(params, location.origin + location.pathname);\n if (id) {\n scrollToID(id);\n }\n history.pushState(params, \u0027\u0027, url);\n search();\n }\n\n function scrollToID(id) {\n const el = document.getElementById(id);\n if (el) {\n window.scrollTo(0, getOffsetTop(el));\n }\n }\n\n function getOffsetTop(el) {\n let result = el.offsetTop;\n if (el.offsetParent) {\n result += getOffsetTop(el.offsetParent);\n }\n return result;\n }\n\n function getParams(state) {\n const params = [];\n for (const key in state) {\n params.push(`${key}=${state[key]}`);\n }\n return params;\n }\n\n function generateURL(state, base = API) {\n const params = getParams(state);\n if (params \u0026\u0026 params.length) {\n base += \u0027?\u0027 + params.join(\u0027\u0026\u0027);\n }\n return base;\n }\n\n function getDefaultFilterId() {\n return getSearchValueByKey(\u0027filter_id\u0027, DEFAULT_FILTER_ID);\n }\n\n function getSearchValueByKey(key, defaultVal = \u0027\u0027) {\n const search = location.search;\n if (search) {\n const str = search.substring(1);\n const arr = str.split(\u0027\u0026\u0027);\n for (const item of arr) {\n const keyValue = item.split(\u0027=\u0027);\n if (keyValue[0] === key) {\n return keyValue[1];\n }\n }\n }\n return defaultVal;\n }\n\n function search() {\n const historyStateExists = !!history.state;\n\n let state = history.state;\n if (!state) {\n state = { filter_id: getDefaultFilterId() };\n } else if (!state.filter_id) {\n state.filter_id = getDefaultFilterId();\n }\n\n for (const item of [\u0027species_id\u0027, \u0027tissue_system\u0027, \u0027tissue_id\u0027, \u0027page\u0027]) {\n const value = getSearchValueByKey(item);\n if (!state[item] \u0026\u0026 value) {\n state[item] = value;\n }\n }\n\n if (!historyStateExists) {\n history.pushState(Object.assign({}, state), \u0027\u0027);\n }\n\n disableFilterSection();\n fetch(generateURL(state)).then(res =\u003E res.json()).then(res =\u003E {\n if (0 === res.code) {\n renderProducts(res.data.products, res.data.page);\n renderSubFilter({\n organism: res.data.species,\n tissue_system: res.data.tissue_system,\n tissue_id: res.data.tissue\n });\n renderPaginate(res.data.page, res.data.lastPage);\n\n const filterId = state.filter_id;\n document.querySelectorAll(\u0027input[name=\u0022search-filter_id\u0022]\u0027).forEach(el =\u003E {\n el.checked = el.value + \u0027\u0027 === filterId + \u0027\u0027;\n });\n }\n\n enableFilterSection();\n }).catch(() =\u003E {\n enableFilterSection();\n });\n }\n\n function renderProducts(products, currentPage = 1) {\n let html = \u0027\u0027;\n if (currentPage \u003E 1) {\n html += \u0027\u003Cdiv class=\u0022search-result-notice\u0022\u003EProduct not found? Click \u003Ca href=\u0022javascript:;\u0022 onclick=\u0022scrollToID(\\\u0027search-box\\\u0027)\u0022\u003Ehere\u003C\/a\u003E to refine the result.\u003C\/div\u003E\u0027;\n }\n html += \u0027\u003Cul\u003E\u0027;\n for (const product of products) {\n const url = getProductUrl(product);\n const price = getProductPrice(product);\n\n const mediaPart = generateMediaPart(product);\n const categoryPart = generateCategoryPart(product);\n\n html += `\n \u003Cli class=\u0022abm-search-item\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-container\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-header\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-title\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-name\u0022\u003E\n \u003Ca class=\u0022abm-link\u0022 href=\u0022${url}\u0022 title=\u0022${product.name}\u0022\u003E${product.name}\u003C\/a\u003E\n \u003C\/div\u003E\n ${categoryPart}\n \u003C\/div\u003E\n \u003Cdiv class=\u0022abm-search-item-action\u0022\u003E\n \u003Ca class=\u0022btn abm-btn btn-block\u0022 href=\u0022${url}\u0022 title=\u0022${product.name}\u0022\u003EView Product\u003C\/a\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n \u003Chr class=\u0022abm-search-item-hr\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-body\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-content\u0022\u003E\n \u003Cul class=\u0022abm-search-item-content-base\u0022\u003E\n \u003Cli\u003E\n \u003Cspan class=\u0022attribute\u0022\u003ECat. No.:\u003C\/span\u003E\n \u003Cspan class=\u0022attribute-value\u0022\u003E${product.cat_no}\u003C\/span\u003E\n \u003C\/li\u003E\n \u003Cli\u003E\n \u003Cspan class=\u0022attribute\u0022\u003EPrice:\u003C\/span\u003E\n \u003Cspan class=\u0022attribute-value\u0022\u003E${price}\u003C\/span\u003E\n \u003C\/li\u003E\n \u003Cli\u003E\n \u003Cspan class=\u0022attribute\u0022\u003EUnit:\u003C\/span\u003E\n \u003Cspan class=\u0022attribute-value\u0022\u003E${product.unit_quantity}\u003C\/span\u003E\n \u003C\/li\u003E\n \u003C\/ul\u003E\n \u003C\/div\u003E\n ${mediaPart}\n \u003C\/div\u003E\n \u003C\/div\u003E\n \u003C\/li\u003E\n `;\n }\n html += \u0027\u003C\/ul\u003E\u0027;\n\n document.querySelector(\u0027#result-container\u0027).innerHTML = html;\n }\n\n function getProductUrl(product) {\n if (product.seo \u0026\u0026 product.seo.url_key) {\n return \u0027\/\u0027 + ltrim(product.seo.url_key, \u0027\/\u0027);\n }\n\n const type = product.model_type.substr(22).toLowerCase();\n return \u0027\/catalog\/products\/\u0027 + product.id + \u0027\/type\/\u0027 + type;\n }\n\n function getProductPrice(product) {\n return isNaN(Number(product.geo_price)) ? (product.geo_price || (\u0027$\u0027 + (Number(product.price) || 0).toFixed(2))) : (\u0027$\u0027 + (Number(product.geo_price) || 0).toFixed(2));\n }\n\n function generateMediaPart(product) {\n let html = \u0027\u0027;\n if (product.media \u0026\u0026 product.media.length) {\n html += \u0027\u003Cdiv class=\u0022abm-search-item-media abm-image-zoomable\u0022\u003E\u0027\n + \u0027\u003Cdiv class=\u0022carousel slide\u0022 data-ride=\u0022carousel\u0022\u003E\u0027\n + \u0027\u003Cdiv class=\u0022carousel-inner\u0022 role=\u0022listbox\u0022\u003E\u0027\n\n let active = true;\n for (const media of product.media) {\n html += `\n \u003Cdiv class=\u0022item ${active ? \u0027active\u0027 : \u0027\u0027}\u0022\u003E\n \u003Cimg src=\u0022\/assets\/product\/${media.file_path}\u0022 alt=\u0022\u0022\u003E\n \u003C\/div\u003E\n `;\n active = false;\n }\n html += \u0027\u003C\/div\u003E\u003C\/div\u003E\u003C\/div\u003E\u0027;\n }\n\n return html;\n }\n\n function generateCategoryPart(product) {\n return \u0027\u0027;\n let html = \u0027\u0027;\n if (product.category) {\n html += `\n \u003Cdiv class=\u0022abm-search-item-item-type\u0022\u003E\n \u003Ca href=\u0022${product.category.url_key}\u0022\u003E${product.category.categories}\u003C\/a\u003E\n \u003C\/div\u003E\n `;\n }\n return html;\n }\n\n function ltrim(str, charlist) {\n if (charlist === undefined)\n charlist = \u0022\\s\u0022;\n return str.replace(new RegExp(\u0022^[\u0022 + charlist + \u0022]+\u0022), \u0022\u0022);\n }\n\n function renderSubFilter(subFilter, selected = null) {\n const organism = subFilter.organism;\n const importantList = [];\n for (const item of organism) {\n if (isImportant(item)) {\n item.is_important = true;\n importantList.unshift(item);\n const pos = organism.indexOf(item);\n organism.splice(pos, 1);\n }\n }\n for (const item of importantList) {\n organism.unshift(item);\n }\n const organismHtml = renderFilterUl(organism, \u0027species_id\u0027);\n\n document.querySelector(\u0027#search-sub-filter-organism-box\u0027).innerHTML = organismHtml;\n\n const tissueId = subFilter.tissue_id;\n const tissueHtml = renderFilterUl(tissueId, \u0027tissue_id\u0027);\n\n document.querySelector(\u0027#search-sub-filter-tissue-box\u0027).innerHTML = tissueHtml;\n\n const tissueSystem = subFilter.tissue_system;\n const tissueSystemHtml = renderFilterUl(tissueSystem, \u0027tissue_system\u0027);\n document.querySelector(\u0027#search-sub-filter-tissue_system-box\u0027).innerHTML = tissueSystemHtml;\n\n eventListener(\u0027.search-sub-filter-item\u0027, \u0027click\u0027, handleSubFilterClick);\n eventListener(\u0027.search-sub-filter-item-clear\u0027, \u0027click\u0027, handleClearSubFilter);\n }\n\n function isImportant(item) {\n const importantList = [\u0027Human\u0027, \u0027Mouse\u0027, \u0027Rat\u0027];\n for (const importantItem of importantList) {\n if (item.value.includes(importantItem)) {\n return true;\n }\n }\n return false;\n }\n\n function eventListener(selector, event, callback) {\n document.querySelectorAll(selector).forEach(el =\u003E {\n el.removeEventListener(event, callback);\n el.addEventListener(event, callback);\n });\n }\n\n function handleSubFilterClick() {\n if (!this.classList.contains(\u0027active\u0027)) {\n const key = this.dataset.key;\n const value = this.dataset.id;\n\n const state = history.state || {};\n state[key] = value;\n if (state.page) {\n delete state.page;\n }\n jump(state);\n }\n }\n\n function handleClearSubFilter(e) {\n e.stopPropagation();\n const parent = this.parentNode;\n const key = parent.dataset.key;\n const state = history.state;\n if (state \u0026\u0026 state.hasOwnProperty(key)) {\n delete state[key];\n }\n jump(state);\n }\n\n function renderFilterUl(items, key) {\n let html = \u0027\u003Cul\u003E\u0027;\n for (const item of items) {\n if (item.id \u0026\u0026 item.count \u003E 0) {\n html += `\n \u003Cli class=\u0022search-sub-filter-item ${item.selected}\u0022 data-key=\u0022${key}\u0022 data-id=\u0022${item.id}\u0022\u003E\n \u003Cspan\u003E${item.is_important ? (\u0027\u003Cstrong\u003E\u0027 + item.value + \u0027\u003C\/strong\u003E\u0027) : item.value}\u003C\/span\u003E\n \u003Cdiv class=\u0022search-sub-filter-item-clear\u0022\u003EX\u003C\/div\u003E\n \u003C\/li\u003E\n `;\n }\n }\n html += \u0027\u003C\/ul\u003E\u0027;\n\n return html;\n }\n\n function renderPaginate(currentPage, totalPage) {\n let html = \u0027\u0027;\n currentPage = Math.min(Math.max(1, currentPage), totalPage);\n\n if (totalPage !== 1) {\n html = \u0027\u003Cnav aria-label=\u0022Page navigation\u0022\u003E\u003Cul class=\u0022pager\u0022\u003E\u0027 +\n \u0027\u003Cli class=\u0022previous\u0027 + (currentPage === 1 ? \u0027 disabled\u0027 : \u0027\u0027) + \u0027\u0022\u003E\u003Ca href=\u0022javascript:void(0);\u0022 data-page=\u0022\u0027 + (currentPage - 1) + \u0027\u0022\u003E\u003Cspan aria-hidden=\u0022true\u0022\u003E\u0026larr;\u003C\/span\u003E Previous\u003C\/a\u003E\u003C\/li\u003E\u0027 +\n \u0027\u003Cli class=\u0022next\u0027 + (currentPage === totalPage ? \u0027 disabled\u0027 : \u0027\u0027) + \u0027\u0022\u003E\u003Ca href=\u0022javascript:void(0);\u0022 data-page=\u0022\u0027 + (currentPage + 1) + \u0027\u0022\u003ENext \u003Cspan aria-hidden=\u0022true\u0022\u003E\u0026rarr;\u003C\/span\u003E\u003C\/a\u003E\u003C\/li\u003E\u0027 +\n \u0027\u003C\/ul\u003E\u003C\/nav\u003E\u0027;\n }\n\n document.getElementById(\u0027paginate-container\u0027).innerHTML = html;\n\n eventListener(\u0027#paginate-container a\u0027, \u0027click\u0027, handlePaginateClick);\n }\n\n function handlePaginateClick() {\n if (this.parentNode.classList.contains(\u0027disabled\u0027)) {\n return;\n }\n const state = history.state || {};\n state.page = this.dataset.page;\n jump(state, \u0027result-box\u0027);\n }\n\n function disableFilterSection() {\n const el = document.querySelector(\u0027.search-box\u0027);\n el.style.position = \u0027relative\u0027;\n addShadow(el, \u0027shadow-search-box\u0027, true);\n\n const elResult = document.querySelector(\u0027.result-box\u0027);\n elResult.style.position = \u0027relative\u0027;\n addShadow(elResult, \u0027shadow-result-box\u0027);\n\n document.querySelector(\u0027.search-clear button\u0027).disabled = false;\n }\n\n function addShadow(elem, id, addLoading = false) {\n const el = document.getElementById(id);\n if (el) {\n el.style.display = \u0027block\u0027;\n el.style.opacity = 1;\n return;\n }\n\n elem.insertAdjacentHTML(\u0027beforeEnd\u0027, genearteShadow(id, addLoading));\n }\n\n function removeShadow(id) {\n const el = document.getElementById(id);\n if (el) {\n el.style.opacity = 0;\n setTimeout(function () {\n el.style.display = \u0027none\u0027;\n }, 500);\n }\n }\n\n function genearteShadow(id, addLoading = false) {\n let html = `\u003Cdiv id=\u0022${id}\u0022 style=\u0022position: absolute; left: 0; top: 0; right: 0; bottom: 0; background-color: rgba(255, 255, 255, .9); z-index: 100; transition: .5s;\u0022\u003E`;\n if (addLoading) {\n html += \u0027\u003Cdiv class=\u0022loading\u0022\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003C\/div\u003E\u0027\n }\n html += `\u003C\/div\u003E`;\n\n return html;\n }\n\n function enableFilterSection() {\n removeShadow(\u0027shadow-search-box\u0027);\n removeShadow(\u0027shadow-result-box\u0027);\n document.querySelector(\u0027.search-clear button\u0027).disabled = !document.querySelector(\u0027.search-sub-filter-item.active\u0027);\n }\n\n search();\n\n document.querySelectorAll(\u0027input[name=\u0022search-filter_id\u0022]\u0027).forEach(el =\u003E {\n el.addEventListener(\u0027change\u0027, function () {\n if (el.classList.contains(\u0027prevent\u0027)) {\n return false;\n }\n\n document.querySelector(\u0027input[name=\u0022search-filter_id\u0022][value=\u0022\u0027 + DEFAULT_FILTER_ID + \u0027\u0022]\u0027).checked = true;\n\n switch (el.value + \u0027\u0027) {\n case \u002714\u0027:\n location.href = \u0027\/Immortalized-Cell-Lines.html\u0027;\n break;\n case \u002715\u0027:\n location.href = \u0027\/Tumor-Cell-Lines.html\u0027;\n break;\n case \u002716\u0027:\n location.href = \u0027\/Primary-Cells.html\u0027;\n break;\n default:\n jump({ filter_id: el.value });\n }\n });\n });\n\n document.querySelector(\u0027.search-clear button\u0027).addEventListener(\u0027click\u0027, () =\u003E {\n jump({\n filter_id: getDefaultFilterId()\n });\n });\n\n \/\/----------------\n \/\/ \u56fe\u7247\u653e\u5927 START\n \/\/----------------\n document.addEventListener(\u0027click\u0027, (e) =\u003E {\n const elements = document.querySelectorAll(\u0027.abm-image-zoomable\u0027);\n let curr = null;\n for (const element of elements) {\n if (element.contains(e.target)) {\n curr = element;\n break;\n }\n }\n\n if (!curr) {\n return false;\n }\n\n abmImageZoom(curr);\n });\n\n function abmImageZoom(el) {\n const images = el.querySelectorAll(\u0027img\u0027);\n const id = \u0027abm-image-zoom-carousel-\u0027 + parseInt(new Date().getTime());\n let items = \u0027\u0027;\n let hasActive = false;\n let active = null;\n for (const image of images) {\n const parent = image.parentElement;\n if (parent \u0026\u0026 parent.classList.contains(\u0027active\u0027)) {\n active = image;\n break;\n }\n }\n\n for (const image of images) {\n let activeClass = \u0027\u0027;\n if (active) {\n activeClass = active === image ? \u0027active\u0027 : \u0027\u0027;\n } else {\n activeClass = hasActive ? \u0027\u0027 : \u0027active\u0027;\n }\n items += `\u003Cdiv class=\u0022item ${activeClass}\u0022\u003E\u003Cimg src=\u0022${image.src}\u0022\u003E\u003C\/div\u003E`;\n hasActive = true;\n }\n if (!items) {\n return false;\n }\n items += `\u003Cstyle\u003E#abm-image-zoomable-modal .modal-dialog { max-width: 1200px; }\n #${id} .carousel-inner .item { position: relative; width: 100%; padding-top: 66.67%; overflow: hidden; }\n #${id} .carousel-inner .item.active.left, #${id} .carousel-inner .item.active.right { position: absolute; top: 0; }\n #${id} .carousel-inner .item img { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); max-width: 100%; max-height: 100%; }\n #${id} .carousel-control { display: none; color: #EF6331; }`;\n if (images.length \u003E 1) {\n items += ` #${id}:hover .carousel-control { display: block; }`;\n }\n items += \u0027\u003C\/style\u003E\u0027;\n\n const zoomModalEl = document.createElement(\u0027div\u0027);\n zoomModalEl.id = \u0027abm-image-zoomable-modal\u0027;\n zoomModalEl.classList.add(\u0027modal\u0027, \u0027fade\u0027);\n zoomModalEl.setAttribute(\u0027tabindex\u0027, \u0027-1\u0027);\n zoomModalEl.setAttribute(\u0027role\u0027, \u0027dialog\u0027);\n zoomModalEl.setAttribute(\u0027aria-hidden\u0027, \u0027true\u0027);\n let html = `\n \u003Cdiv class=\u0022modal-dialog\u0022\u003E\n \u003Cdiv class=\u0022modal-content\u0022\u003E\n \u003Cdiv class=\u0022modal-body\u0022\u003E\n \u003Cdiv id=\u0022${id}\u0022 class=\u0022carousel slide\u0022 data-ride=\u0022carousel\u0022 data-interval=\u0022\u0022\u003E\n \u003C!-- Wrapper for slides --\u003E\n \u003Cdiv class=\u0022carousel-inner\u0022 role=\u0022listbox\u0022\u003E${items}\u003C\/div\u003E\n\n \u003C!-- Controls --\u003E\n \u003Ca class=\u0022left carousel-control\u0022 href=\u0022#${id}\u0022 role=\u0022button\u0022 data-slide=\u0022prev\u0022\u003E\n \u003Cspan class=\u0022glyphicon glyphicon-chevron-left\u0022 aria-hidden=\u0022true\u0022\u003E\u003C\/span\u003E\n \u003Cspan class=\u0022sr-only\u0022\u003EPrevious\u003C\/span\u003E\n \u003C\/a\u003E\n \u003Ca class=\u0022right carousel-control\u0022 href=\u0022#${id}\u0022 role=\u0022button\u0022 data-slide=\u0022next\u0022\u003E\n \u003Cspan class=\u0022glyphicon glyphicon-chevron-right\u0022 aria-hidden=\u0022true\u0022\u003E\u003C\/span\u003E\n \u003Cspan class=\u0022sr-only\u0022\u003ENext\u003C\/span\u003E\n \u003C\/a\u003E\n \u003C\/div\u003E\n \u003Cdiv class=\u0022abm-mt-3\u0022\u003E\n \u003Cbutton type=\u0022button\u0022 class=\u0022btn abm-btn abm-w-100\u0022 data-dismiss=\u0022modal\u0022\u003EClose\u003C\/button\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n `;\n zoomModalEl.innerHTML = html;\n document.body.appendChild(zoomModalEl);\n const $el = $(zoomModalEl);\n $el.modal(\u0027show\u0027);\n $el.on(\u0027hidden.bs.modal\u0027, function () {\n zoomModalEl.remove();\n });\n }\n \/\/----------------\n \/\/ \u56fe\u7247\u653e\u5927 END\n \/\/----------------\n\n window.onpopstate = function () {\n \/\/ \u76f4\u63a5\u8fd4\u56de\u4e0a\u4e00\u7ea7\u9875\u9762\n history.back();\n return false;\n if (!history.state) {\n history.back();\n }\n search();\n }\n \u003C\/script\u003E\n\u003C\/p\u003E","meta_title":"Immortalized Cells","meta_keywords":"Immortalized cell lines, Cell biology, Cell culture, abm, Primary cells, Mycoplasma detection and elimination, Growth factors and cytokines, Cell immortalization service, Cell characterization, Cell culture methods","meta_description":"abm offers over 400 immortalized cell lines from various organisms, tissue systems, and tissues1. Discover our high-quality and affordable solutions for your cell biology research.","deleted_at":null,"enable":"Y","parent_list":"18","table_name":"abm_catalog_cellular","image":null,"independentPage":0,"top_type":1,"sort_order":201,"in_footer":1,"fid":18,"created_at":null,"updated_at":"2025-04-05 01:14:02"},"info":{"id":849,"cat_no_base":"T0788","parent_id":40630,"image":null,"price-original":null,"description":"\u003Cp\u003ENCL-2 is the only mast line cell line existing without Kit gene mutation derived from NC mouse bone marrow. NCL-2 cells could be maintained without additional growth factors and thus could respond to exogenous growth signals. Moreover, NCL-2 cells expressed \u003Cstrong\u003EFceRI and KIT\u003C\/strong\u003E, and release histamine and LTB4 in response to antigen stimulation. This cell line could be a useful tool to analyze proliferation, differentiation, and function of normal mast cells.\u003C\/p\u003E","shipment_type":null,"internal_leadtime":"0","lysate_type":null,"small_image":null,"growth_factor_size":null,"gene_name_no_use":null,"mammalian_selection_marker":null,"mammalian_selection_text":null,"storage_condition":"Vapor phase of liquid nitrogen, or below -130\u00b0C.","str_profiles":null,"species_description":null,"cost":null,"note":"\u003Cp\u003EMost immortalized mast cell lines are tumour cell lines, and carry a gain-of-function mutation of Kit. Immortalized Mast Cells (NCL-2) is derived from NC mouse bone marrow, and does not carry a Kit mutation. NLC-2 can respond to exogenous growth signals SCF and IL-3, and releases various chemical mediators against several stimuli including crosslinking of Fc \u03b5RI. This cell line could be a useful tool to analyze proliferation, differentiation, and function of normal mast cells.\u003C\/p\u003E","family":null,"overexpressed_gene":null,"diameter":null,"appearance":null,"pluripotency":null,"recommended_medium_volume":null,"medium":"MEM-alpha + 10% FBS + 50 uM B-me + 2 mM L-glu + 5 ng\/mL IL-3\r\n33 degree","alias":null,"tier_price":null,"operator_no_use":null,"addtime":null,"cell_line":null,"price_type":null,"gallery":null,"cell_growth_area":null,"cell_morphology":"Round","expression_system_type":null,"gene_symbol":null,"insert_size":null,"msrp":null,"msrp_display_actual_price_type":null,"cell_morphology_specification":null,"tax_class_id":2,"inventory_location":"D10R1B1 (B1-B5); D5 (E3, E4, F5-F6)","vector":null,"internal_note":null,"component":null,"quantity_and_stock_status":null,"vector_url":null,"application":"\u003Cp\u003EResearch Use Only.\u003C\/p\u003E","minimal_price":null,"seeding_density":null,"seeding_density_cm":null,"seeding_density_ml":"150,000 - 200,000","source":null,"source_catno":"3950\/7950","osmolarity":null,"weight":null,"royalty_rates":null,"population_doubling_time":"30","source_price":null,"weight_type":null,"ph":null,"licensor_commission_rate":null,"supplier":null,"donor_gender":"Male","appearance_general":null,"sterility":null,"molecular_weight":null,"endotoxin_level":null,"donor_age":null,"news_from_date":null,"news_to_date":null,"expression_system_general":null,"donor_disease":null,"purity":null,"country_of_manufacture":null,"donor_ethnicity":null,"image_label":null,"biological_activity_text":null,"cart2quote_quotable":"2","biosafety":"II","product_quote":0,"small_image_label":null,"immortalization_method":"Spontaneous immortalization","bioactivity_data":null,"formulation":null,"thumbnail_label":null,"mammalian_selection":null,"isolation_method":null,"function":null,"reconstitution":null,"growth_properties":"\u003Cp\u003ESuspension, round\u003C\/p\u003E","expression_profile":"\u003Cp\u003EFc \u0026epsilon;RI, KIT\u003C\/p\u003E","storage":null,"propagation_method":"\u003Cp\u003EThe base medium for this cell line is Prigrow VIII medium available at\u0026nbsp;\u003Cstrong\u003Eabm\u003C\/strong\u003E, Cat. No.\u003Ca href=\u0022\/prigrow-viii-medium-tm018.html#TM018\u0022\u003ETM018\u003C\/a\u003E\u0026nbsp;or Prigrow II medium available at\u0026nbsp;\u003Cstrong\u003Eabm\u003C\/strong\u003E, Cat. No.\u003Ca href=\u0022\/prigrow-ii-medium-tm002.html#TM002\u0022\u003ETM002\u003C\/a\u003E. To make the complete growth medium, add the following components to the base medium: fetal bovine serum (\u003Ca href=\u0022\/usda-research-grade-origin-fetal-bovine-serum-tm999-500.html#TM999\u0022\u003ETM999\u003C\/a\u003E)* to a final concentration of 10%, Penicillin\/Streptomycin Solution (\u003Ca href=\u0022\/penicillin-streptomycin-solution-g255.html#G255\u0022\u003EG255\u003C\/a\u003E) to a final concentration of 1%, \u0026beta;-mercaptoethanol to a final concentration of 50 \u0026mu;M, L-glutamine (\u003Ca href=\u0022\/l-glutamine-g275.html#G275\u0022\u003EG275\u003C\/a\u003E) to a final concentration of 2 mM, and Recombinant Mouse IL3 (\u003Ca href=\u0022\/recombinant-mouse-il3-e-coli-10000273.html#Z200145\u0022\u003EZ200145\u003C\/a\u003E) to a final concentration of 5 ng\/mL.\u003Cbr \/\u003ECarbon dioxide (CO\u003Csub\u003E2\u003C\/sub\u003E): 5%, Temperature: 33.0\u0026deg;C.\u003Cbr \/\u003E\u003Cstrong\u003E* Do not use heat-inactivated FBS for cell culture unless specified otherwise.\u003C\/strong\u003E\u003C\/p\u003E","usage":null,"freeze_thaw_recovery":null,"str_profile":null,"str_markers":"","subculture_protocol":"\u003Cp\u003E1. Simply add fresh complete media directly to the culture. Do not allow cell density to exceed 1x10\u2076 cells\/ml.\u003C\/p\u003E\n\u003Cp\u003E2. Alternatively, replace complete growth media by centrifugation and re-suspend the cell pellet in fresh complete media, and add appropriate aliquots of the cell suspension to new culture vessels, as desired.\u003C\/p\u003E\n\u003Cp\u003E3. Incubate the cells at the recommended conditions.\u003C\/p\u003E","preservation_protocol":"1. Freeze Medium: 90% FBS and 10% DMSO.\u003Cbr\u003E2. Storage Temperature: Liquid nitrogen vapour phase.","passage_number":null,"qc":"\u003Cp\u003E1) Flow cytometry\u003C\/p\u003E","shipping_conditions":"\u003Cp\u003EShip with dry ice.\u003C\/p\u003E","disclaimer_general":"\u003Cp\u003E1. Sale of this item is subjected to the completion of a Material Transfer Agreement (MTA) by the purchasing individual\/institution for each cell line. If you have any questions regarding this, please contact us at \u003Ca href=\u0022mailto:licensing@abmgood.com\u0022\u003Elicensing@abmgood.com\u003C\/a\u003E.\u003C\/p\u003E\n\u003Cp\u003E2. All test parameters provided in the CoA are conducted using \u003Cstrong\u003Eabm\u003C\/strong\u003E\u0027s standardized culture system and The stated values may vary under the end-user\u0027s culture conditions. Please verify that the product is suitable for your studies by referencing published papers or ordering RNA (0.5 \u0026mu;g, Cat.# C207, $450.00) or cell lysate (100 \u0026mu;g, Cat.# C206, $600.00) to perform preliminary experiments, or alternatively use our Gene Expression Assay Service (Cat# C138). All sales are final.\u003C\/p\u003E\n\u003Cp\u003E3. We recommend live cell shipments for ease of cell transfer and this option can be requested at the time of order placement. Please note that the end-user will need to evaluate the feasibility of live cell shipment by taking into account the final destination\u0027s temperature variation and its geographical location.\u003C\/p\u003E\n\u003Cp\u003E4. All of \u003Cstrong\u003Eabm\u003C\/strong\u003E\u0027s cell biology products are for research use ONLY and NOT for therapeutic\/diagnostic applications. \u003Cstrong\u003Eabm\u003C\/strong\u003E is not liable for any repercussions arising from the use of its cell biology product(s) in therapeutic\/diagnostic or any other non-RUO application(s).\u003C\/p\u003E\n\u003Cp\u003E5. \u003Cstrong\u003Eabm\u003C\/strong\u003E makes no warranties or representations as to the accuracy of the information on this site. Citations from literature are provided for informational purposes only. \u003Cstrong\u003Eabm\u003C\/strong\u003E does not warrant that such information has been shown to be accurate.\u003C\/p\u003E\n\u003Cp\u003E6. \u003Cstrong\u003Eabm\u003C\/strong\u003E warrants that cell lines shall be viable upon initiation of culture for a period of thirty (30) days after shipment and that they shall meet the specifications on the applicable \u003Cstrong\u003Eabm\u003C\/strong\u003E Material Product Information sheet, certificate of analysis, and\/or catalog description. Such thirty (30) day period is referred to herein as the \u0022Warranty Period\u0022.\u003C\/p\u003E","caution":null,"transfection_reagents_type":null,"licensed_by":null,"licensed_from":"Hiroshima University","licensing_institution":null,"guarantee":null,"depositor":"Hiroshima University","licensor_name":null,"licensor_contact_information":null,"contract_termination_date":null,"links_purchased_separately":null,"samples_title":null,"links_title":null,"links_exist":null,"internal_supplier":"ABM","internal_product_note":"\u003Cp\u003ELicensed from: Hiroshima University\u003C\/p\u003E","donor_history":"Male, NC mouse","split_ratio":null,"expression":"\u003Cp\u003EFc \u0026epsilon;RI, KIT\u003C\/p\u003E","growth_conditions":"PriGrow VIII (\u003Ca class=\u0022abm-link\u0022 href=\u0022\/prigrow-viii-medium-tm018.html\u0022\u003ETM018\u003C\/a\u003E) + 10% FBS + 50 \u03bcM \u03b2-mercaptoethanol + 2 mM L-glutamine + 5 ng\/ml IL3 (Z200145) + 1% Penicillin\/Streptomycin Solution (\u003Ca class=\u0022abm-link\u0022 href=\u0022\/penicillin-streptomycin-solution-g255.html\u0022\u003EG255\u003C\/a\u003E), 33.0\u00b0C, 5% CO\u2082","recommend":"\u003Cp\u003EWorried about losing your cells due to growth or thawing difficulties, or even a random freezer breakdown? Enjoy peace of mind knowing that you can be covered under\u00a0\u003Cstrong\u003Eabm\u003C\/strong\u003E\u0027s\u00a0\u003Ca class=\u0022abm-link\u0022 href=\u0022\/cell-line-insurance.html\u0022\u003ECell Line Insurance\u003C\/a\u003E.\u003C\/p\u003E\r\n\u003Cp\u003ESale of this item is subjected to the completion of a Material Transfer Agreement (MTA) by the purchasing institution.\u003C\/p\u003E\r\n\u003Cp\u003EFor for-profit organizations, please contact \u003Ca class=\u0022abm-link\u0022 href=\u0022mailto:quotes@abmgood.com\u0022\u003Equotes@abmgood.com\u003C\/a\u003E for pricing.\u003C\/p\u003E ","references":"\u003Cp\u003EHiragun, T., Yanase, Y., Okabe, T., Hiragun, M., Kawai, M., \u0026amp; Hide, M. (2014). Establishment of a mast cell line, NCL-2, without Kit mutation, derived from NC mouse bone marrow. FEBS open bio, 4, 342-6. doi:10.1016\/j.fob.2014.03.011\u003C\/p\u003E","cryopreservation":"\u003Cp\u003ECryopreservation Medium (TM024), or complete growth media with 10% DMSO.\u003C\/p\u003E","unpacking_storage_instructions":"\u003Cp\u003E1. Visually examine the packaging containers for signs of leakage or breakage.\u003C\/p\u003E\n\u003Cp\u003E2. Immediately transfer frozen cells from dry ice packaging to a temperature below -130\u0026deg;C, preferably in liquid nitrogen vapor phase storage, until ready for use.\u003C\/p\u003E\n\u003Cp\u003ETo ensure the highest level of viability, thaw the vial and initiate culture as soon as possible upon receipt. If continued storage is desired, the vial should only be stored below -130\u0026deg;C or in liquid nitrogen vapor phase. Do not store at -70\u0026deg;C, as it will result in loss of viability.\u003C\/p\u003E\n\u003Cp\u003E\u0026nbsp;\u003C\/p\u003E","promotions":null,"sync_images":"","thawing_protocol":"\u003Cp\u003E1. Thaw cells quickly in a 37\u0026deg;C water bath while agitating gently (maximum 2 minutes). The vial cap should be kept above the water level to minimize the risk of contamination.\u003C\/p\u003E\n\u003Cp\u003E2. Decontaminate the vial by spraying and wiping the exterior of the vial with 70% ethanol. From this point onwards, all operations should be strictly carried out inside a biological safety cabinet using aseptic conditions.\u003C\/p\u003E\n\u003Cp\u003E3. Transfer the cell suspension into a 15ml sterile conical tube containing 5ml of pre-warmed, complete growth media. Centrifuge cells at 125xg for 5-7 minutes.\u003C\/p\u003E\n\u003Cp\u003E4. Aspirate the supernatant without disturbing the cell pellet. Re-suspend the cell pellet in the recommended pre-warmed, complete growth media and dispense into a T25 culture flask.\u003C\/p\u003E\n\u003Cp\u003E5. Incubate the cells at the recommended conditions.\u003C\/p\u003E","type_online":null,"parental_cell_line":null,"mutation_and_validations":null,"knockout_method":null,"clone_no":null,"created_at":"2022-09-07 08:13:18","updated_at":"2025-02-13 19:02:35","concentration":null},"seo":{"id":66681,"catalog_id":40630,"catalog_type":"App\\Models\\CatalogBaseCells","url_key":"immortalized-mast-cells-ncl-2.html","meta_title":"Immortalized Mast Cells (NCL-2)","meta_keywords":"Immortalized Mast Cells (NCL-2)","meta_description":"Immortalized Mast Cells (NCL-2)","created_at":"2022-09-23 06:53:13","updated_at":"2025-02-13 19:02:35"},"media":[{"id":388467,"parent_id":40630,"parent_type":"App\\Models\\CatalogBaseCells","file_path":"\/upload\/rHyKxU1nKR6jFHFWh1QxKpDWv1uL5QmtmtHqiEv1.png","title":null,"text":null,"file_type":"image","alt":null,"url":null,"position":null,"status":1,"entity_id_m2":null,"sku_in_m2":null,"value_id_m2":null,"attribute_id":0,"created_at":"2025-02-18 19:00:05","updated_at":"2025-02-18 19:00:05"},{"id":388291,"parent_id":40630,"parent_type":"App\\Models\\CatalogBaseCells","file_path":"\/upload\/dPmAy3yBx4LvigMwRT2uvIsh2naryQ97Zd8VZEJp.png","title":null,"text":null,"file_type":"image","alt":null,"url":null,"position":1,"status":1,"entity_id_m2":null,"sku_in_m2":null,"value_id_m2":null,"attribute_id":0,"created_at":"2025-02-18 18:58:44","updated_at":"2025-02-18 18:58:50"},{"id":388213,"parent_id":40630,"parent_type":"App\\Models\\CatalogBaseCells","file_path":"\/upload\/MQRLklawcmDLeVmIFxRPdH3VYmxhzQWJd8ygKQrg.png","title":null,"text":null,"file_type":"image","alt":null,"url":null,"position":2,"status":1,"entity_id_m2":null,"sku_in_m2":null,"value_id_m2":null,"attribute_id":0,"created_at":"2025-02-13 19:02:32","updated_at":"2025-02-18 18:58:50"}],"gene":null}