Null Mutation of AtCUL1 Causes Arrest in Early Embryogenesis in Arabidopsis
- 格式:pdf
- 大小:1.70 MB
- 文档页数:13
mybatis evaluated to a null value -回复MyBatis is a popular framework used for mapping database operations to object-oriented programming. It allows developers to easily interact with databases using SQL statements or stored procedures. However, sometimes you may encounter a scenario where MyBatis evaluates to a null value. In this article, we will explore what might cause this issue and discuss step-by-step troubleshooting techniques to identify and fix the problem.Before diving into the troubleshooting steps, let's understand what it means when MyBatis evaluates to a null value. When using MyBatis, you typically define and execute SQL queries to retrieve data from the database. The result of these queries is then mapped to a Java object or collection of objects. However, there are situations where you may receive a null value instead of the expected result.So, let's begin troubleshooting the issue step-by-step:1. Verify the SQL query: The first step is to ensure that the SQL query being executed is correct. Check if the query syntax is accurate and if it returns the expected result when executeddirectly against the database. This can be done using a database management tool such as MySQL Workbench or pgAdmin.2. Check the mapping configuration: MyBatis relies on mapping configuration files to associate the query result with Java objects. These configuration files define how the columns from the result set are mapped to the object properties. Review the mapping configuration and verify that it accurately corresponds to the database schema and the Java object structure.3. Examine the result mapping: MyBatis provides various ways to map the query result to Java objects. Ensure that the result mapping is correctly defined in the mapping configuration. This includes checking if the column names in the query result match the property names in the Java object and that the appropriate data types are used.4. Validate parameter bindings: If the evaluated null value is related to input parameters, ensure that the parameter bindings are correct. Check if the parameter values are set correctly before executing the query. Additionally, verify that the parameter types are compatible with the database column types.5. Check the database connection: This step involves verifying the database connection configuration. Ensure that the connection properties, such as the URL, username, and password, are correctly configured. Test the connection to ensure that the connection to the database server is successful.6. Configure logging: Enable logging in MyBatis to get more insights into the execution process. Configure a logging framework, such as Log4j or SLF4J, and set the logging level to a more detailed setting. This will help you capture and analyze the MyBatis execution logs, which can provide valuable clues about the null value issue.7. Debug the code: Use a debugger to step through the code and inspect the execution flow. This can help identify any logical errors or unexpected conditions that could lead to a null value.8. Check for exception handling: Verify if MyBatis throws any exceptions during the execution. Exception handling is critical to identify potential issues and handle them gracefully. Review the code for any try-catch blocks and ensure that exceptions areproperly caught and logged.9. Test with sample data: Create a minimalistic test case with sample data to reproduce the null value issue. Simplify the query and mapping configuration to isolate the problem. This process can help narrow down the problem area and provide better focus for debugging.10. Seek support from the community: If the issue persists despite following the above steps, reach out to the MyBatis community for assistance. Post your question on forums or ask for help on platforms like Stack Overflow. Providing detailed information about your setup, code snippets, and error messages will allow others to understand and assist with your issue effectively.In conclusion, when MyBatis evaluates to a null value, it can be indicative of various underlying issues with SQL queries, mapping configurations, parameter bindings, or other factors. By thoroughly reviewing each step and following the troubleshooting techniques outlined above, you can identify and resolve the problem effectively. Remember, careful analysis and attention todetail are key in isolating the root cause and finding a suitable solution.。
【argumentnullexception卫语句】【导言】在编程领域中,argumentnullexception卫语句是一个非常重要的概念。
它不仅涉及到代码的健壮性和可靠性,还直接影响着程序的稳定性和表现。
在本文中,我将从多个角度对argumentnullexception卫语句进行全面评估,并共享我的理解和观点。
希望通过本文的深入探讨,能够对这一概念有更加全面、深刻的认识。
【1. 什么是argumentnullexception卫语句】argumentnullexception是C#中的一种异常类型,通常在方法的开头处进行校验,用来检查传入的参数是否为空,如果为空则抛出argumentnullexception异常。
而卫语句则是一种编程技巧,用于在程序执行之前进行先决条件检查,以确保程序的正常执行。
argumentnullexception卫语句结合了异常处理和先决条件检查的思想,可以有效地提高程序的健壮性和可靠性。
【2. argumentnullexception卫语句的重要性】在实际的软件开发中,很多bug和异常都是由于参数为空引起的。
使用argumentnullexception卫语句可以帮助我们在程序的早期阶段就捕获这些潜在的问题,避免它们进一步扩大,从而提高了程序的稳定性和可维护性。
良好的argumentnullexception卫语句还可以使得代码更加清晰易懂,便于他人理解和维护。
【3. 如何使用argumentnullexception卫语句】在实际的编程实践中,我们可以在每个方法的开头处使用argumentnullexception卫语句来检查传入的参数是否为空。
例如:```public void DoSomething(object obj){if (obj == null){throw new ArgumentNullException(nameof(obj), "obj cannot be null");}// do something with obj}```这样做可以有效地防止空指针异常的发生,提高了方法的健壮性。
Angular报错堆栈提⽰说明"Unterminated string literal.": "未终⽌的字符串⽂本。
","Identifier expected.": "应为标识符。
","'{0}' expected.": "应为“{0}”。
","A file cannot have a reference to itself.": "⽂件不能引⽤⾃⾝。
","Trailing comma not allowed.": "不允许使⽤尾随逗号。
","'/' expected.": "应为 "/"。
","Unexpected token.": "意外的标记。
","A rest parameter must be last in a parameter list.": "Rest 参数必须是列表中的最后⼀个参数。
","Parameter cannot have question mark and initializer.": "参数不能包含问号和初始值设定项。
","A required parameter cannot follow an optional parameter.": "必选参数不能位于可选参数后。
","An index signature cannot have a rest parameter.": "索引签名不能包含 rest 参数。
CollectionUtils⼯具类的常⽤⽅法集合判断: 例1: 判断集合是否为空: CollectionUtils.isEmpty(null): true CollectionUtils.isEmpty(new ArrayList()): true CollectionUtils.isEmpty({a,b}): false 例2: 判断集合是否不为空: CollectionUtils.isNotEmpty(null): false CollectionUtils.isNotEmpty(new ArrayList()): false CollectionUtils.isNotEmpty({a,b}): trueCollectionUtils在真实项⽬中,是⼀个⾮常好⽤的⼯具类,使⽤⾮常频繁。
它可以使代码更加简洁和安全。
刚好在⼯作中利⽤这个⼯具类重构代码,顺便总结下分享分享:并集@Testpublic void testUnion(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//2个数组取并集System.out.println(ArrayUtils.toString(CollectionUtils.union(listA, listB)));//[A, B, C, D, E, F, G, H, K]}交集@Testpublic void testIntersection(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//2个数组取交集System.out.println(ArrayUtils.toString(CollectionUtils.intersection(listA, listB)));//[B, D, F]}交集的补集(析取)@Testpublic void testDisjunction(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//2个数组取交集的补集System.out.println(ArrayUtils.toString(CollectionUtils.disjunction(listA, listB)));//[A, C, E, G, H, K]}差集(扣除)@Testpublic void testSubtract(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//arrayA扣除arrayBSystem.out.println(ArrayUtils.toString(CollectionUtils.subtract(listA, listB)));//[A, C, E]}集合是否为空@Testpublic void testIsEmpty(){class Person{}class Girl extends Person{}List<Integer> first = new ArrayList<>();List<Integer> second = null;List<Person> boy = new ArrayList<>();//每个男孩⼼⾥都装着⼀个⼥孩boy.add(new Girl());//判断集合是否为空System.out.println(CollectionUtils.isEmpty(first)); //trueSystem.out.println(CollectionUtils.isEmpty(second)); //trueSystem.out.println(CollectionUtils.isEmpty(boy)); //false//判断集合是否不为空System.out.println(CollectionUtils.isNotEmpty(first)); //falseSystem.out.println(CollectionUtils.isNotEmpty(second)); //falseSystem.out.println(CollectionUtils.isNotEmpty(boy)); //true}集合是否相等@Testpublic void testIsEqual(){class Person{}class Girl extends Person{}List<Integer> first = new ArrayList<>();List<Integer> second = new ArrayList<>();first.add(1);first.add(2);second.add(2);second.add(1);Girl goldGirl = new Girl();List<Person> boy1 = new ArrayList<>();//每个男孩⼼⾥都装着⼀个⼥孩boy1.add(new Girl());List<Person> boy2 = new ArrayList<>();//每个男孩⼼⾥都装着⼀个⼥孩boy2.add(new Girl());//⽐较两集合值System.out.println(CollectionUtils.isEqualCollection(first,second)); //trueSystem.out.println(CollectionUtils.isEqualCollection(first,boy1)); //falseSystem.out.println(CollectionUtils.isEqualCollection(boy1,boy2)); //falseList<Person> boy3 = new ArrayList<>();//每个男孩⼼⾥都装着⼀个⼥孩boy3.add(goldGirl);List<Person> boy4 = new ArrayList<>();boy4.add(goldGirl);System.out.println(CollectionUtils.isEqualCollection(boy3,boy4)); //true}不可修改的集合我们对c进⾏操作,s也同样获得了和c相同的内容,这样就可以避免其他⼈员修改这个s对象。
Package‘assertthat’October12,2022Title Easy Pre and Post AssertionsVersion0.2.1Description An extension to stopifnot()that makes it easy to declarethe pre and post conditions that you code should satisfy,while alsoproducing friendly error messages so that your users know what's gonewrong.License GPL-3Imports toolsSuggests testthat,covrRoxygenNote6.0.1Collate'assert-that.r''on-failure.r''assertions-file.r''assertions-scalar.R''assertions.r''base.r''base-comparison.r''base-is.r''base-logical.r''base-misc.r''utils.r''validate-that.R'NeedsCompilation noAuthor Hadley Wickham[aut,cre]Maintainer Hadley Wickham<******************>Repository CRANDate/Publication2019-03-2114:53:46UTCR topics documented:are_equal (2)assert-is (2)assertions-file (3)assert_that (4)has_args (5)has_attr (6)noNA (6)not_empty (7)on_failure (8)scalar (8)validate_that (10)12assert-is Index11 are_equal Are two objects equal?DescriptionAre two objects equal?Usageare_equal(x,y,...)Argumentsx,y objects to compare...additional arguments passed to all.equalSee AlsoOther assertions:is.error,is.scalar,noNA,not_emptyExamplesx<-2see_if(are_equal(x,1.9))see_if(are_equal(x,1.999,tol=0.01))see_if(are_equal(x,2))assert-is Missing is functions.DescriptionMissing is functions.Usageis.error(x)is.time(x)is.date(x)Argumentsx object to testassertions-file3See AlsoOther assertions:are_equal,is.scalar,noNA,not_emptyExamplesa<-Sys.time()is.time(a)b<-Sys.Date()is.date(b)c<-try(stop("!!"))is.error(c)assertions-file Useful test related tofilesDescriptionUseful test related tofilesUsageis.dir(path)is.writeable(path)is.readable(path)has_extension(path,ext)Argumentspath afile path to examineext extension to test for(has_extension only)Examplessee_if(is.dir(1))tmp<-tempfile()see_if(file.exists(tmp))see_if(is.dir(tmp))writeLines("x",tmp)see_if(file.exists(tmp))see_if(is.dir(tmp))see_if(is.writeable(tmp))see_if(is.readable(tmp))unlink(tmp)see_if(is.readable(tmp))4assert_that assert_that Assert that certain conditions are true.Descriptionassert_that is a drop-in replacement for stopifnot but is designed to give informative error messages.Usageassert_that(...,env=parent.frame(),msg=NULL)see_if(...,env=parent.frame(),msg=NULL)Arguments...unnamed expressions that describe the conditions to be tested.Rather than com-bining expressions with&&,separate them by commas so that better error mes-sages can be generated.env(advanced use only)the environment in which to evaluate the assertions.msg a custom error message to be printed if one of the conditions is false. AssertionsAssertion functions should return a single TRUE or FALSE:any other result is an error,and assert_that will complain about it.This will always be the case for the assertions provided by assertthat,but you may need be a more careful for base R functions.To make your own assertions that work with assert_that,see the help for on_failure.Alterna-tively,a custom message can be specified for each call.See Alsovalidate_that,which returns a message(not an error)if the condition is false.Examplesx<-1#assert_that()generates errors,so can t be usefully run in#examples##Not run:assert_that(is.character(x))assert_that(length(x)==3)assert_that(is.dir("asdf"))y<-tempfile()writeLines("",y)assert_that(is.dir(y))assert_that(FALSE,msg="Custom error message")has_args5 ##End(Not run)#But see_if just returns the values,so you ll see that a lot#in the examples:but remember to use assert_that in your code.see_if(is.character(x))see_if(length(x)==3)see_if(is.dir(17))see_if(is.dir("asdf"))see_if(5<3,msg="Five is not smaller than three")has_args Check a function has specified argumentsDescriptionCheck a function has specified argumentsUsagehas_args(f,args,exact=FALSE)f%has_args%argsArgumentsf a functionargs a character vector of argument namesexact if TRUE,argument names must match args exactly(order and value);otherwisef just must have at least args in any orderExampleshas_args(mean,"x")has_args(mean,"x",exact=TRUE)see_if(mean%has_args%"x")see_if(mean%has_args%"y")6noNA has_attr Has attribute or name?DescriptionHas attribute or name?Usagehas_attr(x,which)x%has_attr%whichhas_name(x,which)x%has_name%whichArgumentsx object to testwhich name or attributeExampleshas_attr(has_attr,"fail")x<-10x%has_attr%"a"y<-list(a=1,b=2)see_if(y%has_name%"c")noNA Does object contain any missing values?DescriptionDoes object contain any missing values?UsagenoNA(x)Argumentsx object to testnot_empty7 See AlsoOther assertions:are_equal,is.error,is.scalar,not_emptyExamplessee_if(noNA("a"))see_if(noNA(c(TRUE,NA)))x<-sample(c(1:10,NA),100,rep=TRUE)see_if(noNA(x))not_empty Check an object doesn’t have any empty dimensionsDescriptionCheck an object doesn’t have any empty dimensionsUsagenot_empty(x)Argumentsx object to testSee AlsoOther assertions:are_equal,is.error,is.scalar,noNAExamplesnot_empty(numeric())not_empty(mtcars[0,])not_empty(mtcars[,0])on_failure Custom failure messages for assertions.DescriptionCustom failure messages for assertions.Usageon_failure(x)on_failure(x)<-valueArgumentsx a assertion function that returns TRUE if the assertion is met,FALSE otherwise.value a function with parameters call and env that returns a custom error message asa string.Examplesis_odd<-function(x){assert_that(is.numeric(x),length(x)==1)x%%2==1}see_if(is_odd(2))on_failure(is_odd)<-function(call,env){paste0(deparse(call$x),"is even")}see_if(is_odd(2))scalar Assert input is a scalar.Descriptionis.scalar provides a generic method for checking input is a scalar.is.string,is.flag,is.number and is.count provide tests for specific types.Usageis.scalar(x)is.string(x)is.number(x)is.flag(x)is.count(x)Argumentsx object to testSee AlsoOther assertions:are_equal,is.error,noNA,not_emptyExamples#Generic check for scalarssee_if(is.scalar("a"))see_if(is.scalar(1:10))#string=scalar character vectorsee_if(is.string(1:3))see_if(is.string(c("a","b")))see_if(is.string("x"))#number=scalar numeric/integer vectorsee_if(is.number(1:3))see_if(is.number(1.5))#flag=scalar logical vectorsee_if(is.flag(1:3))see_if(is.flag("a"))see_if(is.flag(c(FALSE,FALSE,TRUE)))see_if(is.flag(FALSE))#count=scalar positive integersee_if(is.count("a"))see_if(is.count(-1))see_if(is.count(1:5))see_if(is.count(1.5))see_if(is.count(1))10validate_that validate_that Validate that certain conditions are true.Descriptionvalidate_that is an alternative to the function assert_that,that returns a character vector.This makes them easier to use within S4"validate"methods.Usagevalidate_that(...,env=parent.frame(),msg=NULL)Arguments...unnamed expressions that describe the conditions to be tested.Rather than com-bining expressions with&&,separate them by commas so that better error mes-sages can be generated.env(advanced use only)the environment in which to evaluate the assertions.msg a custom error message to be printed if one of the conditions is false.ValueA character vector if the assertion is false,or TRUE if the assertion is true.See Alsoassert_that,which returns an error if the condition is false.Examplesx<-1#assert_that()generates errors,so can t be usefully run in#examplesvalidate_that(is.numeric(x))validate_that(is.character(x))validate_that(length(x)==3)validate_that(is.dir("asdf"))Index%has_args%(has_args),5%has_attr%(has_attr),6%has_name%(has_attr),6all.equal,2are_equal,2,3,7,9assert-is,2assert_that,4,10assertions-file,3has_args,5has_attr,6has_extension(assertions-file),3has_name(has_attr),6is.count(scalar),8is.date(assert-is),2is.dir(assertions-file),3is.error,2,7,9is.error(assert-is),2is.flag(scalar),8is.number(scalar),8is.readable(assertions-file),3is.scalar,2,3,7is.scalar(scalar),8is.string(scalar),8is.time(assert-is),2is.writeable(assertions-file),3noNA,2,3,6,7,9not_empty,2,3,7,7,9on_failure,4,8on_failure<-(on_failure),8scalar,8see_if(assert_that),4stopifnot,4validate_that,4,1011。
关于java的各种异常类型和介绍!exception 常见的异常:在重写方法时父类方法有异常抛出那么子类方法可以不抛异常或者抛异常但异常只能是父类异常本身或其子类不能比父类所抛出的异常大1. ng.nullpointer exception //程序遇上了空指针2. ng.classnotfound exception //指定的类不存在3. ng.arithmetic exception //数学运算异常4. ng.arrayindexoutofbounds exception//数组下标越界5. ng.illegalargument exception//方法的参数错误6. ng.illegalaccess exception //没有访问权限算术异常类:Arithmetic Execption空指针异常类:NullPointer Exception类型强制转换异常:ClassCast Exception数组负下标异常:NegativeArray Exception数组下标越界异常:ArrayIndexOutOfBounds Exception违背安全原则异常:Secturity Exception文件已结束异常:EOF Exception文件未找到异常:FileNotFound Exception字符串转换为数字异常:NumberFormat Exception操作数据库异常:SQLException输入输出异常:IOException方法未找到异常:NoSuchMethodExceptionng.AbstractMethodError抽象方法错误。
当应用试图调用抽象方法时抛出。
ng.AssertionError断言错。
用来指示一个断言失败的情况。
ng.ClassCircularityError类循环依赖错误。
在初始化一个类时,若检测到类之间循环依赖则抛出该异常。
ng.ClassFormatError类格式错误。
CS:APP3e深⼊理解计算机系统_3eCProgrammingLab实验queue.h:/** Code for basic C skills diagnostic.* Developed for courses 15-213/18-213/15-513 by R. E. Bryant, 2017*//** This program implements a queue supporting both FIFO and LIFO* operations.** It uses a singly-linked list to represent the set of queue elements*/#include <stdbool.h>/************** Data structure declarations ****************//* Linked list element (You shouldn't need to change this) */typedef struct ELE {int value;struct ELE *next;} list_ele_t;/* Queue structure */typedef struct {list_ele_t *head; /* Linked list of elements */list_ele_t *tail;unsigned size;} queue_t;/************** Operations on queue ************************//*Create empty queue.Return NULL if could not allocate space.*/queue_t *q_new();/*Free all storage used by queue.No effect if q is NULL*/void q_free(queue_t *q);/*Attempt to insert element at head of queue.Return true if successful.Return false if q is NULL or could not allocate space.*/bool q_insert_head(queue_t *q, int v);/*Attempt to insert element at tail of queue.Return true if successful.Return false if q is NULL or could not allocate space.*/bool q_insert_tail(queue_t *q, int v);/*Attempt to remove element from head of queue.Return true if successful.Return false if queue is NULL or empty.If vp non-NULL and element removed, store removed value at *vp.Any unused storage should be freed*/bool q_remove_head(queue_t *q, int *vp);/*Return number of elements in queue.Return 0 if q is NULL or empty*/int q_size(queue_t *q);/*Reverse elements in queueNo effect if q is NULL or empty*/void q_reverse(queue_t *q);queue.c:/** Code for basic C skills diagnostic.* Developed for courses 15-213/18-213/15-513 by R. E. Bryant, 2017 *//** This program implements a queue supporting both FIFO and LIFO * operations.** It uses a singly-linked list to represent the set of queue elements */#include <stdlib.h>#include <stdio.h>#include "harness.h"#include "queue.h"/*Create empty queue.Return NULL if could not allocate space.*/queue_t *q_new(){queue_t *q = NULL;if((q = malloc(sizeof(queue_t)))){q->head = NULL;q->tail = NULL;q->size = 0;return q;}else{return NULL;}}/* Free all storage used by queue */void q_free(queue_t *q){/* How about freeing the list elements? *//* Free queue structure */if (q){list_ele_t *i = q->head;while(i){list_ele_t *tmp = i;i = i->next;free(tmp);}free(q);}}/*Attempt to insert element at head of queue.Return true if successful.Return false if q is NULL or could not allocate space.*/bool q_insert_head(queue_t *q, int v){list_ele_t *newh;/* What should you do if the q is NULL? */if (q){if ((newh = malloc(sizeof(list_ele_t)))){newh->value = v;newh->next = q->head;q->head = newh;if (!q->size){q->tail = newh;}++q->size;return true;}else{return false;}}/*Attempt to insert element at tail of queue.Return true if successful.Return false if q is NULL or could not allocate space.*/bool q_insert_tail(queue_t *q, int v){/* You need to write the complete code for this function *//* Remember: It should operate in O(1) time */list_ele_t *newh;if (q){if ((newh = malloc(sizeof(list_ele_t)))){newh->value = v;newh->next = NULL;if (q->tail){q->tail->next = newh;q->tail = newh;++q->size;}else{q->head = q->tail = newh;++q->size;}return true;}else{return false;}}else{return false;}}/*Attempt to remove element from head of queue.Return true if successful.Return false if queue is NULL or empty.If vp non-NULL and element removed, store removed value at *vp. Any unused storage should be freed*/bool q_remove_head(queue_t *q, int *vp){/* You need to fix up this code. */if (!q || !q->size){return false;}else{if (vp){*vp = q->head->value;}list_ele_t *tmp = q->head;q->head = q->head->next;free(tmp);--q->size;return true;}}int q_size(queue_t *q){/* You need to write the code for this function *//* Remember: It should operate in O(1) time */if (!q || !q->size){return q->size;}}/*Reverse elements in queue*/void q_reverse(queue_t *q){if (q && q->size){int cache[q->size];list_ele_t *tmp = q->head;for (int i = q->size - 1; (i >= 0) && (tmp != NULL); --i){cache[i] = tmp -> value;tmp = tmp->next;}tmp = q->head;for (int i = 0; (i < q->size) && (tmp != NULL); ++i){tmp->value = cache[i];tmp = tmp->next;}}}测试:frank@under:~/Desktop/cs:app/lab/cprogramminglab/cprogramminglab-handout$ ./qtest cmd>helpcmd>helpCommands:# ... | Display commentfree | Delete queuehelp | Show documentationih v [n] | Insert v at head of queue n times (default: n == 1)it v [n] | Insert v at tail of queue n times (default: n == 1)log file | Copy output to filenew | Create new queueoption [name val] | Display or set optionsquit | Exit programreverse | Reverse queuerh [v] | Remove from head of queue. Optionally compare to expected value v rhq [v] | Remove from head of queue without reporting valueshow | Show queue contentssize [n] | Compute queue size n times (default: n == 1)source file | Read commands from source filetime cmd arg ... | Time command executionOptions:echo 1 Do/don't echo commandserror 5 Number of errors until exitfail 30 Number of times allow queue operations to return falsemalloc 0 Malloc failure probability percentverbose 4 Verbosity levelcmd>newcmd>newq = []cmd>showcmd>showq = []cmd>ih 1cmd>ih 1q = [1]cmd>ih 2cmd>ih 2q = [2 1]cmd>ih 3cmd>ih 3q = [3 2 1]cmd>sizecmd>sizeQueue size = 3q = [3 2 1]cmd>it 0cmd>it 0q = [3 2 1 0]cmd>it -1cmd>it -1cmd>sizecmd>sizeQueue size = 5q = [3 2 1 0 -1]cmd>reversecmd>reverseq = [-1 0 1 2 3]cmd>sizecmd>sizeQueue size = 5q = [-1 0 1 2 3]cmd>rh -1cmd>rh -1Removed -1 from queueq = [0 1 2 3]cmd>size评分:frank@under:~/Desktop/cs:app/lab/cprogramminglab/cprogramminglab-handout$ ./driver.py --- Trace Points+++ TESTING trace trace-01-ops:# Test of insert_head and remove_head--- trace-01-ops 7/7+++ TESTING trace trace-02-ops:# Test of insert_head, insert_tail, and remove_head--- trace-02-ops 7/7+++ TESTING trace trace-03-ops:# Test of insert_head, insert_tail, reverse, and remove_head--- trace-03-ops 7/7+++ TESTING trace trace-04-ops:# Test of insert_head, insert_tail, and size--- trace-04-ops 7/7+++ TESTING trace trace-05-ops:# Test of insert_head, insert_tail, remove_head reverse, and size--- trace-05-ops 7/7+++ TESTING trace trace-06-robust:# Test operations on NULL queue--- trace-06-robust 7/7+++ TESTING trace trace-07-robust:# Test operations on empty queue--- trace-07-robust 7/7+++ TESTING trace trace-08-robust:# Test remove_head with NULL argument--- trace-08-robust 7/7+++ TESTING trace trace-09-malloc:# Test of malloc failure on new--- trace-09-malloc 7/7+++ TESTING trace trace-10-malloc:# Test of malloc failure on insert_head--- trace-10-malloc 7/7+++ TESTING trace trace-11-malloc:# Test of malloc failure on insert_tail--- trace-11-malloc 7/7+++ TESTING trace trace-12-perf:# Test performance of insert_tail--- trace-12-perf 7/7+++ TESTING trace trace-13-perf:# Test performance of size--- trace-13-perf 8/8+++ TESTING trace trace-14-perf:# Test performance of insert_tail, size, and reverse--- trace-14-perf 8/8--- TOTAL 100/100。
Molecular Biology of the CellVol.13,1916–1928,June2002Null Mutation of AtCUL1Causes Arrest in Early Embryogenesis in ArabidopsisWen-Hui Shen,*#Yves Parmentier,*Hanjo Hellmann,†Esther Lechner,* Aiwu Dong,*‡Jean Masson,§Fabienne Granier,ʈLoı¨c Lepiniec,¶Mark Estelle,†and Pascal Genschik*#Submitted February8,2002;Revised March5,2002;Accepted March18,2002Monitoring Editor:Elliot Meyerowitz*Institut de Biologie Mole´culaire des Plantes du CNRS,67084Strasbourg,France;†Institute for Cellular and Molecular Biology Molecular,Cellular and Developmental Biology Section,University of Texas at Austin,Austin,TX78712;‡Department of Biochemistry,School of Life Sciences,Fudan University,Shanghai200433,PR China;§INRA Colmar,UMR Vigne et Vin Alsace,Biologie duDe´veloppement de la Vigne,68021Colmar,France;ʈLaboratoire de Biologie Cellulaire,INRA-INAPG, 78026Versailles,France;and¶Laboratoire de Biologie des Semences,INRA-INAPG,78026Versailles, France.The SCF(for S KP1,C ullin/CDC53,F-box protein)ubiquitin ligase targets a number of cell cycle regulators,transcription factors,and other proteins for degradation in yeast and mammalian cells.Recent genetic studies demonstrate that plant F-box proteins are involved in auxin responses, jasmonate signaling,flower morphogenesis,photocontrol of circadian clocks,and leaf senescence, implying a large spectrum of functions for the SCF pathway in plant development.Here,we present a molecular and functional characterization of plant cullins.The Arabidopsis genome contains11cullin-related plementation assays revealed that AtCUL1but not AtCUL4 can functionally complement the yeast cdc53mutant.Arabidopsis mutants containing transfer DNA(T-DNA)insertions in the AtCUL1gene were shown to display an arrest in early embryo-genesis.Consistently,both the transcript and the protein of the AtCUL1gene were found to accumulate in embryos.The AtCUL1protein localized mainly in the nucleus but also weakly in the cytoplasm during interphase and colocalized with the mitotic spindle in metaphase.Our results demonstrate a critical role for the SCF ubiquitin ligase in Arabidopsis embryogenesis.INTRODUCTIONUbiquitin conjugation to target proteins and subsequent degradation of the target proteins by the26S proteasome play an important role in diverse cellular processes,includ-ing cell cycle regulation,stress responses,signal transduc-tion,metabolic regulation,and cell differentiation(for re-view,see Hershko and Ciechanover,1998).Three types of enzymes are involved sequentially in the ubiquitin-conjuga-tion pathway:ubiquitin-activating enzyme(E1),ubiquitin-conjugating enzyme(E2),and ubiquitin ligase(E3).E1cat-alyzes,in an ATP-dependent reaction,the formation of a ubiquitin adenylate that is then transferred to a conserved cysteine residue within the E1,resulting in the formation of a thiolester bond between the cysteinyl sulfhydryl group of E1and the terminal carboxyl group of ubiquitin.The acti-vated ubiquitin is subsequently transferred onto a cysteine residue within an E2.An E3is typically required for thefinal transfer of the activated ubiquitin from the E2to the lysine residue within the target protein,resulting in an isopeptide linkage between the C terminus of ubiquitin and the⑀-lysyl group of the target protein.Once a polyubiquitin chain is assembled on a substrate,the substrate is then degraded by the26S proteasome.The26S proteasome is composed of two large subcomplexes,the20S proteasome and the19S regu-latory cap.The plant counterpart appears to be similar in organization and structure to animal proteasome and prob-Article published online ahead of print.Mol.Biol.Cell10.1091/mbc.E02–02–0077.Article and publication date are at www.molbi-/cgi/doi/10.1091/mbc.E02–02–0077.#Correspondingauthors.E-mailaddresses:Pascal.Genschik@ibmp-ulp.u-strasbg.fr;Wen-Hui.Shen@ibmp-ulp.u-strasbg.fr.Accession numbers for complete cDNA sequence:AtCUL1(AJ318017),AtCUL4(AJ318018),AtCUL3A(AJ344252),NtCUL1(AJ344533)Abbreviations used:APC,anaphase-promoting complex;E1,ubiquitin-activating enzyme;E2,ubiquitin-conjugating enzyme;E3,ubiquitin ligase;GFP,greenfluorescent protein;Hyg,hygro-mycin;Km,kanamycin;SCF,S KP1,C ullin/CDC53,F-box pro-tein;T-DNA,transfer DNA.1916©2002by The American Society for Cell Biologyably functions in an analogous manner(Parmentier et al., 1997;Fu et al.,1998).Work in yeast and mammals indicates that the specificity of the ubiquitin pathway derives from the activity of a specific E3or E2/E3combination.The SCF complex is a recently identified,and currently the best characterized,E3 complex that is composed of four majors subunits:cullin (CDC53in yeast),SKP1,RBX1/ROC1,and an F-box protein (reviewed in Krek,1998;Patton et al.,1998a;Deshaies,1999; Tyers and Jorgensen,2000).Structure–function studies in yeast and mammals have demonstrated that cullin/CDC53 functions as a scaffold in assembling different subunits of the SCF complex as well as an E2enzyme(e.g.,CDC34).Differ-ent F-box proteins may be assembled onto the same core complex,forming different SCFs,which in turn catalyze the ubiquitination of different substrates.Genetic studies have demonstrated the involvement of plant F-box proteins in a number of developmental and physiological processes(reviewed in Callis and Vierstra, 2000).The F-box protein UFO/FIM has an important role in regulatingfloral organ identity in Arabidopsis and Antirrhi-num(Ingram et al.,1997;Samach et al.,1999).The Arabidopsis F-box proteins TIR1and COI1are essential for response to auxin and jasmonic acid,respectively(Ruegger et al.,1998; Xie et al.,1998).More recently,two closely related Arabidop-sis F-box proteins,ZTL and FKF1,have been shown to be involved in the regulation of circadian rhythm(Nelson et al., 2000;Somers et al.,2000).The F-box protein EID1is involved in phytochrome A–specific light signaling in Arabidopsis (Dieterle et al.,2001).Finally,the F-box protein ORE9seems to play a key role in natural and hormone-induced senes-cence processes(Woo et al.,2001).For most of these F-box proteins,their interaction with ASK1(the Arabidopsis SKP1-like protein)has been demonstrated by the yeast two-hybrid system and/or by immunoprecipitation assays,which im-plies their function through SCF complexes.The mutant ask1–1has been shown to be defective in homologous chro-mosome separation in male meiosis anaphase I(Yang et al., 1999).Also,multiple aspects of vegetative andfloral growth as well as response to auxin are affected in the ask1–1mutant (Gray et al.,1999;Zhao et al.,1999).The Arabidopsis cullin AtCUL1has been found in a com-plex containing TIR1and ASK1or ASK2(Gray et al.,1999). The modification of AtCUL1by the ubiquitin-related protein RUB1has been demonstrated,and genetic studies revealed that the enzymes responsible for this RUB1-conjugation pathway are important for auxin response(del Pozo and Estelle,1999a;Dharmasiri and Estelle,2002).Recently,the COP9signalosome,first identified in Arabidopsis as a nega-tive regulator of photomorphogenesis,has been shown to promote the removal of RUB1/NEDD8from cullins(Ly-apina et al.,2001;Schwechheimer et al.,2001;Zhou et al., 2001).Strikingly,an increase in RUB1-modified AtCUL1by knockdown of COP9signalosome activity has the same effect on auxin response as a decrease in the amount of modified cullin.Schwechheimer et al.(2001)suggested that the RUB1conjugation and deconjugation cycle is important for this process.An AMP-activated protein kinase SnRK has been demonstrated to interact with the SCF complex through binding with ASK1(Farra`s et al.,2001).The function of this potential phosphorylation pathway on the SCF activ-ity is currently unclear.To study the role of AtCUL1in Arabidopsis development, we identified T-DNA insertion atcul1mutants.In yeast,the cdc53ts mutants fail to enter S phase because they are unable to degrade the S phase cyclin/CDK inhibitor SIC1(Schwob et al.,1994).The Dictyostelium culA mutants exhibit aggrega-tion and morphogenesis defects(Mohanty et al.,2001).In nematodes,the cul1–1mutants show hyperplasia of blast-cell lineages(Kipreos et al.,1996).In mice,loss of the CUL1 gene arrested embryogenesis before the onset of gastrulation (Dealy et al.,1999;Wang et al.,1999).Unlike animals,plants have multicellular haploid(gametophyte)and multicellular diploid(sporophyte)stages in their life cycle.In addition, higher plants have a sedentary lifestyle;plant cells that are trapped within rigid walls divide and differentiate in place. Despite the existence of large collections of mutants that affect plant embryogenesis(Meinke,1985),the molecular basis underlying the developmental steps leading to early embryo development remains poorly understood.In this study,we show that null mutations in AtCUL1cause arrest before thefirst cell division of both embryo and endosperm cells,which originate from a double-fertilization event in which two sperm nuclei fuse with the egg cell and central cell nuclei,respectively.This work provides new insights into the role of the SCF pathway in the control of plant cell division and embryogenesis.MATERIALS AND METHODSYeast Strains and VectorsThe yeast strain cdc53st and the plasmid pJS161–53carrying the CDC53gene were a generous gift from mmer and J.Singer (Hutchinson Cancer Research Center,Washington,DC),and the vector p426TEF(Mumberg et al.,1995)from A.Camasses(Institut de Physiologie,Strasbourg,France).The cDNAs covering the entire coding region of AtCUL1,NtCUL1,and AtCUL4were cloned into the p426TEF vector by use of Bam HI–Xho I,Spe I–Xho I,and Eco RI–Sal I restriction enzyme sites,respectively.Plant MaterialsThe Arabidopsis plants were of the Wassilewskija ecotype.Seeds were produced under greenhouse conditions.Arabidopsis and to-bacco BY2cell suspensions were maintained by weekly subculture as described by Glab et al.(1994)and Nagata et al.(1992),respec-tively.AntibodiesPeptides containing the N-terminal20amino acids of AtCUL1were synthesized,linked to KLH carrier proteins,and used to immunize rabbits.The antiserum was immunoaffinity purified against the same peptides bound to Sepharose matrix.The affinity-purified anti-peptide antibody(@AtCUL1)was diluted1:4000for Western blot analysis and1:500for immunolocalization.Antibodies against PSTAIRE and␣-tubulin were purchased from Santa Cruz Biotech-nology,Santa Cruz,CA,and Amersham Pharmacia Biotech,Arling-ton Heights,IL,and used as recommended.Northern and Western AnalysisTotal RNAs and proteins were prepared from Arabidopsis plants and suspension-cultured cells.Northern and Western blot analyses were performed as described previously(Criqui et al.,2000).AtCUL1Is Required for EmbryogenesisVol.13,June20021917Plant VectorsSchematic representations of different plant vectors and sequences of oligonucleotides used in PCR amplification for vector construc-tions are shown in Figure4.An epitope of10histidines was fused to the N-and C-terminus of the AtCUL1by PCR amplification of the AtCUL1cDNA by use of oligonucleotides P1and P2,and P3and P4,respectively.The am-plified fragments were cloned into the Bam HI and Sac I restriction sites of the binary vector pBI121.1(Clontech,Cambridge,UK), resulting in pBI-HisAtCUL1and pBI-AtCUL1His.The whole coding region of the AtCUL1cDNA was PCR-ampli-fied by use of oligonucleotides P5and P6and subsequently cloned into the Xho I and Nco I sites of pSK-GFP(Criqui et al.,2000),result-ing in pSKAtCUL1-GFP.Similarly,the PCR-amplified fragment of the AtCUL1cDNA by use of oligonucleotides P3and P7was cloned into pKS-GFP by use of Bam HI and Spe I sites,resulting in pKS-GFPAtCUL1.After confirmation by sequencing of the AtCUL1se-quences and its in-frame fusion with greenfluorescent protein (GFP),the Xho I-Spe I DNA fragments encoding the chimeric At-CUL1-GFP and GFP-AtCUL1proteins were subcloned into the glu-cocorticoid-inducible vector pTA7002(Aoyama and Chua,1997), resulting in pTA-AtCUL1GFP and pTA-GFPAtCUL1,respectively. The Arabidopsis BAC T10P11containing the AtCUL1gene was received from the Genome Sequencing Center of the Cold Spring Harbor Laboratory.The region spining the AtCUL1gene was PCR-amplified by use of oligonucleotides P7and P8.The resulting PCR fragment was digested with Eco RI and Spe I and subsequently cloned into the Eco RI-and Xba I-digested pBinHyg-TX vector(Gatz, 1995),resulting in pBH-AtCUL1.Sequence analysis of the cloned fragment revealed that PCR amplification caused three T-to-C substitutions.Luckily,these substitutions were located at positions nonessential for the expression of AtCUL1.These different plant vectors were transferred by electroporation into Agrobacterium,and the resulting strains were used in plant transformation.Plant Transformation and Transgene Expression AnalysisTransgenic Arabidopsis plants were obtained by Agrobacterium-me-diated transformation by thefloral dip method(Bechtold et al.,1993; Clough and Bent,1998).Tobacco plant transformation and the es-tablishment of transgenic BY2cell lines were as previously de-scribed(Shen,2001b).The DEX induction for transgene expression and the confocal microscopy detection of GFPfluorescence were as previously described(Shen,2001b).Isolation of atcul1MutantsDNA pools of the Arabidopsis T-DNA insertion lines from the Ver-sailles collection(Bechtold et al.,1993)were screened for T-DNA insertion in the AtCUL1locus.Forward and reverse primers from the sequence of the AtCUL1gene were designed for PCR screening of the DNA pools by the combination of T-DNA left and right border–specific primers.PCR products were analyzed by Southern hybridization with the AtCUL1cDNA and the T-DNA probes.PCR fragments hybridized with both probes were further confirmed by sequencing.Segregation AnalysisSeeds were surface-sterilized and plated onto medium supple-mented with kanamycin(Km)(50mg/L)(half-strength Murashige and Skoog salts,1%sucrose,0.9%agar,pH5.7).After2d at4°C,the seeds were grown under12h light/12h dark cycles at22°C.The Km phenotype(resistant or sensitive)was scored after2weeks.Intact Silique Analysis and Whole-Mount Preparation of OvulesSiliques were dissected fresh or afterfixation in an ethanol/acetic acid(9:1)solution.Seeds(ovules)were removed fromfixed siliques, cleared for10min to2h in Hoyer’s solution(chloral hydrate/gum arabic/glycerol/water[100:7.5:5:30g]),and imaged by use of No-marski optics.Immunofluorescence Staining and In Situ HybridizationTobacco BY2cells as well as Arabidopsis suspension cells werefixed in3.7%paraformaldehyde as described(Proust et al.,1999).Inflo-rescences and siliques of Arabidopsis plants werefixed in4%para-formaldehyde and embedded in paraffin wax,and10-m sections were prepared for immunolabeling and for in situ hybridization according to Jackson(1991).Immunolabeling was performed as described by Schmit et al.(1996).The sense and antisense AtCUL1 probes for in situ hybridization were prepared by use of the DIG RNA Labeling Kit(Roche;Catalog No.1175025),and hybridizations were performed as described by Jackson(1991).RESULTSArabidopsis Contains Multiple Putative CullinsThe cullin family encompasses at least six genes in humans and in Caenorhabditis elegans.The genome sequence of Ara-bidopsis has been determined(Arabidopsis genome initiative, 2000).A sequence similarity search reveals that the Arabi-dopsis genome contains11cullin-related genes that together with other eukaryotic members can be classified into dis-tinct,distantly related groups(Figure1A).The APC2group member contains a cullin homology region but is a subunit of the anaphase-promoting complex(APC),an E3enzyme responsible for ubiquitination of mitotic regulators(for re-view,see Zachariae and Nasmyth,1999).The APC-mediated destruction box pathway also seems to be conserved in plants(Genschik et al.,1998;Criqui et al.,2000).The ubiq-uitin-ligase complexes containing CUL3,CUL4,CUL5,and CeCUL6are poorly characterized,although CUL3has been demonstrated to be involved in the degradation of cyclin E (Singer et al.,1999).The HsCUL2protein functions in a ubiquitin-ligase complex containing the VHL tumor sup-pressor protein elongin-B(a ubiquitin-like protein),RBX1/ ROC1,and elongin-C(a SKP1functional homologue)that recruits a SOCS-box containing protein(reviewed in Tyers and Jorgensen,2000;Ivan and Kaelin,2001).Also,CeCUL2 is not functionally redundant with CeCUL1(Feng et al., 1999).The mammalian and nematode CUL1show the high-est homology with ScCDC53and form SCF complexes with similar partners:SKP1,ROC1/RBX1,and an F-box protein (reviewed in Krek,1998;Deshaies,1999;Tyers and Jor-gensen,2000).The AtCUL1(At4g02570)protein,together with four other Arabidopsis proteins(At1g43140,At1g02980, At1g59800,and At1g59790),are the closest orthologues of ScCDC53,but their sequence does not allow assignment to either the CUL1or CUL2group(Figure1A).Among these Arabidopsis proteins,only AtCUL1has been demonstrated to be expressed(del Pozo and Estelle,1999b;Gray et al.,1999; Farra`s et al.,2000);whether the other proteins are also ex-pressed is currently unknown.In addition,two of them (At1g59800and At1g59790)contain the conserved N-termi-nal region(Figure1B),which is involved in the interactionW.-H.Shen et al.Molecular Biology of the Cell 1918AtCUL1Is Required for EmbryogenesisFigure1.Sequence analysis of Arabidopsis cullin-related proteins.(A)Phylogenetic tree of the Arabidopsis proteins(bold letters),together with cullins and APC2of Saccharomyces cerevisiae,C.elegans,and Homo sapiens,was established by use of ClustalW and TreeViewPPC programs.DDBJ/EMBL/GenBank accession numbers:Q12018for ScCDC53,P53202for ScCUL-B,NP012488for ScCUL-C,NP013228for ScAPC2,Q17389for CeCUL-1,Q17390for CeCUL-2,Q17391for CeCUL-3,Q17392for CeCUL-4,Q23639for CeCUL-5,Q21346for CeCUL-6, AAF99984for CeAPC2,NP003583for HsCUL1,NP003582for HsCUL2,NP003581for HsCUL3,NP003580for HsCUL4A,AAK16812 for HsCUL4B,AAK07472for HsCUL5,NP037498for HsAPC2,AAK76704for At4g02570(AtCUL1,this work),NP175007for At1g43140, NP171797for At1g02980,NP176189for At1g59800,NP176188for At1g59790,NP174005for At1g26830,NP177125for At1g69670, AJ318018for At5g46210(AtCUL4,this work),NP178543for At2g04660,NP192947for At4g12100,and NP190275for At3g46910.(B) Sequence alignment of AtCUL1(At4g02570)and its most closely related Arabidopsis proteins was performed by use of ClustalX.Numbers refer to amino acid positions in the corresponding proteins.Consensus symbols on top of the alignment:*for the identical or conserved residues in all sequences;:and.for the conserved and semiconserved substitutions,respectively.The RBX1/ROC1binding domain and the RUB1/NEDD8conjugation site are indicated by a line and an arrow,respectively.Vol.13,June20021919with SKP1(Patton et al.,1998b;Wu et al.,2000),but do not contain the conserved C-terminal region,which is required for interaction with RBX1/ROC1and RUB1/NEDD8modi-fication (Furukawa et al.,2000;Wu et al.,2000).AtCUL1but Not AtCUL4Complements the Yeast cdc53ts Mutant PhenotypeTo test whether plant cullins can functionally replace ScCDC53to form active SCF complexes in yeast,we intro-duced the plant cullin cDNAs under the control of the TEF promoter (Mumberg et al.,1995)into the yeast cdc53ts mu-tant strain,carrying a temperature-sensitive mutation in the Sc CDC53gene.Transformants that expressed ScCDC53(positive control)or AtCUL1were able to grow at a restric-tive temperature (35°C),whereas the negative control con-taining the empty vector was not (Figure 2).The tobacco orthologue of AtCUL1,the NtCUL1,was also able to com-plement the yeast mutant.AtCUL4(At5g46210,Figure 1A),however,failed to complement,which in addition inhibited yeast growth even at a permissive temperature (28°C).Expression of AtCUL1in Arabidopsis Plants and Suspension CellsRNA blot analysis shows that AtCUL1encodes a single transcript of ϳ2.5kb,which is present in different organs of Arabidopsis plants (Figure 3A).Whereas the histone H4tran-scripts show higher levels in organs containing actively dividing cells (such as flowers and young seedlings),the AtCUL1did not exhibit such speci ficity of expression,sug-gesting that the AtCUL1gene is not cell cycle regulated.In agreement with this assumption,the AtCUL1transcript was found at a relatively constant level during different growth phases of suspension-cultured cells (Figure 3B).Also,in the synchronized tobacco BY2cells,the NtCUL1transcript wasconstantly present during different phases of the cell cycle (data not shown).Antibodies directed against the N-terminal 20-amino-acid peptide of AtCUL1were produced in rabbits and af finity puri fied against the antigen.Western blot analysis revealed that the antibodies speci fically recognized AtCUL1ex-pressed in transgenic tobacco BY2cells but not the endoge-nous tobacco cullins (Figure 3C).As described previously (del Pozo and Estelle,1999b;Gray et al.,1999),two predom-inant bands that migrate close together were detected in the total protein extract from Arabidopsis seedlings (Figure 3C).They correspond to unconjugated and RUB1-conjugated iso-forms of AtCUL1(del Pozo and Estelle,1999b).Interest-ingly,in both transgenic tobacco BY2cells expressing AtCUL1(Figure 3C,lane 2)and Arabidopsis suspension-cultured cells (Figure 3B),only the unconjugated isoform was observed.Like its transcript,the AtCUL1protein was present at a relatively constant level during different growth phases of suspension-cultured cells (Figure 3B).AtCUL1Is Localized in Nucleus,Cytoplasm,and Metaphase SpindlesTo study the localization of AtCUL1,both GFP and immu-nolocalization technologies were used.Transgenic tobacco BY2cell lines expressing the 10ϫhis-tagged AtCUL1or the GFP-fused AtCUL1(Figure 4)as well as transgenic tobacco plants expressing the GFP-fused AtCUL1were generated.In interphase cells,GFP-AtCUL1as well as AtCUL1-GFP were localized mainly to nucleus and weakly to cytoplasm in transgenic BY2cells as well as in transgenic plants (Figure 5,A –C).Immunolocalization in Arabidopsis cells con firms this pattern of AtCUL1localization (Figure 5D).Control immu-nolocalization experiments using the anti-AtCUL1preim-mune serum,either with Arabidopsis (data not shown)or with tobacco BY2cells constitutively expressing AtCUL1(Figure 5E),did not show any detectable staining above background levels.In late G2phase,a microtubule array called the preprophase band de fines the future division plane of the plant cell.At this stage,AtCUL1was still detected mainly in the nucleus and barely on the pre-prophase band (Figure 5F).Colocalization of AtCUL1with mitotic spindle was observed at metaphase (Figure 5G).At telophase,AtCUL1weakly colocalized with the phragmo-plast (Figure 5H).On entrance into interphase,AtCUL1localized primarily to the newly formed nucleus (Figure 5I).Mutants of AtCUL1Show Reduced Inheritance in the Gametophyte and Embryonic LethalityTwo T-DNA insertion lines,atcul1–1and atcul1–2,were identi fied by PCR screening of a total of 40,000independent transgenic lines of the Versailles T-DNA collection.In atcul1–1,two copies of T-DNA were inserted head-to-head in the intron between the 17th and 18th exons (Figure 6).The insertion also caused a deletion of 25nucleotides at the 5Јend of the intron and an addition of 13nucleotides of unknown origin at the 5Јend junction between AtCUL1and the T-DNA.In atcul1–2,two copies of T-DNA were inserted head-to-head in the third exon,which also resulted in a small deletion of 16nucleotides of the exon and theadditionFigure plementation of the yeast cdc53mutant by plant cullins.The yeast temperature-sensitive mutant cdc53ts was trans-formed with the empty vector or the vectors expressing CDC53,AtCUL1,NtCUL1,and AtCUL4,respectively.Individual transfor-mants were plated on selective media and grown either at permis-sive (28°C)or at restrictive (35°C)temperature.Photographs were taken after 4d.W.-H.Shen et al .Molecular Biology of the Cell1920of 7and 2nucleotides at the 5Јand 3Јend junctions between AtCUL1and the T-DNA,respectively (Figure 6).Heterozygous plants of the atcul1–1line appeared normal in morphology.A decreased level of AtCUL1was barely evident in these heterozygous plants (Figure 3C).The T-DNA inserted in the atcul1mutants contains the chimeric nptII gene that confers Km resistance (Figure 6).Segregation tests for Km resistance on seeds produced by self-pollination of more than 60individual atcul1–1plants revealed that homozygous atcul1–1plants could not be obtained.In addi-tion,as shown in Table 1,the ratio of Km-resistant-to-Km-sensitive in self-progeny of individual heterozygous plants was signi ficantly lower than the expected ratio of 3:1.The atcul1–2line behaved very similarly to atcul1–1(Table 1).To determine the inheritance of the atcul1mutations in the male and female gametophytes,reciprocal backcrosses of het-erozygous mutant plants with the wild-type plants were performed.Genetic analysis of Km resistance in the F1prog-eny revealed that the inheritance of both atcul1–1and atcul1–2mutations was reduced through both male andfemale gametes (Table 1).Together,these genetic studies reveal that mutations in the AtCUL1gene affect the devel-opment,viability,or function of both male and female ga-metophytes and that homozygous atcul1mutant embryos are aborted before seed production.Mutations in AtCUL1Are Responsible for the PhenotypeTo con firm that atcul1–1and atcul1–2are alleles,crosses between plants that were heterozygous for the two muta-tions were performed.The resulting F1progeny exhibited a ratio of Km-resistant-to-Km-sensitive similar to that of the self-progeny of either mutant (Table 1).PCR-ampli fication analysis revealed that the Km-resistant plants produced from the crosses were either atcul1–1or atcul1–2genotype but never both (data not shown).These results indicate that atcul1–1and atcul1–2are allelic mutations responsible for the mutantphenotype.Figure 3.Northern and Western blot analyses of AtCUL1expression.(A)Total RNA was isolated from different organs of Arabidopsis plants,and Northern analysis was performed by successive hybridizations with different probes,as indicated.EFTu:elongation factor EF-1␣;H4:histone H4.(B)Samples were taken at different days of subculture from an Arabidopsis cell suspension culture and used for fresh weight measurement and for RNA and protein analysis.Northern analysis was performed by successive hybridizations with the indicated probes.Western blots were performed with the antibodies against AtCUL1(@AtCUL1)and the conserved CDK kinase motif PSTAIRE (@PSTAIRE).(C)Total proteins prepared from tobacco BY2cells (lane 1),transgenic BY2cells expressing 10ϫhis-tagged AtCUL1(lane 2),and 2-week-old Arabidopsis seedling of wild-type Wassilewskija genotype (lane 3)and Km-resistant atcul1–1ϩ/Ϫ(see Table 1)genotype (lane 4)were Western blotted with @AtCUL1.The asterisk indicates an aspeci fic protein band,which cannot be competed by the AtCUL1peptide (data not shown).AtCUL1Is Required for EmbryogenesisVol.13,June 20021921To further con firm that the mutation of AtCUL1is respon-sible for the phenotype,genetic complementation was car-ried out.The first construct used carried the AtCUL1cDNA under the control of the CaMV 35S promoter and failed to rescue the mutant phenotype of atcul1–1(data not shown).A genomic fragment spanning from the Ϫ1024base pairs up-stream of the ATG to the stop codon of the AtCUL1gene was subsequently cloned into a vector carrying the hpt gene,which confers hygromycin (Hyg)resistance (pBH-AtCUL1,Figure 4).Hyg-resistant plants were obtained from transfor-mation of heterozygous mutant plants,and their self-prog-eny were scored for Km resistance.Of six independent transformants of atcul1–1that produced Km-resistant prog-eny,three were found to display a ratio of Km-resistant-to-Km-sensitive of ϳ3:1(one of them is shown in Table 1),as expected for rescue by the transgene.One transformant obtained on atcul1–2exhibited the rescued segregation phe-notype as well (Table 1).Mutants of AtCUL1Are Arrested Before the First Cell Divisions after Fertilization during EmbryogenesisMore than 50siliques (with a total of more than 2000ovules)on heterozygous atcul1–1plants were dissected after self-pollination.Among these,ϳ27%of embryos failed to de-velop (indicated by arrows),whereas the others developed normally into mature seeds (Figure 7A).A similar embryo-lethal phenotype was observed in the atcul1–2line and also in two other atcul1mutant alleles (H.Hellmann and M.Estelle,unpublished observations)recovered from the Wis-consin collection of T-DNA insertion lines.Differential inter-ference contrast imaging of cleared ovules revealed that whereas the normal ovules contained zygotes that develop through the characteristic preglobular (Figure 7B),globular (Figure 7C),and heart (Figure 7D)stages into mature em-bryos,the arrested ovules do not contain developed zygotes (Figure 7,E –G).In addition,mutant ovules are missing the endosperm cells,which divide earlier and fill the space around the zygotes.The most advanced stage of an arrested ovule contained one zygote and one endosperm cell with either one or two nuclei (Figure 7,F and G)that were not properly separated from each other (Figure 7H).The expression of the AtCUL1during embryogenesis was further analyzed.In situ hybridization showed that the AtCUL1antisense probe detected a strong signal in the embryo (Figure 8,B and C)but not the negative control sense probe (Figure 8A).Immunolocalization using the At-CUL1antibody detected a strong staining in embryos,par-ticularly in the nucleus (Figure 8,E and F).Such staining was not detected in the negative control by use of the preimmune serum (Figure 8D).These results together demonstrated high expression levels of AtCUL1transcript and protein in embryos,which further underscores the important function of AtCUL1during embryogenesis.DISCUSSIONArabidopsis Contains Functionally Distinct CullinsAll of the SCF subunits,including the cullins,are highly conserved from yeast to mammals,suggesting a common biochemical mechanism of protein ubiquitination.The Ara-bidopsis genome sequence reveals that plants contain a large number of homologues of SCF components.Whereas only a single SKP1protein has been identi fied so far in humans,there are 18SKP1orthologues present in the Arabidopsis genome.The F-box proteins function in substrate recogni-tion and are the most diverse and speci fic components of the SCF complex.The Arabidopsis genome contains more than 300F-box –containing proteins (del Pozo and Estelle,2000;Xiao and Jang,2000;Andrade et al.,2001;our unpublished data).Cullins also belong to gene families,and in Arabidop-sis ,there are 11members.This large number of different proteins underscores the potential importance of SCF com-plexes and regulated protein degradation in various cellular processes in plants.Yeast complementation tests demonstrated that two dis-tantly related members of the Arabidopsis cullin family,AtCUL1and AtCUL4,have distinct functions in yeast.The AtCUL1group consists of four additional proteins in Arabi-dopsis .Two of them (At1g59800and At1g59790)seem un-likely to exhibit the full function of cullins,because they lack a conserved C-terminal region demonstrated to be required for interaction with RBX1/ROC1(Furukawa et al.,2000;Wu et al.,2000).The other two (At1g43140,At1g02980),however,show high similarities to AtCUL1and thus might act to some extent in the same or overlapping regulatorypathway.Figure 4.Vectors used for plant transformation.(A)Schematic representation of the genes inserted into different vectors.Arrows with lines represent the different promoter regions and open boxes the coding sequence of different proteins.(B)Oligonucleotides used in PCR ampli fication for plant vector construction.Nucleotides corresponding to the AtCUL1sequence are speci fied by capital letters.Restriction enzyme sites used in cloning are underlined.W.-H.Shen et al .Molecular Biology of the Cell1922。