wrong code
- Jan 2024
-
rpubs.com rpubs.com
-
-
-
do away with listing by organizing thedocumentation and code into an easily accessible, monolithic,structured NLS file.
becuase of the immanent structuring no linear listing were ever used in Meta-Lisp in practice, dynamic navigation
although a complete listing via depth first traversal was always possible and told the complete story
-
If the SPL compiler is in Tree Meta, the parse rules willcontain only parse information and node-building directions.This should make them much more readable, a feature alwayswanted by those who try to figure out commands of NLS byreading the code in the SPLs
parse rule
only contain parse information and node-building
just like MetaLISP!
-
figure out what a pieceof code is "supposed" to do
figure out supposed to do
-
-
Local file Local file
-
- The historian will have some puzzles to solve --> interesting way of stating that their logic is not clear? (3)
- Eugenics always had an evaluative logic at its core. Some human life was of more value -- to the state, the nation, the race, future generations -- than other life, and thus its advocates sought to implement these practices differentially ( 4) ==> did we ever examine who was making these policies and procedures and place a value on their lives
- Peak in the 1920s --> im assuming that this is referring to the US
- Contributing factors = nationalism, tech changes, changes in ideas about citizenry, labor force, future fitness (4) ABOUT MODERNITY
- Darwins work that highlighted that we are a part of nature and that we follow the same natural laws as everyone else critically undermined the idea that humans were made specially (4)
- Humans could and should replace natural selection by other processes that are more merciful and not less effective (4) huh --> he thought eugenics is merciful and more effective than natural selection (I wonder why this became so popular, especially when this time period is known for being religious
- Galton understood eugenics to be rational planning of and intervention into human breeding --> thought that the state should intervene into peoples own choices and such (5)
- Positive and negative eugenics (5)
- Oneida, NY the women professed: "we do not belong to ourselves", disrespectfully what in the world is this cult (5)
- American eugenics and ideas about eugenics shaping NS Germany
- 1926 Soviet Civic Code (5)
- aiming to restrict the reproduction of those with conditions and diseases considered heritable (CONSIDERED) --> did they know exactly (6)
- eugenic intervention directed at those who already belonged (6)
- Different priorities to the varying eugenic movements across the world --> southern US v NS Germany v Australian English (6)
- "Polluting" was not racial outsiders but often marginalized insiders
- Geographic insight --> more concentrated on the urban problem populations of industrialization (6) --> why
- America --> poor, rural whites: southern European immigrants; African Americans (7)
- Anxieties about interracial marriage were frequently linked to colonial rule (7)
- Race crossing --> Erst Rodenwalt (7)
- Australia --> half-caste problem (7) biological and cultural assimilation influenced by eugenic ideas ==> boarding school type beat
- Prospect of extinction (8)
- primitive societies where weak offspring were not nursed were admired as naturally eugenic (8) ==> looking at primitive examples to propel an ide of modernity
- relationship between eugenic and birth control
- In Eastern Europe --> more public health spending (8)
- into the management of infectious disease (9)
- Kenya example --> uneducable making their education irrelevant to the state (9)
- linked to the proliferation of asylums from the 19th century
- Dr. Harry Haselden withheld treatment for newborns --> what about the Hippocratic oath (9)
- designations of fit and unfit applied to both populations and to individuals
- one eye on the past generations and one eye on the future (9)
- pedigree chart (10)
- both research and propaganda
- Darwin knew about the principles of genetics, yet married his first cousin (10)
- insurance used information from Biometrika (10)
- Issue with the pedigree system bc it thinks that things like intelligence and other "good" characteristics are associated with inheritance but not with access to social support and resources (10)
- Eastern Europe --> eugenics could match and enshrine the aspirations of new nation-states anxious to establish their legitimacy (12)
- Japanese modernization manifested itself as nationalism (quality over quantity) (12)
- homogeneity over heterogeneity (12)
- strong connection between eugenics and the left and to progressive reform and politics (13)
- sterilization has informed the concept of "rights" in reproductive arenas (14)
- Consent --> Nuremberg trials (14)
- States that were looking to modernize were those who took up eugenics enthusiastically
- NS Germany (14/15)
- mythical concern --> where did this originate from (15)
- similarities across so many countries and cultures is interesting in the eugenics movements (15)
- Eugenics in immigration regulations (16)
- Central America and Southern Europe distinguished itself (16)
- Cross cultural ideas and exchange allowed eugenics to move so fast and so far but then they all wanted to be independent and create their own identity (16)
- Hygiene was also linked to eugenics --> "Rassenhygiene" in DE (17)
- Interesting to see how they distanced themselves from forms of eugenics that didn't come from their own home country
- sterilization procedures were antithetical to catholic doctrine and were highly questionable (18)
- British sought the legalization of sterilization but voluntary sterilization was always their aim (18)
- US is a contradiction --> commitment to liberty also passed compulsory sterilization laws (18)
- Voluntary v coerced (18)
- eugenics has always had opposition (19)
- Jennings essentially conceptualized pre-natal testing (19)
- 1970s drew large opposition (20)
- Tuskegee syphilis experiment highlighted conversations about races and medical ethics (20)
- This was a period of strongly left-oriented intellectual critique of science (20)
-
-
-
They draw statistical correlations between a person’s zip code or languagepatterns and her potential to pay back a loan or handle a job.
This is incredibly sad but visible in our BIPOC communities.
-
-
www.socialworkers.org www.socialworkers.org
-
Social workers should engage in social and political action that seeks to ensure that all people have equal access to the resources, employment, services, and opportunities they require to meet their basic human needs and to develop fully. Social workers should be aware of the impact of the political arena on practice and should advocate for changes in policy and legislation to improve social conditions to meet basic human needs and promote social justice.
While exploring the NASW Code of Ethics, I found an important aspect related to power and inequality in the section on Social and Political Action (6.04). This section emphasizes the duty of social workers to engage in action against social injustice. However, it raises questions about the depth of guidance provided regarding power dynamics in the profession. I've noted this section to express my curiosity about how the Code of Ethics could offer clearer guidance on addressing power imbalances within social work organizations and in broader society. This encourages a deeper exploration of strategies to challenge oppressive systems.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
Then as part of our loop, each time we go through a review we will add 1 to our num_reviews variable
Instead of keeping track of a num_reviews variable, we can also loop over the index and review of each movie simultaneously by using enumerate(movies). This gives us fewer variables to think about and makes the code a bit more elegant and readable.
-
-
runestone.academy runestone.academy
-
Consider the code block below. What prints?
The length count includes all the spaces, period(,) and exclamation mark.
-
-
openclassrooms.com openclassrooms.com
-
dans les icônes de l'en-tête et du pied-de-page qui permettent de faire des liens, réduire l'opacité à 0.5 au survol.
Dans le code HTML de à-propos il y à une erreur : - vous avez rajouter class="lien-icone" au niveau du logo de la page a propos , ce qui lui applique le changement d'opacité au survole identique au lien hypertexte Instagram et twitter qui possède eu aussi la classe déclarer .lien-icone.
-
-
www.w3schools.com www.w3schools.com
-
Six other escape sequences are valid in JavaScript: Code Result \b Backspace \f Form Feed \n New Line \r Carriage Return \t Horizontal Tabulator \v Vertical Tabulator
Escape sequences in JavaScript are special combinations of characters that are used to represent characters that would otherwise be difficult or impossible to include directly in a string. These sequences start with a backslash
\followed by another character or characters.Here are some common escape sequences in JavaScript:
- \n - Newline:
- Represents a line break.
javascript console.log("Hello\nWorld"); // Output: // Hello // World- \t - Tab:
- Represents a horizontal tab.
javascript console.log("This\tis\tTab"); // Output: This is Tab- \ - Backslash:
- Represents a literal backslash.
javascript console.log("This is a backslash: \\"); // Output: This is a backslash: \- \' - Single Quote:
- Represents a single quote within a string declared with single quotes.
javascript console.log('It\'s a sunny day.'); // Output: It's a sunny day.- \" - Double Quote:
- Represents a double quote within a string declared with double quotes.
javascript console.log("She said, \"Hello!\""); // Output: She said, "Hello!"- \uXXXX - Unicode Escape:
- Represents a Unicode character, where XXXX is the Unicode code point in hexadecimal.
javascript console.log("\u0041"); // Output: AThese escape sequences allow you to include special characters in your strings without causing syntax errors. For example, if you want to include a quote character within a string that is already enclosed in quotes, you can use the escape sequence to prevent confusion and errors.
-
-
developer.mozilla.org developer.mozilla.orgString1
-
he localeCompare() method enables string comparison in a similar fashion as strcmp() — it allows sorting strings in a locale-aware manner.String primitives and String objects Note that JavaScript distinguishes between String objects and primitive string values. (The same is true of Boolean and Numbers.) String literals (denoted by double or single quotes) and strings returned from String calls in a non-constructor context (that is, called without using the new keyword) are primitive strings. In contexts where a method is to be invoked on a primitive string or a property lookup occurs, JavaScript will automatically wrap the string primitive and call the method or perform the property lookup on the wrapper object instead. jsCopy to Clipboardconst strPrim = "foo"; // A literal is a string primitive const strPrim2 = String(1); // Coerced into the string primitive "1" const strPrim3 = String(true); // Coerced into the string primitive "true" const strObj = new String(strPrim); // String with new returns a string wrapper object. console.log(typeof strPrim); // "string" console.log(typeof strPrim2); // "string" console.log(typeof strPrim3); // "string" console.log(typeof strObj); // "object" Copy And SaveShareAsk Copilot Warning: You should rarely find yourself using String as a constructor. String primitives and String objects also give different results when using eval(). Primitives passed to eval are treated as source code; String objects are treated as all other objects are, by returning the object. For example: jsCopy to Clipboardconst s1 = "2 + 2"; // creates a string primitive const s2 = new String("2 + 2"); // creates a String object console.log(eval(s1)); // returns the number 4 console.log(eval(s2)); // returns the string "2 + 2" Copy And SaveShareAsk Copilot For these reasons, the code may break when it encounters String objects when it expects a primitive string instead, although generally, authors need not worry about the distinction. A String object can always be converted to its primitive counterpart with the valueOf() method. jsCopy to Clipboardconsole.log(eval(s2.valueOf())); // returns the number 4 Copy And SaveShareAsk Copilot
Certainly! Let's break it down in simpler terms:
String Primitives and String Objects:
- In JavaScript, there are two types of strings: string primitives and String objects.
- String literals (created using double or single quotes) and strings returned from non-constructor String calls are primitive strings.
- String objects are created using the
new String()syntax.
Examples:
```javascript const strPrim = "foo"; // A string primitive const strPrim2 = String(1); // Coerced into the string primitive "1" const strPrim3 = String(true); // Coerced into the string primitive "true" const strObj = new String(strPrim); // String with new returns a string wrapper object.
console.log(typeof strPrim); // "string" console.log(typeof strPrim2); // "string" console.log(typeof strPrim3); // "string" console.log(typeof strObj); // "object" ```
strPrim,strPrim2, andstrPrim3are string primitives, whilestrObjis a String object.
Using
eval():- When using
eval()with string primitives, the string is treated as source code, and the result is evaluated. - When using
eval()with String objects, it treats the object like any other object and returns the object itself.
Examples:
```javascript const s1 = "2 + 2"; // creates a string primitive const s2 = new String("2 + 2"); // creates a String object
console.log(eval(s1)); // returns the number 4 console.log(eval(s2)); // returns the string "2 + 2" ```
eval(s1)evaluates the string primitive as code and returns the result (number 4).eval(s2)returns the String object itself (string "2 + 2"), not the evaluated result.
Conversion to Primitive:
- To convert a String object to its primitive counterpart, you can use the
valueOf()method.
Example:
javascript console.log(eval(s2.valueOf())); // returns the number 4valueOf()converts the String object (s2) to its primitive form before being evaluated, resulting in the number 4.
Conclusion:
- In general, it's rare to use String as a constructor (using
new String()), and working with string primitives is more common. Understanding the differences is important when dealing with certain situations like usingeval()or expecting a specific type of string.
-
-
www.socialworkers.org www.socialworkers.org
-
Social workers should not engage in dual or multiple relationships with clients or former clients in which there is a risk of exploitation or potential harm to the client. In instances when dual or multiple relationships are unavoidable, social workers should take steps to protect clients and are responsible for setting clear, appropriate, and culturally sensitive boundaries.
This section of the NASW code of ethics raises important questions regarding power and structural inequality because sometimes it may be hard for social workers to find the clear boundary of dual-relationships. For example, if a client invites you to an event they are holding that is unrelated to your professional relationship like a retirement party or another life milestone event, how do you decipher which type of event is appropriate to attend and which is not? Due to your professional influence on this person's life, what if your personal bias for this client exceeds the level that is appropriate for a standard social worker/client relationship but you don't see it that way because they are "inviting you in" or consenting to it. I feel it's important for social workers to build strong rapport with their clients to facilitate more effective practice however, ones judgement on when this rapport building may be crossing the line into unprofessional territory may vary on a case by case basis.
-
-
www.socialworkers.org www.socialworkers.org
-
Social workers’ social change efforts are focused primarily on issues of poverty, unemployment, discrimination, and other forms of social injustice. These activities seek to promote sensitivity to and knowledge about oppression and cultural and ethnic diversity.
This part of the NASW code of ethics pertains to my field work because in my role as the housing navigation specialist at the shelter, I not only help clients secure permanent housing through government subsidies but, I also advocate on their behalf when they are being faced with blatant discrimination. This advocacy is not only reflected in my efforts to educate my clients on their own housing rights but also by educating landlords, relators, and property managers on the policy of housing subsidies like state wide section 8 and local municipality housing voucher programs. Recently, I was working with a client who has a section 8 voucher through the state. This client was about to sign their request for tenancy with the landlord but once the landlord looked over the DCA (department of community affairs) terms of agreement they stated in writing that they "did not want to move forward with a voucher holder." Luckily, New Jersey is one of the 49 states that have fair housing legislature in place so I was able to report this correspondence to my clients DCA worker as discrimination and they were granted more time to secure permanent housing. There is a lot of stigma tied to the homeless community, especially those who obtain housing subsidies through local and federal government entities. This is why legislature like The Fair Housing Act is so important in the work that I do and the vulnerable community I serve.
-
-
github.com github.com
-
About Automated functional testing via the Chrome DevTools Protocol. Easy to use and open source. Generates unique CSS and Xpath selectors. Outputs code for multiple testing frameworks, including Jest, Puppeteer, Selenium Webdriver and Cypress.
-
-
react.dev react.dev
-
useRefuseRef is a React Hook that lets you reference a value that’s not needed for rendering.const ref = useRef(initialValue) Reference useRef(initialValue) Usage Referencing a value with a ref Manipulating the DOM with a ref Avoiding recreating the ref contents Troubleshooting I can’t get a ref to a custom component Reference useRef(initialValue) Call useRef at the top level of your component to declare a ref. import { useRef } from 'react';function MyComponent() { const intervalRef = useRef(0); const inputRef = useRef(null); // ... See more examples below. Parameters initialValue: The value you want the ref object’s current property to be initially. It can be a value of any type. This argument is ignored after the initial render. Returns useRef returns an object with a single property: current: Initially, it’s set to the initialValue you have passed. You can later set it to something else. If you pass the ref object to React as a ref attribute to a JSX node, React will set its current property. On the next renders, useRef will return the same object.
React Hooks are functions provided by React that allow you to use state and lifecycle features in functional components, making them more powerful and expressive. They were introduced in React version 16.8 to let developers use state and other React features without writing a class.
useState Hook:
useStateis a Hook that allows you to add state to functional components. It returns an array with two elements: the current state value and a function that lets you update it. Here's a simple example:```jsx import React, { useState } from 'react';
function Counter() { // Declare a state variable named "count" with an initial value of 0 const [count, setCount] = useState(0);
return ( <div>
Count: {count}
<button onClick={() => setCount(count + 1)}>Increment</button> </div> ); } ```In this example,
countis the state variable, andsetCountis the function to update it. When the "Increment" button is clicked, it updates thecountstate, and React automatically re-renders the component.useEffect Hook:
useEffectis a Hook that enables you to perform side effects in functional components. It's similar to lifecycle methods in class components. Here's a simple example fetching data:```jsx import React, { useState, useEffect } from 'react';
function DataFetcher() { const [data, setData] = useState(null);
useEffect(() => { // Fetch data when the component mounts fetch('https://api.example.com/data') .then(response => response.json()) .then(data => setData(data));
// Clean up any resources when the component unmounts return () => { // Cleanup code here };}, []); // The empty array ensures this effect runs only once on mount
return ( <div>
Data: {data ? data.value : 'Loading...'}
</div> ); } ```In this example,
useEffectruns when the component mounts. It fetches data and updates the state. The empty dependency array ([]) means the effect runs only once when the component mounts.useContext Hook:
useContextis a Hook that allows you to subscribe to React context without introducing nesting. It lets you access the value of a context directly.```jsx import React, { useContext } from 'react';
const ThemeContext = React.createContext('light');
function ThemedComponent() { const theme = useContext(ThemeContext);
return
Current Theme: {theme}
; } ```In this example,
ThemedComponentcan directly access the current theme value from theThemeContext.These are just a few examples of React Hooks. There are others like
useReducer,useCallback,useMemo, etc., each serving a specific purpose to enhance the functionality of functional components. Hooks allow you to manage state and side effects more effectively in functional components, making your code cleaner and more maintainable. Absolutely! Let's break down the statement in simpler terms:useRefExplanation:useRefis like a tool in React that helps you create a special reference to something, and this reference won't force your component to re-render when the referenced thing changes.Simple Explanation:
- Creating a Reference:
- With
useRef, you can create a reference to a value, like a number, an object, or even a DOM element.
```jsx import { useRef } from 'react';
function MyComponent() { const myRef = useRef(0); // Creating a reference to the number 0 return <div>{myRef.current}</div>; } ```
In this example,
myRefis a reference to the number 0.- No Re-rendering:
- When the value of the reference changes, your component won't automatically re-render. This is useful when you want to keep track of something without affecting the UI.
```jsx import { useRef, useState, useEffect } from 'react';
function Counter() { const count = useRef(0); // Creating a reference to the number 0 const [renderCount, setRenderCount] = useState(0);
useEffect(() => { // This effect will run when the component renders setRenderCount(renderCount + 1); // But changing the count won't cause a re-render count.current = count.current + 1; }, [count, renderCount]); return ( <div> <p>Render Count: {renderCount}</p> <p>Count (no re-render): {count.current}</p> </div> );} ```
In this example, changing the
countwon't trigger a re-render of the component.When to Use
useRef:-
Use
useRefwhen you want to keep track of a value that doesn't affect your component's display directly and shouldn't cause re-renders. -
Common use cases include interacting with the DOM directly or storing mutable values that shouldn't trigger updates.
In summary,
useRefis a handy tool in React for creating references that won't cause your component to re-render when the referenced value changes. It's useful for scenarios where you need to keep track of something without impacting the UI. Certainly! Let's break down the statement in very simple terms with multiple examples:Explanation:
- Memoized Object:
- When you use
useRefto create a reference, React keeps track of it. Instead of creating a new reference object every time your component re-renders, React gives you the same reference object.
```jsx import { useRef } from 'react';
function MyComponent() { const myRef = useRef(0);
// On each render, myRef is the same object console.log(myRef === myRef); // true} ```
In this example,
myRefremains the same object across renders.- Avoiding Recreation:
- This memoization is useful when you don't want to recreate the reference object, especially when dealing with functions. It helps to maintain consistency and avoids unnecessary re-initialization.
```jsx import { useRef, useEffect } from 'react';
function EffectComponent() { const handleClick = useRef(() => { console.log('Button clicked!'); });
useEffect(() => { // Access the function without causing a re-render handleClick.current(); }, []); return <button onClick={handleClick.current}>Click me</button>;} ```
In this example,
handleClickremains the same function reference across renders.- Ensuring Same Object:
- The memoized object ensures that the reference remains consistent, even when the component re-renders. This is essential when dealing with external functions or references that you want to persist.
```jsx import { useRef } from 'react';
function ReferenceComponent() { const externalFunction = () => { console.log('External function'); };
const externalFunctionRef = useRef(externalFunction); // externalFunctionRef.current is the same function across renders console.log(externalFunctionRef.current === externalFunction); // true} ```
In this example,
externalFunctionRef.currentis the same function asexternalFunctionacross renders.Simplified Summary:
useRefgives you the same reference object across renders.- This is useful to avoid recreating the reference, especially when dealing with functions.
- It ensures consistency and stability, preventing unnecessary re-initialization.
In essence,
useRefhelps you maintain the same reference object, ensuring stability and preventing unnecessary re-creation, which is particularly handy when working with functions or external references.Sure, let's break downuseRefin simple terms with examples:What is
useRef?useRefis a React Hook that allows you to create a reference to a value that won't trigger a re-render when it changes. It's often used for things that are not directly related to rendering, like accessing or manipulating the DOM.How to Use
useRef:- Referencing a Value:
You can use
useRefto create a reference to a value, such as a number or an object. This value can be accessed and modified without causing your component to re-render.
```jsx import { useRef } from 'react';
function MyComponent() { const intervalRef = useRef(0); // Reference to a number const inputRef = useRef(null); // Reference to an element (initially null) // ... ```
- Manipulating the DOM:
useRefis commonly used for interacting with the DOM directly. For example, if you want to focus on an input element or keep track of some DOM-related state without triggering a re-render.
```jsx import { useRef, useEffect } from 'react';
function MyComponent() { const inputRef = useRef(null);
useEffect(() => { // Focus on the input element when the component mounts inputRef.current.focus(); }, []); return <input ref={inputRef} />;} ```
- Avoiding Recreating the Ref Contents:
useRefis memoized, meaning it returns the same object on every render. This is useful when you want to avoid recreating the ref object, especially when dealing with functions.
```jsx import { useRef, useEffect } from 'react';
function MyComponent() { const handleClick = useRef(() => { console.log('Button clicked!'); });
useEffect(() => { // Access the function without causing a re-render handleClick.current(); }, []); return <button onClick={handleClick.current}>Click me</button>;} ```
Parameters and Returns:
- Parameters:
-
initialValue: The value you want therefobject’scurrentproperty to be initially. It can be a value of any type. This argument is ignored after the initial render. -
Returns:
useRefreturns an object with a single property:current: Initially set to theinitialValueyou have passed. You can later set it to something else. If you pass therefobject to React as arefattribute to a JSX node, React will set itscurrentproperty.
In simple terms,
useRefis a tool to keep track of values or elements that won't cause your component to re-render every time they change. It's commonly used for interacting with the DOM and handling mutable values in a React component.
-
-
4cd.instructure.com 4cd.instructure.com
-
Academic dishonesty is defined as: an act of deception in which a student claims credit for the work or effort of another person or uses unauthorized materials or fabricated information in any academic work. Academic dishonesty is a violation of the DVC ‘Student Code of Conduct’ and will not be tolerated. Academic dishonesty diminishes the quality of scholarship at Diablo Valley College and hurts the majority of students who conduct themselves honestly.
This passage reveals the importance of academic integrity and how academic dishonesty is not tolerated at DVC.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
While trolling can be done for many reasons, some trolling communities take on a sort of nihilistic philosophy: it doesn’t matter if something is true or not, it doesn’t matter if people get hurt, the only thing that might matter is if you can provoke a reaction. We can see this nihilism show up in one of the versions of the self-contradictory “Rules of the Internet:” 8. There are no real rules about posting … 20. Nothing is to be taken seriously … 42. Nothing is Sacred Youtuber Innuendo Studios talks about the way arguments are made in a community like 4chan: You can’t know whether they mean what they say, or are only arguing as though they mean what they say. And entire debates may just be a single person stirring the pot [e.g., sockpuppets]. Such a community will naturally attract people who enjoy argument for its own sake, and will naturally trend oward the most extremte version of any opinion. In short, this is the free marketplace of ideas. No code of ethics, no social mores, no accountability. … It’s not that they’re lying, it’s that they just don’t care. […] When they make these kinds of arguments they legitimately do not care whether the words coming out of their mouths are true. If they cared, before they said something is true, they would look it up. The Alt-Right Playbook: The Card Says Moops by Innuendo Studios While there is a nihilistic worldview where nothing matters, we can see how this plays out practically, which is that they tend to protect their group (normally white and male), and tend to be extremely hostile to any other group. They will express extreme misogyny (like we saw in the Rules of the Internet: “Rule 30. There are no girls on the internet. Rule 31. TITS or GTFO - the choice is yours”), and extreme racism (like an invented Nazi My Little Pony character). Is this just hypocritical, or is it ethically wrong? It depends, of course, on what tools we use to evaluate this kind of trolling. If the trolls claim to be nihilists about ethics, or indeed if they are egoists, then they would argue that this doesn’t matter and that there’s no normative basis for objecting to the disruption and harm caused by their trolling. But on just about any other ethical approach, there are one or more reasons available for objecting to the disruptions and harm caused by these trolls! If the only way to get a moral pass on this type of trolling is to choose an ethical framework that tells you harming others doesn’t matter, then it looks like this nihilist viewpoint isn’t deployed in good faith1. Rather, with any serious (i.e., non-avoidant) moral framework, this type of trolling is ethically wrong for one or more reasons (though how we explain it is wrong depends on the specific framework).
Trolling can be driven by a nihilistic mindset where empathy is disregarded, aiming solely to provoke reactions, often manifesting as hostility towards specific groups. This form of trolling is widely condemned as it inflicts harm, failing to adhere to basic principles of respect and integrity.
-
7.6. Ethics and Trolling# 7.6.1. Background: Forming Groups# Every “we” implies a not-“we”. A group is constituted in part by who it excludes. Think back to the origin of humans caring about authenticity: if being able to trust each other is so important, then we need to know WHICH people are supposed to be entangled in those bonds of mutual trust with us, and which are not from our own crew. As we have developed larger and larger societies, states, and worldwide communities, the task of knowing whom to trust has become increasingly large. All groups have variations within them, and some variations are seen as normal. But the bigger groups get, the more variety shows up, and starts to feel palpable. In a nation or community where you don’t know every single person, how do you decide who’s in your squad? One answer to this challenge is that we use various heuristics (that is, shortcuts for thinking) like stereotypes and signaling to quickly guess where a person stands in relation to us. Sometimes wearing items of a certain brand signals to people with similar commitments that you might be on the same page. Sometimes features that are strongly associated with certain social groups—stereotypes—are assumed to tell us whether or not we can trust someone. Have you ever tried to change or mask your accent, to avoid being marked as from a certain region? Have you ever felt the need to conceal something about yourself that is often stereotyped, or to use an ingroup signal to deflect people’s attention from a stereotyped feature? There is a reason why stereotypes are so tenacious: they work… sort of. Humans are brilliant at finding patterns, and we use pattern recognition to increase the efficiency of our cognitive processing. We also respond to patterns and absorb patterns of speech production and style of dress from the people around us. We do have a tendency to display elements of our history and identity, even if we have never thought about it before. This creates an issue, however, when the stereotype is not apt in some way. This might be because we diverge in some way from the categories that mark us, so the stereotype is inaccurate. Or this might be because the stereotype also encodes value judgments that are unwarranted, and which lead to problems with implicit bias. Some people do not need to think loads about how they present in order to come across to people in ways that are accurate and supportive of who they really are. Some people think very carefully about how they curate a set of signals that enable them to accurately let people know who they are or to conceal who they are from people outside their squad. Because patterns are so central to how our brains process information, patterns become extremely important to how societies change or stay the same. TV tropes is a website that tracks patterns in media, such as the jump scare The Seven Basic Plots Patterns build habits. Habits build norms. Norms build our reality. To create a social group and have it be sustainable, we depend on stable patterns, habits, and norms to create the reality of the grouping. In a diverse community, there are many subsets of patterns, habits, and norms which go into creating the overall social reality. Part of how people manage their social reality is by enforcing the patterns, habits, and norms which identify us; another way we do this is by enforcing, or policing, which subsets of patterns, habits, and norms get to be recognized as valid parts of the broader social reality. Both of these tactics can be done in appropriate, just, and responsible ways, or in highly unjust ways. 7.6.2. Ethics of Disruption (Trolling)# Trolling is a method of disrupting the way things are, including group structure and practices. Like these group-forming practices, disruptive trolling can be deployed in just or unjust ways. (We will come back to that.) These disruptive tactics can also be engaged with different moods, ranging from playful (like some flashmobs), to demonstrative (like activism and protests), to hostile, to warring, to genocidal. You may have heard people say that the difference between a coup and a revolution is whether it succeeds and gets to later tell the story, or gets quashed. You may have also heard that the difference between a traitor and a hero depends on who is telling the story. As this class discusses trolling, as well as many of the other topics of social media behavior coming up in the weeks ahead, you are encouraged to bear this duality of value in mind. Trolling is a term given to describe behavior that aims to disrupt (among other things). To make value judgments or ethical judgments about instances of disruptive behavior, we will need to be thoughtful and nuanced about how we decide to pass judgments. One way to begin examining any instance of disruptive behavior is to ask what is being disrupted: a pattern, a habit, a norm, a whole community? And how do we judge the value of the thing being disrupted? Returning to the difference between a coup and a revolution, we might say that a national-level disruption is a coup if it fails, and a revolution if it succeeds. Or we might say that such a disruption is a coup if it intends to disrupt a legitimate instance of political domination/statehood, but a revolution if the instance of political domination is illegitimate. If you take a close look at English-language headlines in the news about uprisings occurring near to or far from here, it should become quickly apparent that both of these reasons can drive an author’s choice to style an event as a coup. To understand what the author is trying to say, we need to look inside the situation and see what assumptions are driving their choice to characterize the disruption in the way that they do. Trolling is disruptive behavior, and whether we class it as problematic or okay depends in part on how we judge the legitimacy of the social reality which is being disrupted. Trolling can be used, in principle, for good or bad ends. 7.6.3. Trolling and Nihilism# While trolling can be done for many reasons, some trolling communities take on a sort of nihilistic philosophy: it doesn’t matter if something is true or not, it doesn’t matter if people get hurt, the only thing that might matter is if you can provoke a reaction. We can see this nihilism show up in one of the versions of the self-contradictory “Rules of the Internet:” 8. There are no real rules about posting … 20. Nothing is to be taken seriously … 42. Nothing is Sacred Youtuber Innuendo Studios talks about the way arguments are made in a community like 4chan: You can’t know whether they mean what they say, or are only arguing as though they mean what they say. And entire debates may just be a single person stirring the pot [e.g., sockpuppets]. Such a community will naturally attract people who enjoy argument for its own sake, and will naturally trend oward the most extremte version of any opinion. In short, this is the free marketplace of ideas. No code of ethics, no social mores, no accountability. … It’s not that they’re lying, it’s that they just don’t care. […] When they make these kinds of arguments they legitimately do not care whether the words coming out of their mouths are true. If they cared, before they said something is true, they would look it up. The Alt-Right Playbook: The Card Says Moops by Innuendo Studios While there is a nihilistic worldview where nothing matters, we can see how this plays out practically, which is that they tend to protect their group (normally white and male), and tend to be extremely hostile to any other group. They will express extreme misogyny (like we saw in the Rules of the Internet: “Rule 30. There are no girls on the internet. Rule 31. TITS or GTFO - the choice is yours”), and extreme racism (like an invented Nazi My Little Pony character). Is this just hypocritical, or is it ethically wrong? It depends, of course, on what tools we use to evaluate this kind of trolling. If the trolls claim to be nihilists about ethics, or indeed if they are egoists, then they would argue that this doesn’t matter and that there’s no normative basis for objecting to the disruption and harm caused by their trolling. But on just about any other ethical approach, there are one or more reasons available for objecting to the disruptions and harm caused by these trolls! If the only way to get a moral pass on this type of trolling is to choose an ethical framework that tells you harming others doesn’t matter, then it looks like this nihilist viewpoint isn’t deployed in good faith1. Rather, with any serious (i.e., non-avoidant) moral framework, this type of trolling is ethically wrong for one or more reasons (though how we explain it is wrong depends on the specific framework). 7.6.4. Reflection Exercise# Revisit the K-Pop protest trolling example in section 7.3. Take your list of ethical frameworks from Chapter 2 and work through them one by one, applying each tool to the K-Pop trolling. For each theory, think of how many different ways the theory could hook up with the example. For example, when using a virtue ethics type of tool, consider how many different people’s character and flourishing could be developed through this? When using a tool based on outcomes, like consequentialism, how many different elements of the outcome can you think of? The goal here is to come up with as many variations as you can, to see how the tools of ethical analysis can help us see into different aspects of the situation. Once you have made your big list of considerations, choose 2-3 items that, in your view, feel most important. Based on those 2-3 items, do you evaluate this trolling event as having been morally good? Why? What changes to this example would change your overall decision on whether the action is ethical?
The section provides a profound exploration of the complexities involved in understanding and evaluating disruptive behaviors in social media contexts. It compellingly illustrates how the formation of groups, the use of stereotypes, and the enforcement of norms are all deeply intertwined with our cognitive processes and societal structures. The examination of trolling as a form of disruption that can be deployed for both just and unjust ends invites readers to reflect on the multifaceted nature of these actions and their ethical implications.
-
-
developer.mozilla.org developer.mozilla.org
-
GuardSince headers can be sent in requests and received in responses, and have various limitations about what information can and should be mutable, headers' objects have a guard property. This is not exposed to the Web, but it affects which mutation operations are allowed on the headers object. Possible guard values are: none: default. request: guard for a headers object obtained from a request (Request.headers). request-no-cors: guard for a headers object obtained from a request created with Request.mode no-cors. response: guard for a headers object obtained from a response (Response.headers). immutable: guard that renders a headers object read-only; mostly used for ServiceWorkers. Note: You may not append or set the Content-Length header on a guarded headers object for a response. Similarly, inserting Set-Cookie into a response header is not allowed: ServiceWorkers are not allowed to set cookies via synthesized responses. Response objectsAs you have seen above, Response instances are returned when fetch() promises are resolved. The most common response properties you'll use are: Response.status — An integer (default value 200) containing the response status code. Response.statusText — A string (default value ""), which corresponds to the HTTP status code message. Note that HTTP/2 does not support status messages. Response.ok — seen in use above, this is a shorthand for checking that status is in the range 200-299 inclusive. This returns a boolean value. They can also be created programmatically via JavaScript, but this is only really useful in ServiceWorkers, when you are providing a custom response to a received request using a respondWith() method: jsCopy to Clipboardconst myBody = new Blob(); addEventListener("fetch", (event) => { // ServiceWorker intercepting a fetch event.respondWith( new Response(myBody, { headers: { "Content-Type": "text/plain" }, }), ); }); Copy And SaveShareAsk Copilot The Response() constructor takes two optional arguments — a body for the response, and an init object (similar to the one that Request() accepts.) Note: The static method error() returns an error response. Similarly, redirect() returns a response resulting in a redirect to a specified URL. These are also only relevant to Service Workers. BodyBoth requests and responses may contain body data. A body is an instance of any of the following types: ArrayBuffer TypedArray (Uint8Array and friends) DataView Blob File String, or a string literal URLSearchParams FormData The Request and Response interfaces share the following methods to extract a body. These all return a promise that is eventually resolved with the actual content. Request.arrayBuffer() / Response.arrayBuffer() Request.blob() / Response.blob() Request.formData() / Response.formData() Request.json() / Response.json() Request.text() / Response.text() This makes usage of non-textual data much easier than it was with XHR. Request bodies can be set by passing body parameters: jsCopy to Clipboardconst form = new FormData(document.getElementById("login-form")); fetch("/login", { method: "POST", body: form, }); Copy And SaveShareAsk Copilot Both request and response (and by extension the fetch() function), will try to intelligently determine the content type. A request will also automatically set a Content-Type header if none is set in the options parameter.Feature detectionFetch API support can be detected by checking for the existence of Headers, Request, Response or fetch() on the Window or Worker scope. For example: jsCopy to Clipboardif (window.fetch) { // run my fetch request here } else { // do something with XMLHttpRequest? } Copy And SaveShareAsk CopilotDifferences from jQuery.ajax()The fetch specification differs from jQuery.ajax() in the following significant ways: The promise returned from fetch() won't reject on HTTP errors even if the response is an HTTP 404 or 500. Instead, as soon as the server responds with headers, the promise will resolve (with the ok property of the response set to false if the response isn't in the range 200–299). The promise will only reject on network failure or if anything prevented the request from completing. Unless fetch() is called with the credentials option set to include, fetch(): won't send cookies in cross-origin requests won't set any cookies sent back in cross-origin responses As of August 2018, the default credentials policy changed to same-origin. See also ServiceWorker API HTTP access control (CORS) HTTP Fetch polyfill Fetch examples on GitHub Found a content problem with this page?Edit the page on GitHub.Report the content issue.View the source on GitHub.Want to get more involved? Learn how to contribute.This page was last modified on Aug 18, 2023 by MDN contributors.
Certainly! Let's break down the provided information into simple terms:
- Guard in Headers:
- Headers are like additional notes attached to an HTTP request or response.
- They have a property called "guard" that determines which operations are allowed on the headers object.
- Guard values include:
none(default): No specific restrictions.request: Applied to headers obtained from a request.request-no-cors: Applied to headers from a no-cors request.response: Applied to headers obtained from a response.immutable: Renders headers read-only, commonly used in ServiceWorkers.
Example:
javascript const myHeaders = new Headers(); // Applying guard to headers obtained from a request const requestHeaders = new Headers(myHeaders, { guard: "request" });- Response Objects:
- When you make a request using
fetch(), it returns aResponseobject. - Key properties include:
Response.status: An integer indicating the response status code (e.g., 200 for success).Response.statusText: A string corresponding to the HTTP status code message.Response.ok: A boolean indicating if the status is in the range 200-299.
Example:
javascript const response = await fetch("https://example.com/api/data"); console.log(response.status); // 200 console.log(response.statusText); // OK console.log(response.ok); // true- Creating Response Object Programmatically:
- You can create a
Responseobject programmatically in a ServiceWorker. - This is useful when providing a custom response to a received request using
respondWith().
Example: ```javascript const myBody = new Blob();
addEventListener("fetch", (event) => { // ServiceWorker intercepting a fetch event.respondWith( new Response(myBody, { headers: { "Content-Type": "text/plain" }, }), ); }); ```
- Body Content in Requests and Responses:
- Both requests and responses may have body content, which can be of various types (e.g., ArrayBuffer, Blob, JSON).
- Methods like
arrayBuffer(),blob(),formData(),json(), andtext()help extract the body content.
Example:
javascript const responseData = await response.json(); // Or for request body const formData = new FormData(document.getElementById("myForm")); fetch("/api/data", { method: "POST", body: formData, });- Feature Detection:
- You can check if the Fetch API is supported in a browser by looking for the existence of
fetchon thewindoworWorkerscope.
Example:
javascript if (window.fetch) { // Fetch is supported, proceed with fetch requests } else { // Use alternative like XMLHttpRequest }- Differences from jQuery.ajax():
- The Fetch API differs from jQuery.ajax() in terms of error handling and handling of credentials in cross-origin requests.
Example:
javascript fetch("https://example.com/api/data") .then((response) => { if (!response.ok) { throw new Error("Network response was not OK"); } return response.json(); }) .then((data) => { console.log(data); }) .catch((error) => { console.error("Error:", error); });These explanations and examples aim to simplify the concepts introduced in the provided information about Headers, Response objects, Body content, and feature detection in the Fetch API.
-
Uploading a fileFiles can be uploaded using an HTML <input type="file" /> input element, FormData() and fetch(). jsCopy to Clipboardasync function upload(formData) { try { const response = await fetch("https://example.com/profile/avatar", { method: "PUT", body: formData, }); const result = await response.json(); console.log("Success:", result); } catch (error) { console.error("Error:", error); } } const formData = new FormData(); const fileField = document.querySelector('input[type="file"]'); formData.append("username", "abc123"); formData.append("avatar", fileField.files[0]); upload(formData); Copy And SaveShareAsk CopilotUploading multiple filesFiles can be uploaded using an HTML <input type="file" multiple /> input element, FormData() and fetch(). jsCopy to Clipboardasync function uploadMultiple(formData) { try { const response = await fetch("https://example.com/posts", { method: "POST", body: formData, }); const result = await response.json(); console.log("Success:", result); } catch (error) { console.error("Error:", error); } } const photos = document.querySelector('input[type="file"][multiple]'); const formData = new FormData(); formData.append("title", "My Vegas Vacation"); for (const [i, photo] of Array.from(photos.files).entries()) { formData.append(`photos_${i}`, photo); } uploadMultiple(formData); Copy And SaveShareAsk CopilotProcessing a text file line by lineThe chunks that are read from a response are not broken neatly at line boundaries and are Uint8Arrays, not strings. If you want to fetch a text file and process it line by line, it is up to you to handle these complications. The following example shows one way to do this by creating a line iterator (for simplicity, it assumes the text is UTF-8, and doesn't handle fetch errors). jsCopy to Clipboardasync function* makeTextFileLineIterator(fileURL) { const utf8Decoder = new TextDecoder("utf-8"); const response = await fetch(fileURL); const reader = response.body.getReader(); let { value: chunk, done: readerDone } = await reader.read(); chunk = chunk ? utf8Decoder.decode(chunk) : ""; const newline = /\r?\n/gm; let startIndex = 0; let result; while (true) { const result = newline.exec(chunk); if (!result) { if (readerDone) break; const remainder = chunk.substr(startIndex); ({ value: chunk, done: readerDone } = await reader.read()); chunk = remainder + (chunk ? utf8Decoder.decode(chunk) : ""); startIndex = newline.lastIndex = 0; continue; } yield chunk.substring(startIndex, result.index); startIndex = newline.lastIndex; } if (startIndex < chunk.length) { // Last line didn't end in a newline char yield chunk.substr(startIndex); } } async function run() { for await (const line of makeTextFileLineIterator(urlOfFile)) { processLine(line); } } run(); Copy And SaveShareAsk CopilotChecking that the fetch was successfulA fetch() promise will reject with a TypeError when a network error is encountered or CORS is misconfigured on the server-side, although this usually means permission issues or similar — a 404 does not constitute a network error, for example. An accurate check for a successful fetch() would include checking that the promise resolved, then checking that the Response.ok property has a value of true. The code would look something like this: jsCopy to Clipboardasync function fetchImage() { try { const response = await fetch("flowers.jpg"); if (!response.ok) { throw new Error("Network response was not OK"); } const myBlob = await response.blob(); myImage.src = URL.createObjectURL(myBlob); } catch (error) { console.error("There has been a problem with your fetch operation:", error); } }
Certainly! Let's break down each section with simple explanations and examples:
- Uploading a File:
- To upload a file, you can use an HTML
<input type="file" />element to let users choose a file. - Combine this with
FormData()to gather form data, and then usefetch()to send it to a server.
Example: ```javascript async function upload(formData) { try { const response = await fetch("https://example.com/profile/avatar", { method: "PUT", body: formData, }); const result = await response.json(); console.log("Success:", result); } catch (error) { console.error("Error:", error); } }
const formData = new FormData(); const fileField = document.querySelector('input[type="file"]'); formData.append("username", "abc123"); formData.append("avatar", fileField.files[0]);
upload(formData); ```
- Uploading Multiple Files:
- If you want to upload multiple files, use the
multipleattribute in the<input type="file" />element. - Similar to the single-file example, use
FormData()andfetch().
Example: ```javascript async function uploadMultiple(formData) { try { const response = await fetch("https://example.com/posts", { method: "POST", body: formData, }); const result = await response.json(); console.log("Success:", result); } catch (error) { console.error("Error:", error); } }
const photos = document.querySelector('input[type="file"][multiple]'); const formData = new FormData();
formData.append("title", "My Vegas Vacation"); for (const [i, photo] of Array.from(photos.files).entries()) { formData.append(
photos_${i}, photo); }uploadMultiple(formData); ```
- Processing a Text File Line by Line:
- If you need to process a text file line by line, you can create an iterator.
- This example assumes UTF-8 encoding and uses a TextDecoder.
Example: ```javascript async function* makeTextFileLineIterator(fileURL) { // ... (see provided code) }
async function run() { for await (const line of makeTextFileLineIterator(urlOfFile)) { processLine(line); } }
run(); ```
- Checking Fetch Success:
- It's essential to check if a fetch operation was successful.
- You can do this by checking
response.okto ensure the network response was okay.
Example:
javascript async function fetchImage() { try { const response = await fetch("flowers.jpg"); if (!response.ok) { throw new Error("Network response was not OK"); } const myBlob = await response.blob(); myImage.src = URL.createObjectURL(myBlob); } catch (error) { console.error("There has been a problem with your fetch operation:", error); } }These examples cover uploading files, handling multiple file uploads, processing text files line by line, and checking the success of a fetch operation. They demonstrate practical uses of the Fetch API in various scenarios.
-
Using the Fetch APIThe Fetch API provides a JavaScript interface for accessing and manipulating parts of the protocol, such as requests and responses. It also provides a global fetch() method that provides an easy, logical way to fetch resources asynchronously across the network. Unlike XMLHttpRequest that is a callback-based API, Fetch is promise-based and provides a better alternative that can be easily used in service workers. Fetch also integrates advanced HTTP concepts such as CORS and other extensions to HTTP. A basic fetch request looks like this: jsCopy to Clipboardasync function logMovies() { const response = await fetch("http://example.com/movies.json"); const movies = await response.json(); console.log(movies); } Copy And SaveShareAsk Copilot Here we are fetching a JSON file across the network, parsing it, and printing the data to the console. The simplest use of fetch() takes one argument — the path to the resource you want to fetch — and does not directly return the JSON response body but instead returns a promise that resolves with a Response object. The Response object, in turn, does not directly contain the actual JSON response body but is instead a representation of the entire HTTP response. So, to extract the JSON body content from the Response object, we use the json() method, which returns a second promise that resolves with the result of parsing the response body text as JSON. Note: See the Body section for similar methods to extract other types of body content. Fetch requests are controlled by the connect-src directive of Content Security Policy rather than the directive of the resources it's retrieving.
Certainly! Let's break down the code and concepts in simpler terms:
- Fetch API Overview:
- The Fetch API is a way for JavaScript to make network requests (like fetching data from a server) and handle the responses.
-
It's an improvement over the older XMLHttpRequest, providing a cleaner, promise-based syntax.
-
Basic Fetch Request:
- The
fetch()function is used to initiate a network request. - It takes a URL as an argument, specifying where to fetch data from.
-
The
fetch()function returns a Promise, which represents the result of the request. -
Asynchronous Code with
await: - The
asynckeyword in the function declaration indicates that the function contains asynchronous code. -
The
awaitkeyword is used to wait for the completion of a Promise before moving on to the next line of code. -
Fetching JSON Data:
- In the example, we're fetching data from "http://example.com/movies.json."
-
The response from the server is stored in the
responsevariable. -
Parsing JSON Response:
- The
response.json()method is used to parse the response body as JSON. -
It returns another Promise that resolves to the actual JSON data.
-
Logging the Result:
- The
moviesvariable holds the parsed JSON data. -
In this example, it's logged to the console. You could do other things with the data, like updating a webpage or performing calculations.
-
Summary:
fetch()initiates a network request and returns a Promise.awaitis used to wait for the Promise to resolve, making asynchronous code easier to read and write.response.json()parses the JSON content of the response.- The whole process is wrapped in an
asyncfunction for cleaner asynchronous handling.
Example in Simpler Terms: ```javascript async function logMovies() { // Fetch data from a server const response = await fetch("http://example.com/movies.json");
// Parse the data as JSON const movies = await response.json();
// Print the movies to the console console.log(movies); }
// Call the function to see it in action logMovies(); ```
This function fetches movie data, waits for the response, parses the JSON, and then logs the movies to the console. It's a convenient way to handle asynchronous operations in JavaScript.
-
-
www.biorxiv.org www.biorxiv.org
-
Reviewer #1 (Public Review):
This valuable study demonstrates a novel mechanism by which implicit motor adaptation saturates for large visual errors in a principled normative Bayesian manner. Additionally, the study revealed two notable empirical findings: visual uncertainty increases for larger visual errors in the periphery, and proprioceptive shifts/implicit motor adaptation are non-monotonic, rather than ramp-like. This study is highly relevant for researchers in sensory cue integration and motor learning. However, I find some areas where statistical quantification is incomplete, and the contextualization of previous studies to be puzzling.
Issue #1: Contextualization of past studies.
While I agree that previous studies have focused on how sensory errors drive motor adaptation (e.g., Burge et al., 2008; Wei and Kording, 2009), I don't think the PReMo model was contextualized properly. Indeed, while PReMo should have adopted clearer language - given that proprioception (sensory) and kinaesthesia (perception) have been used interchangeably, something we now make clear in our new study (Tsay, Chandy, et al. 2023) - PReMo's central contribution is that a perceptual error drives implicit adaptation (see Abstract): the mismatch between the felt (perceived) and desired hand position. The current paper overlooks this contribution. I encourage the authors to contextualize PReMo's contribution more clearly throughout. Not mentioned in the current study, for example, PReMo accounts for the continuous changes in perceived hand position in Figure 4 (Figure 7 in the PReMo study).
There is no doubt that the current study provides important additional constraints on what determines perceived hand position: Firstly, it offers a normative Bayesian perspective in determining perceived hand position. PReMo suggests that perceived hand position is determined by integrating motor predictions with proprioception, then adding a proprioceptive shift; PEA formulates this as the optimal integration of these three inputs. Secondly, PReMo assumed visual uncertainty to remain constant for different visual errors; PEA suggests that visual uncertainty ought to increase (but see Issue #2).
Issue #2: Failed replication of previous results on the effect of visual uncertainty.
2a. A key finding of this paper is that visual uncertainty linearly increases in the periphery; a constraint crucial for explaining the non-monotonicity in implicit adaptation. One notable methodological deviation from previous studies is the requirement to fixate on the target: Notably, in the current experiments, participants were asked to fixate on the target, a constraint not imposed in previous studies. In a free-viewing environment, visual uncertainty may not attenuate as fast, and hence, implicit adaptation does not attenuate as quickly as that revealed in the current design with larger visual errors. Seems like this current fixation design, while important, needs to be properly contextualized considering how it may not represent most implicit adaptation experiments.
2b. Moreover, the current results - visual uncertainty attenuates implicit adaptation in response to large, but not small, visual errors - deviates from several past studies that have shown that visual uncertainty attenuates implicit adaptation to small, but not large, visual errors (Tsay, Avraham, et al. 2021; Makino, Hayashi, and Nozaki, n.d.; Shyr and Joshi 2023). What do the authors attribute this empirical difference to? Would this free-viewing environment also result in the opposite pattern in the effect of visual uncertainty on implicit adaptation for small and large visual errors?
2c. In the current study, the measure of visual uncertainty might be inflated by brief presentation times of comparison and referent visual stimuli (only 150 ms; our previous study allowed for a 500 ms viewing time to make sure participants see the comparison stimuli). Relatedly, there are some individuals whose visual uncertainty is greater than 20 degrees standard deviation. This seems very large, and less likely in a free-viewing environment.
2d. One important confound between clear and uncertain (blurred) visual conditions is the number of cursors on the screen. The number of cursors may have an attenuating effect on implicit adaptation simply due to task-irrelevant attentional demands (Parvin et al. 2022), rather than that of visual uncertainty. Could the authors provide a figure showing these blurred stimuli (gaussian clouds) in the context of the experimental paradigm? Note that we addressed this confound in the past by comparing participants with and without low vision, where only one visual cursor is provided for both groups (Tsay, Tan, et al. 2023).
Issue #3: More methodological details are needed.
3a. It's unclear why, in Figure 4, PEA predicts an overshoot in terms of perceived hand position from the target. In PReMo, we specified a visual shift in the perceived target position, shifted towards the adapted hand position, which may result in overshooting of the perceived hand position with this target position. This visual shift phenomenon has been discovered in previous studies (e.g., (Simani, McGuire, and Sabes 2007)).
3b. The extent of implicit adaptation in Experiment 2, especially with smaller errors, is unclear. The implicit adaptation function seems to be still increasing, at least by visual inspection. Can the authors comment on this trend, and relatedly, show individual data points that help the reader appreciate the variability inherent to these data?
3c. The same participants were asked to return for multiple days/experiments. Given that the authors acknowledge potential session effects, with attenuation upon re-exposure to the same rotation (Avraham et al. 2021), how does re-exposure affect the current results? Could the authors provide clarity, perhaps a table, to show shared participants between experiments and provide evidence showing how session order may not be impacting results?
3d. The number of trials per experiment should be detailed more clearly in the Methods section (e.g., Exp 4). Moreover, could the authors please provide relevant code on how they implemented their computational models? This would aid in future implementation of these models in future work. I, for one, am enthusiastic to build on PEA.
3f. In addition to predicting a correlation between proprioceptive shift and implicit adaptation on a group level, both PReMo and PEA (but not causal inference) predict a correlation between individual differences in proprioceptive shift and proprioceptive uncertainty with the extent of implicit adaptation (Tsay, Kim, et al. 2021). Interestingly, shift and uncertainty are independent (see Figures 4F and 6C in Tsay et al, 2021). Does PEA also predict independence between shift and uncertainty? It seems like PEA does predict a correlation.
References:
Avraham, Guy, Ryan Morehead, Hyosub E. Kim, and Richard B. Ivry. 2021. "Reexposure to a Sensorimotor Perturbation Produces Opposite Effects on Explicit and Implicit Learning Processes." PLoS Biology 19 (3): e3001147.<br /> Makino, Yuto, Takuji Hayashi, and Daichi Nozaki. n.d. "Divisively Normalized Neuronal Processing of Uncertain Visual Feedback for Visuomotor Learning."<br /> Parvin, Darius E., Kristy V. Dang, Alissa R. Stover, Richard B. Ivry, and J. Ryan Morehead. 2022. "Implicit Adaptation Is Modulated by the Relevance of Feedback." BioRxiv. https://doi.org/10.1101/2022.01.19.476924.<br /> Shyr, Megan C., and Sanjay S. Joshi. 2023. "A Case Study of the Validity of Web-Based Visuomotor Rotation Experiments." Journal of Cognitive Neuroscience, October, 1-24.<br /> Simani, M. C., L. M. M. McGuire, and P. N. Sabes. 2007. "Visual-Shift Adaptation Is Composed of Separable Sensory and Task-Dependent Effects." Journal of Neurophysiology 98 (5): 2827-41.<br /> Tsay, Jonathan S., Guy Avraham, Hyosub E. Kim, Darius E. Parvin, Zixuan Wang, and Richard B. Ivry. 2021. "The Effect of Visual Uncertainty on Implicit Motor Adaptation." Journal of Neurophysiology 125 (1): 12-22.<br /> Tsay, Jonathan S., Anisha M. Chandy, Romeo Chua, R. Chris Miall, Jonathan Cole, Alessandro Farnè, Richard B. Ivry, and Fabrice R. Sarlegna. 2023. "Implicit Motor Adaptation and Perceived Hand Position without Proprioception: A Kinesthetic Error May Be Derived from Efferent Signals." BioRxiv. https://doi.org/10.1101/2023.01.19.524726.<br /> Tsay, Jonathan S., Hyosub E. Kim, Darius E. Parvin, Alissa R. Stover, and Richard B. Ivry. 2021. "Individual Differences in Proprioception Predict the Extent of Implicit Sensorimotor Adaptation." Journal of Neurophysiology, March. https://doi.org/10.1152/jn.00585.2020.<br /> Tsay, Jonathan S., Steven Tan, Marlena Chu, Richard B. Ivry, and Emily A. Cooper. 2023. "Low Vision Impairs Implicit Sensorimotor Adaptation in Response to Small Errors, but Not Large Errors." Journal of Cognitive Neuroscience, January, 1-13.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
4.4. How Data Informs Ethics# Think for a minute about consequentialism. On this view, we should do whatever results in the best outcomes for the most people. One of the classic forms of this approach is utilitarianism, which says we should do whatever maximizes ‘utility’ for most people. Confusingly, ‘utility’ in this case does not refer to usefulness, but to a sort of combo of happiness and wellbeing. When a utilitarian tries to decide how to act, they take stock of all the probable outcomes, and what sort of ‘utility’ or happiness will be brought about for all parties involved. This process is sometimes referred to by philosophers as ‘utility calculus’. When I am trying to calculate the expected net utility gain from a projected set of actions, I am engaging in ‘utility calculus’ (or, in normal words, utility calculations). Now, there are many reasons one might be suspicious about utilitarianism as a cheat code for acting morally, but let’s assume for a moment that utilitarianism is the best way to go. When you undertake your utility calculus, you are, in essence, gathering and responding to data about the projected outcomes of a situation. This means that how you gather your data will affect what data you come up with. If you have really comprehensive data about potential outcomes, then your utility calculus will be more complicated, but will also be more realistic. On the other hand, if you have only partial data, the results of your utility calculus may become skewed. If you think about the potential impact of a set of actions on all the people you know and like, but fail to consider the impact on people you do not happen to know, then you might think those actions would lead to a huge gain in utility, or happiness. When we think about how data is used online, the idea of a utility calculus can help remind us to check whether we’ve really got enough data about how all parties might be impacted by some actions. Even if you are not a utilitarian, it is good to remind ourselves to check that we’ve got all the data before doing our calculus. This can be especially important when there is a strong social trend to overlook certain data. Such trends, which philosophers call ‘pernicious ignorance’, enable us to overlook inconvenient bits of data to make our utility calculus easier or more likely to turn out in favor of a preferred course of action. Can you think of an example of pernicious ignorance in social media interaction? What’s something that we might often prefer to overlook when deciding what is important? One classic example is the tendency to overlook the interests of children and/or people abroad when we post about travels, especially when fundraising for ‘charity tourism’. One could go abroad, and take a picture of a cute kid running through a field, or a selfie with kids one had traveled to help out. It was easy, in such situations, to decide the likely utility of posting the photo on social media based on the interest it would generate for us, without thinking about the ethics of using photos of minors without their consent. This was called out by The Onion in a parody article, titled “6-Day Visit To Rural African Village Completely Changes Woman’s Facebook Profile Picture”. The reckoning about how pernicious ignorance had allowed many to feel comfortable leaving the interests of many out of the utility calculus for use of images online continued. You can read an article about it here, or see a similar reckoning discussed by National Geographic: “For Decades, Our Coverage Was Racist. To Rise Above Our Past, We Must Acknowledge It”.
This section particularly the exploration of utilitarianism in the context of social media, provides a thought-provoking perspective on ethical decision-making. The concept of the utility calculus as a method of predicting the outcomes and moral implications of our actions highlights the importance of comprehensive data collection and the potential pitfalls of biased or incomplete data. The discussion cleverly highlighted the challenges of navigating social media in an ethical manner, which must consider
-
Now, there are many reasons one might be suspicious about utilitarianism as a cheat code for acting morally, but let’s assume for a moment that utilitarianism is the best way to go. When you undertake your utility calculus, you are, in essence, gathering and responding to data about the projected outcomes of a situation.
I think that utilitarianism is not fit for every conditions and I don't actually agree with this concept. I think that personal benefits and feelings is also very important. People do not need to sacrifice in order to make everyone happy.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
I expereinced what is context collapse unkowingly recently and learning about the dramaturgical analysis it made me feel alot better about it. I hosted a birthday party and decided I wanted who I wanted around me for my birthday and without much thought, invited a bunch of people. To my surprise I hadn't thought about how all these people wold mesh together and had a mini identity crisis because of it. The code switching the room was crazy.
-
While modified behaviors to present a persona or code switch may at first look inauthentic, they can be a way of authentically expressing ourselves in each particular setting. For example: Speaking in a formal manner when giving a presentation or answering questions in a courtroom may be a way of authentically sharing your experiences and emotions, but tailored to the setting Sharing those same experiences and emotions with a close friend may look very different, but still can be authentic Different communities have different expectations and meanings around behavior and presentation. So what is appropriate authentic behavior depends on what group you are from and what group you are interacting with, like this gif of President Obama below:
This statement emphasises the relativity of behaviour, i.e. the same behaviour may present different expressions in different contexts. This quote emphasises that authenticity is a relative concept that depends on the specific environment and social context in which an individual finds themselves. For example, through the example of sharing an experience with a close friend, it emphasises that authenticity in an intimate relationship may be expressed in a more relaxed and natural way.
-
6.4. Personas, Code Switching, Context Collapse# The way we present ourselves to others around us (our behavior, social role, etc.) is called our public persona. We also may change how we behave and speak depending on the situation or who we are around, which is called code-switching. While modified behaviors to present a persona or code switch may at first look inauthentic, they can be a way of authentically expressing ourselves in each particular setting. For example: Speaking in a formal manner when giving a presentation or answering questions in a courtroom may be a way of authentically sharing your experiences and emotions, but tailored to the setting Sharing those same experiences and emotions with a close friend may look very different, but still can be authentic Different communities have different expectations and meanings around behavior and presentation. So what is appropriate authentic behavior depends on what group you are from and what group you are interacting with, like this gif of President Obama below: Fig. 6.6 President Obama giving a very different handshakes to a white man and a Black man (Kevin Durant). See also this Key & Peele comedy sketch on greeting differences with Jordan Peele playing Obama, and also Key & Peele’s Obama’s Anger Translator sketch.# Read/watch more about code-switching here: How Code-Switching Explains The World ‘Key & Peele’ Is Ending. Here Are A Few Of Its Code Switch-iest Moments Still, modifications of behavior can also be inauthentic. In the YouTube Video Essay: YouTube: Manufacturing Authenticity (For Fun and Profit!) by Lindsay Ellis, Ellis explores nuances in authenticity as a YouTuber. She highlights the emotional labor of keeping emotional expressions consistent with their public persona, even when they are having different or conflicted feelings. She also highlights how various “calls to action” (e.g., “subscribe to my channel”) may be necessary for business and can be (and appear) authentic or inauthentic. 6.4.1. Context Collapse# Since we have different personas and ways of behaving in different groups of people, what happens if different groups of people are observing you at the same time? For example, someone might not know how to behave if they were at a restaurant with their friends and they noticed that their parents were seated at the table next to them. This is phenomenon is called “context collapse.” On social media, context collapse is a common concern, since on a social networking site you might be connected to very different people (family, different groups of friends, co-workers, etc.). Additionally, something that was shared within one context (like a private message), might get reposted in another context (publicly posted elsewhere). 6.4.2. Reflection Questions# How do you notice yourself changing how you express yourself in different situations, particularly on social media? Do you feel like those changes or expressions are authentic to who you are, do they compromise your authenticity in some way?
We act "code switch" in different places (being serious at work but relaxed with friends) and both ways can be the real us. On social media, when we post, all our different groups see the same posts, it can make us wonder if we're being true to ourselves in each situation.
-
which is called code-switching.
I know this label of "code switching" means an extreme of code switching, But it does come from the need to inherit the same attributes and beliefs of those around you to fit in. This can be related to a certain work environment "etc" where it is easier to agree to your boss than to contribute your own opinion. This can be an issue however when you are in a position with some power where your acts have possible influences compared to a boss employee scenario where the employee has very little to no power in their situation.
-
Different communities have different expectations and meanings around behavior and presentation. So what is appropriate authentic behavior depends on what group you are from and what group you are interacting with, like this gif of President Obama below: Fig. 6.6 President Obama giving a very different handshakes to a white man and a Black man (Kevin Durant). See also this Key & Peele comedy sketch on greeting differences with Jordan Peele playing Obama, and also Key & Peele’s Obama’s Anger Translator sketch.
I use code-switching on a daily basis. The way in which I speak and act at work or in class is completely different than the way in which I act at home with my family and friends. Even my online self tends to showcase my more formal side as if I am at work or another professional setting. This is honestly why I have multiple accounts; One of my accounts is more business and a representation of how I want to be perceived when in a formal setting whereas my other account highlights more of the ways I act at home with friends or family. Code-switching makes you feel safe and accepted in an environment that you feel would not be as accepting of your true self.
-
The way we present ourselves to others around us (our behavior, social role, etc.) is called our public persona. We also may change how we behave and speak depending on the situation or who we are around, which is called code-switching.
The prevalence of multiple personas on social media makes this intriguing to me. People frequently behave differently when they are in front of a screen. Furthermore, a lot of people identify quite differently.The concept of a public persona and code-switching also reflects the dynamic nature of human behavior and communication.
-
While modified behaviors to present a persona or code switch may at first look inauthentic, they can be a way of authentically expressing ourselves in each particular setting.
I feel that it takes practice to make it seem more authentic. Although it can be useful for certain situations, it can be draining by the end of it.
-
The way we present ourselves to others around us (our behavior, social role, etc.) is called our public persona. We also may change how we behave and speak depending on the situation or who we are around, which is called code-switching. While modified behaviors to present a persona or code switch may at first look inauthentic, they can be a way of authentically expressing ourselves in each particular setting. For example: Speaking in a formal manner when giving a presentation or answering questions in a courtroom may be a way of authentically sharing your experiences and emotions, but tailored to the setting Sharing those same experiences and emotions with a close friend may look very different, but still can be authentic Different communities have different expectations and meanings around behavior and presentation. So what is appropriate authentic behavior depends on what group you are from and what group you are interacting with, like this gif of President Obama below:
In my opinion, I think public personas and code-switching are intricate yet crucial facets of interpersonal communication. They enable people to successfully negotiate various social environments, showcasing various aspects of their true selves in polite and situation-appropriate ways. I also really like the example of Obama of how he used different type of movement to different audience. This is one of his way to show his social intelligence and respect to others.
-
-
www.startpage.com www.startpage.com
-
https://www.freecodecamp.org/news/use-typescript-with-react/ How to Use TypeScript with React - freeCodeCamp Nov 15, 2023 ... If the file does not contain any JSX-specific code, then you can use the .ts extension instead of the .tsx extension. To create a component in ...
-
-
mongoosejs.com mongoosejs.com
-
Under the Hood For queries with timestamps, Mongoose adds 2 properties to each update query: Add updatedAt to $set Add createdAt to $setOnInsert For example, if you run the below code: mongoose.set('debug', true); const userSchema = new Schema({ name: String }, { timestamps: true }); const User = mongoose.model('User', userSchema); await User.findOneAndUpdate({}, { name: 'test' }); You'll see the below output from Mongoose debug mode: Mongoose: users.findOneAndUpdate({}, { '$setOnInsert': { createdAt: new Date("Sun, 27 Feb 2022 00:26:27 GMT") }, '$set': { updatedAt: new Date("Sun, 27 Feb 2022 00:26:27 GMT"), name: 'test' }}, {...}) Notice the $setOnInsert for createdAt and $set for updatedAt. MongoDB's $setOnInsert operator applies the update only if a new document is upserted. So, for example, if you want to only set updatedAt if a new document is created, you can disable the updatedAt timestamp and set it yourself as shown below: await User.findOneAndUpdate({}, { $setOnInsert: { updatedAt: new Date() } }, { timestamps: { createdAt: true, updatedAt: false } });
Certainly! Let's break down the information in simpler terms with examples:
Under the Hood - MongoDB Update Queries with Timestamps:
- Properties Added by Mongoose:
-
When you perform update queries with timestamps enabled, Mongoose adds two special properties to the MongoDB update operation:
updatedAt: Added to the$setoperator. It represents the last update time.createdAt: Added to the$setOnInsertoperator. It represents the creation time and is applied only when a new document is upserted (inserted if not found).
-
Example - Update Query:
- Consider the following code:
```javascript const userSchema = new Schema({ name: String }, { timestamps: true }); const User = mongoose.model('User', userSchema);
await User.findOneAndUpdate({}, { name: 'test' }); ```
- In the debug output, you'll see MongoDB update operators like
$setOnInsertand$set:
plaintext Mongoose: users.findOneAndUpdate({}, { '$setOnInsert': { createdAt: new Date("Sun, 27 Feb 2022 00:26:27 GMT") }, '$set': { updatedAt: new Date("Sun, 27 Feb 2022 00:26:27 GMT"), name: 'test' }}, {...})- Explanation of
$setOnInsertand$set: $setOnInsert: It sets the specified values only if a new document is inserted during an upsert operation. In the example, it setscreatedAtonly if a new document is created.-
$set: It sets the specified values regardless of whether the document is new or existing. In the example, it setsupdatedAtand updates thename. -
Disabling
updatedAtTimestamp and Setting Manually: - If you want to handle
updatedAtmanually and disable automatic updates, you can do so:
javascript await User.findOneAndUpdate({}, { $setOnInsert: { updatedAt: new Date() } }, { timestamps: { createdAt: true, updatedAt: false } });- This way, you can control when
updatedAtis set, and it won't be automatically managed by Mongoose.
In simple terms, Mongoose adds special properties like
updatedAtandcreatedAtto MongoDB update queries when timestamps are enabled. These properties are essential for tracking update and creation times. You can customize the behavior by manually handling timestamps or adjusting the update options. -
Alternate Property Names For the purposes of these docs, we'll always refer to createdAt and updatedAt. But you can overwrite these property names as shown below. const userSchema = new Schema({ name: String }, { timestamps: { createdAt: 'created_at', // Use `created_at` to store the created date updatedAt: 'updated_at' // and `updated_at` to store the last updated date } }); Disabling Timestamps save(), updateOne(), updateMany(), findOneAndUpdate(), update(), replaceOne(), and bulkWrite() all support a timestamps option. Set timestamps: false to skip setting timestamps for that particular operation. let doc = await User.create({ name: 'test' }); console.log(doc.createdAt); // 2022-02-26T23:28:54.264Z console.log(doc.updatedAt); // 2022-02-26T23:28:54.264Z doc.name = 'test2'; // Setting `timestamps: false` tells Mongoose to skip updating `updatedAt` on this `save()` await doc.save({ timestamps: false }); console.log(doc.updatedAt); // 2022-02-26T23:28:54.264Z // Similarly, setting `timestamps: false` on a query tells Mongoose to skip updating // `updatedAt`. doc = await User.findOneAndUpdate({ _id: doc._id }, { name: 'test3' }, { new: true, timestamps: false }); console.log(doc.updatedAt); // 2022-02-26T23:28:54.264Z // Below is how you can disable timestamps on a `bulkWrite()` await User.bulkWrite([{ updateOne: { filter: { _id: doc._id }, update: { name: 'test4' }, timestamps: false } }]); doc = await User.findOne({ _id: doc._id }); console.log(doc.updatedAt); // 2022-02-26T23:28:54.264Z You can also set the timestamps option to an object to configure createdAt and updatedAt separately. For example, in the below code, Mongoose sets createdAt on save() but skips updatedAt. const doc = new User({ name: 'test' }); // Tell Mongoose to set `createdAt`, but skip `updatedAt`. await doc.save({ timestamps: { createdAt: true, updatedAt: false } }); console.log(doc.createdAt); // 2022-02-26T23:32:12.478Z console.log(doc.updatedAt); // undefined Disabling timestamps also lets you set timestamps yourself. For example, suppose you need to correct a document's createdAt or updatedAt property. You can do that by setting timestamps: false and setting createdAt yourself as shown below. let doc = await User.create({ name: 'test' }); // To update `updatedAt`, do a `findOneAndUpdate()` with `timestamps: false` and // `updatedAt` set to the value you want doc = await User.findOneAndUpdate({ _id: doc._id }, { updatedAt: new Date(0) }, { new: true, timestamps: false }); console.log(doc.updatedAt); // 1970-01-01T00:00:00.000Z // To update `createdAt`, you also need to set `strict: false` because `createdAt` // is immutable doc = await User.findOneAndUpdate({ _id: doc._id }, { createdAt: new Date(0) }, { new: true, timestamps: false, strict: false }); console.log(doc.createdAt); // 1970-01-01T00:00:00.000Z Timestamps on Subdocuments Mongoose also supports setting timestamps on subdocuments. Keep in mind that createdAt and updatedAt for subdocuments represent when the subdocument was created or updated, not the top level document. Overwriting a subdocument will also overwrite createdAt. const roleSchema = new Schema({ value: String }, { timestamps: true }); const userSchema = new Schema({ name: String, roles: [roleSchema] }); const doc = await User.create({ name: 'test', roles: [{ value: 'admin' }] }); console.log(doc.roles[0].createdAt); // 2022-02-27T00:22:53.836Z console.log(doc.roles[0].updatedAt); // 2022-02-27T00:22:53.836Z // Overwriting the subdocument also overwrites `createdAt` and `updatedAt` doc.roles[0] = { value: 'root' }; await doc.save(); console.log(doc.roles[0].createdAt); // 2022-02-27T00:22:53.902Z console.log(doc.roles[0].updatedAt); // 2022-02-27T00:22:53.902Z // But updating the subdocument preserves `createdAt` and updates `updatedAt` doc.roles[0].value = 'admin'; await doc.save(); console.log(doc.roles[0].createdAt); // 2022-02-27T00:22:53.902Z console.log(doc.roles[0].updatedAt); // 2022-02-27T00:22:53.909Z
Certainly! Let's simplify the information and examples provided:
Timestamps and Property Names:
- Custom Property Names:
- By default, Mongoose uses
createdAtandupdatedAtas timestamp properties. However, you can customize these names:
javascript const userSchema = new Schema({ name: String }, { timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' } });Now, instead of
createdAtandupdatedAt, your properties will be namedcreated_atandupdated_at.- Disabling Timestamps:
- You can choose to skip updating timestamps for specific operations by setting
timestamps: false.
```javascript // Example with save() await doc.save({ timestamps: false });
// Example with findOneAndUpdate() doc = await User.findOneAndUpdate({ _id: doc._id }, { name: 'test3' }, { new: true, timestamps: false }); ```
This prevents the
updatedAtfrom being automatically updated during those operations.- Custom Configuration:
- You can configure
createdAtandupdatedAtseparately using an object:
javascript await doc.save({ timestamps: { createdAt: true, updatedAt: false } });This example sets
createdAton save but skips updatingupdatedAt.- Disabling Timestamps and Setting Manually:
- If you need to correct or set timestamps manually:
``javascript // Example with updatingupdatedAt` doc = await User.findOneAndUpdate({ _id: doc._id }, { updatedAt: new Date(0) }, { new: true, timestamps: false });// Example with updating
createdAt(requires settingstrict: falsebecausecreatedAtis immutable) doc = await User.findOneAndUpdate({ _id: doc._id }, { createdAt: new Date(0) }, { new: true, timestamps: false, strict: false }); ```Timestamps on Subdocuments:
- Setting Timestamps on Subdocuments:
- You can also have timestamps on subdocuments:
javascript const roleSchema = new Schema({ value: String }, { timestamps: true }); const userSchema = new Schema({ name: String, roles: [roleSchema] });Here, each role in the
rolesarray will have its owncreatedAtandupdatedAt.- Overwriting Subdocuments and Timestamps:
- Overwriting a subdocument will also overwrite its
createdAtandupdatedAt.
javascript doc.roles[0] = { value: 'root' }; await doc.save();- Updating Subdocuments and Timestamps:
- Updating a subdocument preserves
createdAtand updatesupdatedAt.
javascript doc.roles[0].value = 'admin'; await doc.save();In simple terms, these features allow you to customize how timestamps are handled in your Mongoose models, including changing property names, disabling automatic updates for specific operations, and managing timestamps on subdocuments.
-
-
stylo.ecrituresnumeriques.ca stylo.ecrituresnumeriques.ca
-
code
la requête plutôt que le code ?
-
Exemple 1
c'est valable pour les autres images montrant des requêtes.
en markdown tu peux utiliser un balisage particulier pour encapsuler un bloc de code :
nom-du-langage query tousMesarticles { user { blablabla } }Cette notation évite d'avoir à gérer des images plutôt lourdes à la fois en terme de poids qu'en terme de maintenance (si la requête venait à changer, il faudrait générer une nouvelle image ...)
-
-
openclassrooms.com openclassrooms.com
-
Vous pouvez retrouver la version corrigée et finale du code ici.
Lorsqu'on est sur la page Contact ou Menu du site, le lien Accueil ne fonctionne pas...
-
-
mongoosejs.com mongoosejs.com
-
const schema = new Schema({ name: { type: String, required: true } }); const Cat = db.model('Cat', schema); // This cat has no name :( const cat = new Cat(); let error; try { await cat.save(); } catch (err) { error = err; } assert.equal(error.errors['name'].message, 'Path `name` is required.'); error = cat.validateSync(); assert.equal(error.errors['name'].message, 'Path `name` is required.');
Certainly! Let's break down the code and explanations in simpler terms:
- Schema Definition:
- You have defined a Mongoose schema for a "Cat" with a property called "name." The "name" field is of type String and is marked as required, meaning every cat must have a name.
javascript const schema = new Schema({ name: { type: String, required: true } });- Creating a Cat Model:
- You use the schema to create a Mongoose model named "Cat."
javascript const Cat = db.model('Cat', schema);- Creating a Cat Instance without a Name:
- You create a new cat instance without providing a name.
javascript const cat = new Cat();Now, this cat doesn't have a name.
- Attempting to Save the Cat:
- You try to save the cat using
cat.save().
javascript let error; try { await cat.save(); } catch (err) { error = err; }Since the "name" is marked as required in the schema, and the cat doesn't have a name, saving it should result in an error.
- Handling the Error:
- You catch the error that occurs during the save operation.
javascript assert.equal(error.errors['name'].message, 'Path `name` is required.');The error message indicates that the "name" field is required, and it points out that the "name" path is missing.
- Validating Sync:
- You also perform synchronous validation using
cat.validateSync().
javascript error = cat.validateSync();This is another way to trigger validation without saving the document. The error object will contain information about validation errors.
- Asserting the Validation Error:
- You assert that the error received from validation has the expected message indicating that the "name" path is required.
javascript assert.equal(error.errors['name'].message, 'Path `name` is required.');This assertion confirms that the validation is working as expected, and it identifies the issue with the missing "name" field.
In summary, the code demonstrates how Mongoose enforces validation rules specified in the schema, ensuring that essential fields, like "name" in this case, are present before saving a document.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
Log into Reddit (PRAW)# These are our normal steps get PRAW loaded and logged into Reddit import praw
It's always interesting, how you can just import a package and then write a few lines of code that feeds info to things from the package, and then the package does all the work for you after. I feel this must be a powerful thing in programming? Imagine the increase of productivity compared to when this is not a thing. I wonder if this was always a thing in programming? Maybe local imports were normal? How about one's like this from elsewhere? (Were they just downloaded manually and placed somewhere that can be access?)
-
-
www.ncbi.nlm.nih.gov www.ncbi.nlm.nih.gov
-
secrete “housekeeping” antibodies
This is like an OD diagnostic code telling you where the problem is. Got an XYZ receptor AA? something is fucking up your XYZ receptors
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
eLife assessment
This useful study uses a mouse model of pancreatic cancer to examine mitochondrial mass and structure in atrophying muscle along with aspects of mitochondrial metabolism in the same tissue. Most relevant are the solid transcriptomics and proteomics approaches to map out related changes in gene expression networks in muscle during cancer cachexia.
Response: We very much appreciate the positive feedback from the editors on our article and are delighted to have it published in eLife. Our sincere thanks to the Reviewers for their positive feedback on our work, and for their insightful and constructive comments.
Reviewer #1 (Public Review):
Summary:
This important study provides a comprehensive evaluation of skeletal muscle mitochondrial function and remodeling in a genetically engineered mouse model of pancreatic cancer cachexia. The study builds upon and extends previous findings that implicate mitochondrial defects in the pathophysiology of cancer cachexia. The authors demonstrate that while the total quantity of mitochondria from skeletal muscles of mice with pancreatic cancer cachexia is similar to controls, mitochondria were elongated with disorganized cristae, and had reduced oxidative capacity. The mitochondrial dysfunction was not associated with exercise-induced metabolic stress (insufficient ATP production), suggesting compensation by glycolysis or other metabolic pathways. However, mitochondrial dysfunction can lead to increased production of ROS/oxidative stress and would be expected to interfere with carbohydrate and lipid metabolism, events that are linked to cancer-induced muscle loss. The data are convincing and were collected and analyzed using state-of-the-art techniques, with unbiased proteomics and transcriptomics analyses supporting most of their conclusions.
Additional Strengths:
The authors utilize a genetically engineered mouse model of pancreatic cancer which recapitulates key aspects of human PDAC including the development of cachexia, making the model highly appropriate and translational.
The authors perform transcriptomic and proteomics analyses on the same tissue, providing a comprehensive analysis of the transcriptional networks and protein networks changed in the context of PDAC cachexia.
Weaknesses:
The authors refer to skeletal muscle wasting induced by PDAC as sarcopenia. However, the term sarcopenia is typically reserved for the loss of skeletal muscle mass associated with aging.
Response: We agree that the term sarcopenia initially refers to aged muscle, but its use has spread to other fields, including oncology (for example, in this article, which we quote: Mintziras I et al. Sarcopenia and sarcopenic obesity are significantly associated with poorer overall survival in patients with pancreatic cancer: Systematic review and meta-analysis. Int J Surg 2018;59:19-26). Actually, the term sarcopenia is now widely used in the literature and in the clinic to describe the loss of muscle mass and strength in cancer patients (see for example, this recent review: Papadopetraki A. et al. The Role of Exercise in Cancer-Related Sarcopenia and Sarcopenic Obesity. Cancers 2023;15;5856).
In Figure 2, the MuRF1 IHC staining appears localized to the extracellular space surrounding blood vessels and myofibers-which causes concern as to the specificity of the antibody staining. MuRF1, as a muscle-specific E3 ubiquitin ligase that degrades myofibrillar proteins, would be expected to be expressed in the cytosol of muscle fibers.
Response: We agree that MuRF1 IHC staining was also observed in the extracellular space, which was a surprise, for which we have no explanation to date.
Disruptions to skeletal muscle metabolism in PDAC mice are predicted based on mitochondrial dysfunction and the transcriptomic and proteomics data. The manuscript could therefore be strengthened by additional measures looking at skeletal muscle metabolites, or linking the findings to previous work that has looked at the skeletal muscle metabolome in related models of PDAC cachexia (Neyroud et al., 2023).
Response: We agree that our omics data could be strengthened by additional measures looking at skeletal muscle metabolites. It's an excellent suggestion to parallel the transcriptomic and proteomic data we obtained on the gastrocnemius muscle with the metabolomic data obtained by Neyroud et al. on the same muscle. These authors used another mouse model of PDAC than our KIC GEMM model, namely the allograft model implanting KPC cells (derived from the pancreatic tumor of KPC mice, another PDAC GEMM model) into syngeneic recipient mice. They carried out a proteomic study on the tibialis anterior muscle and a metabolomic study on the gastrocnemius muscle. Proteomics data identified in particular a KPC-induced reduction in the relative abundance of proteins annotating to oxidative phosphorylation, consistently with our data showing reduced mitochondrial activity pathways. Metabolomic data showed reduced abundance of many amino acids as expected, and of intermediates of the mitochondrial TCA cycle (malate and fumarate) in KPC-atrophied muscle consistently with reduced mitochondrial metabolic pathways that we illustrated. In contrast, metabolites that were increased in abundance included those related to oxidative stress and redox homeostasis, which is not surprising regarding the profound oxidative stress affecting atrophied muscle. Finally, we noted in Neyroud's metabolomic data the dysregulation of certain lipids and nucleotides in atrophied muscle, which is very interesting to relate to our study describing alterations in lipid and nucleotide metabolic pathways.
Reviewer #2 (Public Review):
The present work analyzed the mitochondrial function and bioenergetics in the context of cancer cachexia induced by pancreatic cancer (PDAC). The authors used the KIC transgenic mice that spontaneously develop PDAC within 9-11 weeks of age. They deeply characterize bioenergetics in living mice by magnetic resonance (MR) and mitochondrial function/morphology mainly by oxygraphy and imaging on ex vivo muscles. By MR they found that phosphocreatine resynthesis and maximal oxidative capacity were reduced in the gastrocnemius muscle of tumor-bearing mice during the recovery phase after 6 minutes of 1 Hz electrical stimulation while pH was reduced in muscle during the stimulation time. By oxygraphy, the authors showed a decrease in basal respiration, proton leak, and maximal respiration in tumor-bearing mice that was associated with the decrease of complex I, II, and IV activity, a reduction of OXPHOS proteins, mitochondrial mass, mtDNA, and to several morphological alterations of mitochondrial shape. The authors performed transcriptomic and proteomic analyses to get insights into mitochondrial defects in the muscles of PDAC mice. By IPA analyses on transcriptomics, they found an increase in the signature of protein degradation, atrophy, and glycolysis and a downregulation of muscle function. Focusing on mitochondria they showed a downregulation mainly in OXPHOS, TCA cycle, and mitochondrial dynamics genes and upregulation of glycolysis, ROS defense, mitophagy, and amino acid metabolism. IPA analysis on proteomics revealed major changes in muscle contraction and metabolic pathways related to lipids, protein, nucleotide, and DNA metabolism. Focusing on mitochondria, the protein changes mainly were related to OXPHOS, TCA cycle, translation, and amino acid metabolism.
The major strength of the paper is the bioenergetics and mitochondrial characterization associated with the transcriptomic and proteomic analyses in PDAC mice that confirmed some published data of mitochondrial dysfunction but underlined some novel metabolic insights such as nucleotide metabolism.
There are minor weaknesses related to some analyses on mitochondrial proteins and to the fact that proteomic and transcriptomic comparison may be problematic in catabolic conditions because some gene expression is required to maintain or re-establish enzymes/proteins that are destroyed by the proteolytic systems (including the autophagy proteins and ubiquitin ligases). The authors should consider the following points.
Point 1. The authors used the name sarcopenia as synonymous with muscle atrophy. However, sarcopenia clearly defines the disease state (disease code: ICD-10-CM (M62.84)) of excessive muscle loss and force drop during ageing (Ref: Anker SD et al. J Cachexia Sarcopenia Muscle 2016 Dec;7(5):512-514.). Therefore, the word sarcopenia must be used only when pathological age-related muscle loss is the subject of study. Sarcopenia can be present in cancer patients who also experience cachexia, however since the age of tumor-bearing mice in this study is 7-9 weeks old, the authors should refrain from using sarcopenia and instead replace it with the words muscle atrophy/ muscle wasting/muscle loss.
Response: This issue has also been raised by the Reviewer #1. We agree that the term sarcopenia historically refers to aged muscle, but it is also used in oncology (for example, in this article, which we quote: Mintziras I et al. Sarcopenia and sarcopenic obesity are significantly associated with poorer overall survival in patients with pancreatic cancer: Systematic review and meta-analysis. Int J Surg 2018;59:19-26). Actually, the term sarcopenia is now widely used in the literature and in the clinic to describe the loss of muscle mass and strength in cancer patients (see for example, this recent review: Papadopetraki A. et al. The Role of Exercise in Cancer-Related Sarcopenia and Sarcopenic Obesity. Cancers 2023;15;5856).
Point 2. Most of the analyses of mitochondrial function are appropriate. However, the methodological approach to determining mitochondrial fusion and fission machinery shown in Fig. 5F is wrong. The correct way is to normalize the OPA1, MFn1/2 on mitochondrial proteins such as VDAC/porin. In fact, by loading the same amount of total protein (see actin in panel 5F) the difference between a normal and a muscle with enhanced protein breakdown is lost. In fact, we should expect a decrease in actin level in tumor-bearing mice with muscle atrophy while the blots clearly show the same level due to the normalization of protein content. Moreover, by loading the same amount of proteins in the gel, the atrophying muscle lysates become enriched in the proteins/organelles that are less affected by the proteolysis resulting in an artefactual increase. The correct way should be to lyse the whole muscle of control and tumor-bearing mice in an identical volume and to load in western blot the same volume between control cachectic muscles. Alternatively, the relative abundance of mitochondrial shaping proteins related to mitochondrial transmembrane or matrix proteins (mito mass) should compensate for the loading normalization. Because the authors showed elongated mitochondria despite mitophagy genes being up, fragmentation may be altered. Moreover, DNM1l gene is suppressed and therefore DRP1 protein must be analyzed. Finally, OPA 1 protein has different isoforms due to the action of proteases like OMA1, and YME1L that elicit different functions being the long one pro-fusion while the short ones do not. The authors must quantify the long and short isoforms of OPA1.
Response: We acknowledge that our analysis of a minor set of proteins involved in mitochondrial dynamics by Western blotting (Figure 5F) is basic and could have been improved. We thank the Reviewer for all the suggestions, which will be very useful in future projects studying the subject in greater depth and according to the molecular characteristics of each player in mitochondrial fusion, fission, mitophagy and biogenesis.
Point 3. The comparison of proteomic and transcriptomic profiles to identify concordance or not is problematic when atrophy programs are induced. In fact, most of the transcriptional-dependent upregulation is to preserve/maintain/reestablish enzymes that are consumed during enhanced protein breakdown. For instance, the ubiquitin ligases when activated undergo autoubiquitination and proteasome degradation. The same happens for several autophagy-related genes belonging to the conjugation system (LC3, Gabarap), the cargo recognition pathways (e.g. Ubiquitin, p62/SQSTM1) and the selective autophagy system (e.g. BNIP3, PINK/PARKIN) and metabolic enzymes (e.g. GAPDH, lipin). Finally, in case identical amounts of proteins have been loaded in mass spec the issues rise in point 2 of selective enrichment should be considered. Therefore, when comparing proteomic and transcriptomic these issues should be considered in discussion.
Response: We fully agree with the Reviewer that seeking concordance between transcriptomic and proteomic data in the case of an organ affected by a high level of proteolysis is a difficult business. Another major difficulty we discussed in the Discussion section of the article is the fact that there is no concordance between RNA and protein level for a good proportion of proteins, for multiple reasons, so each level of omics has to be interpreted independently to give information on the pathophysiology of the organ studied.
-
Reviewer #2 (Public Review):
The present work analyzed the mitochondrial function and bioenergetics in the context of cancer cachexia induced by pancreatic cancer (PDAC). The authors used the KIC transgenic mice that spontaneously develop PDAC within 9-11 weeks of age. They deeply characterize bioenergetics in living mice by magnetic resonance (MR) and mitochondrial function/morphology mainly by oxygraphy and imaging on ex vivo muscles. By MR they found that phosphocreatine resynthesis and maximal oxidative capacity were reduced in the gastrocnemius muscle of tumor-bearing mice during the recovery phase after 6 minutes of 1 Hz electrical stimulation while pH was reduced in muscle during the stimulation time. By oxygraphy, the authors showed a decrease in basal respiration, proton leak, and maximal respiration in tumor-bearing mice that was associated with the decrease of complex I, II, and IV activity, a reduction of OXPHOS proteins, mitochondrial mass, mtDNA, and to several morphological alterations of mitochondrial shape. The authors performed transcriptomic and proteomic analyses to get insights into mitochondrial defects in the muscles of PDAC mice. By IPA analyses on transcriptomics, they found an increase in the signature of protein degradation, atrophy, and glycolysis and a downregulation of muscle function. Focusing on mitochondria they showed a downregulation mainly in OXPHOS, TCA cycle, and mitochondrial dynamics genes and upregulation of glycolysis, ROS defense, mitophagy, and amino acid metabolism. IPA analysis on proteomics revealed major changes in muscle contraction and metabolic pathways related to lipids, protein, nucleotide, and DNA metabolism. Focusing on mitochondria, the protein changes mainly were related to OXPHOS, TCA cycle, translation, and amino acid metabolism.
The major strength of the paper is the bioenergetics and mitochondrial characterization associated with the transcriptomic and proteomic analyses in PDAC mice that confirmed some published data of mitochondrial dysfunction but underlined some novel metabolic insights such as nucleotide metabolism.
There are minor weaknesses related to some analyses on mitochondrial proteins and to the fact that proteomic and transcriptomic comparison may be problematic in catabolic conditions because some gene expression is required to maintain or re-establish enzymes/proteins that are destroyed by the proteolytic systems (including the autophagy proteins and ubiquitin ligases). The authors should consider the following points.
Point1. The authors used the name sarcopenia as synonymous with muscle atrophy. However, sarcopenia clearly defines the disease state (disease code: ICD-10-CM (M62.84)) of excessive muscle loss and force drop during ageing (Ref: Anker SD et al. J Cachexia Sarcopenia Muscle 2016 Dec;7(5):512-514.). Therefore, the word sarcopenia must be used only when pathological age-related muscle loss is the subject of study. Sarcopenia can be present in cancer patients who also experience cachexia, however since the age of tumor-bearing mice in this study is 7-9 weeks old, the authors should refrain from using sarcopenia and instead replace it with the words muscle atrophy/ muscle wasting/muscle loss.
Point2. Most of the analyses of mitochondrial function are appropriate. However, the methodological approach to determining mitochondrial fusion and fission machinery shown in Fig. 5F is wrong. The correct way is to normalize the OPA1, MFn1/2 on mitochondrial proteins such as VDAC/porin. In fact, by loading the same amount of total protein (see actin in panel 5F) the difference between a normal and a muscle with enhanced protein breakdown is lost. In fact, we should expect a decrease in actin level in tumor-bearing mice with muscle atrophy while the blots clearly show the same level due to the normalization of protein content. Moreover, by loading the same amount of proteins in the gel, the atrophying muscle lysates become enriched in the proteins/organelles that are less affected by the proteolysis resulting in an artefactual increase. The correct way should be to lyse the whole muscle of control and tumor-bearing mice in an identical volume and to load in western blot the same volume between control cachectic muscles. Alternatively, the relative abundance of mitochondrial shaping proteins related to mitochondrial transmembrane or matrix proteins (mito mass) should compensate for the loading normalization. Because the authors showed elongated mitochondria despite mitophagy genes being up, fragmentation may be altered. Moreover, DNM1l gene is suppressed and therefore DRP1 protein must be analyzed. Finally, OPA 1 protein has different isoforms due to the action of proteases like OMA1, and YME1L that elicit different functions being the long one pro-fusion while the short ones do not. The authors must quantify the long and short isoforms of OPA1.
Point3. The comparison of proteomic and transcriptomic profiles to identify concordance or not is problematic when atrophy programs are induced. In fact, most of the transcriptional-dependent upregulation is to preserve/maintain/reestablish enzymes that are consumed during enhanced protein breakdown. For instance, the ubiquitin ligases when activated undergo autoubiquitination and proteasome degradation. The same happens for several autophagy-related genes belonging to the conjugation system (LC3, Gabarap), the cargo recognition pathways (e.g. Ubiquitin, p62/SQSTM1) and the selective autophagy system (e.g. BNIP3, PINK/PARKIN) and metabolic enzymes (e.g. GAPDH, lipin). Finally, in case identical amounts of proteins have been loaded in mass spec the issues rise in point 2 of selective enrichment should be considered. Therefore, when comparing proteomic and transcriptomic these issues should be considered in discussion.
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
The following is the authors’ response to the original reviews.
Reviewer #1 (Recommendations for The Authors):
Major comments:
1) The immunolabeling data in Figure S4 shows no change in puncta number but reduced puncta size in Kit KO. sIPSC data show reduced frequency but little change in amplitude. These data would seem contradictory in that one suggests reduced synaptic strength, but not number, and the other suggests reduced synapse number, but not strength. How do the authors reconcile these results?
Regarding the synaptic puncta, In Kit KO (or KL KO), we have not detected an overt reduction in the average VGAT/Gephyrin/Calbindin positive puncta density or puncta size per animal. With respect to puncta size, only in the Kit KO condition, and only when individual puncta are assessed does this modest (~10%) difference in size become statistically significant. In the revision, we eliminate this figure and focus on the per animal averages.
We interpret that the reduction in sIPSC and mIPSC frequency likely stems from a decreased proportion of functional synapse sites. The number of MLIs, their action potential generation, the density of synaptic puncta, and the ability of direct stimulation to evoke release and equivalent postsynaptic currents, are all similar in Control vs Kit KO. It is therefore feasible that a reduced frequency of postsynaptic inhibitory events is due to a reduced ability of MLI action potentials to invade the axon terminal, and/or an impaired ability for depolarization to drive (e.g. coordinated calcium flux) transmitter release. That is, while the number of MLIs and their synapses appear similar, the reduced mIPSC frequency suggests that there is a reduced proportion of, or probability that, Kit KO synapse sites that function properly.
2) Related to point 1, it would be helpful to see immunolabeling data from Kit ligand KO mice? Do these show the same pattern of reduced puncta size but no change in number?
Although we have not added a figure, we have now added experiments and a corresponding analysis in the manuscript. As we had previously for Kit KO, we now for KL KO conducted IHC for VGAT, Gephyrin, and Calbindin, and we analyzed triple-positive synaptic puncta in the molecular layer of Pcp2 Cre KL KO mice and Control (Pcp2 Cre negative, KL floxed homozygous) mice. We did not find a gross reduction in the average synaptic puncta size or density, or in the PSD-95 pinceau size. From this initial analysis, it appears that the presynaptic hypotrophy is more notable in the receptor than in the ligand knockout. We speculate that this is perhaps because the Kit receptor may have basal activity in the absence of Kit ligand, that Kit may serve a presynaptic scaffolding role that is lost in the receptor (but not the ligand) knockout, or simply that the embryonic timing of the Pax2 Cre vs Pcp2 Cre recombination events is more relevant to pinceaux development, especially as basket cells are born primarily prenatally.
3) The data using KL overexpression in PC (figure 4E,F) are intriguing, but puzzling. The reduction in sIPSC frequency and amplitude in the control PC is much greater than seen in the Kit or KL KO. The interpretation of these data, "Thus, KL-Kit levels may not set the number of MLI:PC release sites, but may instead influence the proportion of synapses that are functional for neurotransmission (Figure 4G)" is not clear and the reasoning here should be explained in more detail, perhaps in the discussion.
We have attempted to clarify this portion of the manuscript by eliminating the cartoon of the proposed model, and by revising and adding to the discussion. Either MLI Kit KO or PC KL KO seems to preserve the absolute number of MLI:PC anatomical synapse sites (IHC) but to reduce the proportion of those synapse that are contributing to neurotransmission (mIPSC). We speculate that sparse PC KL overexpression (OX) may either 1) weaken inhibition to surrounding control PCs by either diminishing KL OX PC to KL Control PC inhibition, and/or 2) act retrogradely through MLI Kit to potentiate MLI:MLI inhibition, reducing the MLI:PC inhibition at neighboring Control PCs.
Minor comments:
1) In the first sentence of the results, should "Figure 1A, B" be "Figure C, D"?
Yes, corrected.
2) The top of page 6 states "the mean mIPSC amplitude was ~10% greater in PC KL KO than in control", this does not appear to be the case in Figure 3E. control and KL KO look very similar here.
In this portion of the text citing the modest 10% increase in mIPSC amplitude, we are referring to the average amplitude of all individual mIPSC events in the PC KL KO condition; in the figure referred to by the reviewer (3E), we are instead referring to the average of all mIPSC event amplitudes per KL KO PC. Because of the dramatic difference in sample size for individual events vs cells, this modest difference rises to statistical, if not biological, significance. We include this individual event analysis only to suggest that, since we in fact saw a slightly higher event amplitude in the KL KO condition, it is unlikely that a reduced amplitude would have been a technical reason that we detected a lower event frequency.
3) Figure 3 D, duration, y-axis should be labelled "ms"
Event duration is no longer graphed or referenced. This has been replaced with total inhibitory charge.
Reviewer #2 (Recommendations For The Authors):
Methods:
- Pax2-Cre line: embryonal Cre lines sometimes suffer from germline recombination. Was this evaluated, and if yes, how?
The global loss of Kit signaling is incompatible with life, as seen from perinatal lethality in other Kit Ligand or Kit mutant mouse lines or other conditional approaches. Furthermore, a loss of Kit signaling in germ cells impedes fertility. Thus, while not explicitly ruled out, since conditional Pax2 Cre mediated Kit KO animals were born, survived, and produced offspring in normal ratios, we do not suspect that germline recombination was a major issue in this specific study.
- Include rationale for using different virus types in different studies (AAV vs. Lenti).
This rationale is now included and reflects the intention to achieve infection sparsity in the smaller and less dense tissue of perinatal mouse brains.
- How, if at all, was blinding performed for histological and electrophysiological experiments?
It was not possible for electrophysiology to be conducted blinded for the Kit KO experiments, owing to the subjects’ hypopigmentation. However, whenever feasible, resultant microscopy images or electrophysiological data sets were analyzed by Transnetyx Animal ID, and the genotypes unmasked after analysis.
- Provide justification for limiting electrophysiology recordings to lobule IV/V and why MLIs in the middle third of the molecular layer were prioritized when inhibition of PCs is dominated by large IPSCs from basket cells. Why were 2 different internals used for recording IPSCs and EPSCs in PCs and MLIs? While that choice is justified for action potential recordings, it provides poor voltage control in PC voltage clamp. Both IPSCs and EPSCs could have been isolated pharmacologically using a CsCl internal.
The rationale for regional focus has been added to the text. For MLI action potential recordings, we opted to sample the middle third of the molecular layer so that we would not be completely biased to either classic distal stellate vs proximal basket subtypes. It is our hope, in future optogenetic interrogations, to simultaneously record the dynamics of all MLI subtypes in a more unbiased way. With respect to internal solutions, we initially utilized a cesium chloride internal to maximize our ability to resolve differences in GABAA mediated currents, which was the hypothesis-driven focus of our study. While we agree that utilizing a single internal and changing the voltage clamp to arrive at per-cell analysis of Excitatory/Inhibitory input would have been most informative, our decision to utilize pharmacological methods was driven by our experience that achieving adequate voltage clamp across large Purkinje cells was often problematic, particularly in adult animals.
Introduction:
In the introduction, the authors state that inactivating Kit contributes to neurological dysfunction - their examples highlight neurological, psychiatric, and neurodevelopmental conditions.
The language has been changed.
General:
Using violin plots illustrates the data distribution better than bar graphs/SEM.
We have included violin plots throughout, and we have changed p values to numeric values, both in the interest of presenting the totality of the data more clearly.
Synapses 'onto' PCs sounds more common than 'upon' PCs.
We have changed the wording throughout.
Figure 1:
1F - there seems to be an antero-posterior gradient of Kit expression.
Though not explicitly pursued in the manuscript, it is possible that such a gradient may reflect differences in the timing of the genesis and maturation of the cerebellum along the AP axis. Regional variability is however now briefly addressed as a motivator for focused studies within lobules IV/V.
E doesn't show male/female ratios but only hypopigmentation.
This language has been corrected.
Figure 2 and associated supplementary figures:
2A/B: The frequency of sIPSCs is very high in PCs, making the detection of single events challenging. How was this accomplished? Please add strategy to the methods.
We have added methodological detail for electrophysiology analysis.
How were multi-peak events detected and analyzed? 'Duration' is not specified - do the authors refer to kinetics? If so, report rise and decay. It is likely impossible to show individual aligned sIPSCs with averages superimposed, given that sIPSCs strongly overlap. Alternatively, since no clear baseline can be determined in between events, and therefore frequency, amplitude, and kinetics quantification is near-impossible, consider plotting inhibitory charge.
Given the heterogeneity of events, we now do not refer to individual event kinetics. As suggested, we have now included an analysis of the total inhibitory charge transferred by all events during the recording epoch.
S2: Specify how density, distribution, and ML thickness were determined in methods. How many animals/cells/lobules?
For consistency with viral injections and electrophysiology, the immunohistochemical analysis was restricted to lobule IV/V. This is clearer in the revision and detail is added in the methods.
S3:
S3B: the labels of Capacitance and Input resistance are switched.
This has been corrected.
How were these parameters determined? Add to methods.
Added
In the previous figure the authors refer to 'frequency', in this figure to 'rate' - make consistent
This has been corrected.
D: example does not seem representative. Add amplitude of current pulse underneath traces.
We added new traces from nearer the group means and we now include the current trace.
F/G example traces (aligned individual events + average) are necessary.
We added example traces near the relevant group means for each condition.
Statement based on evoked IPCSs that 'synapses function normally' is a bit sweeping and can only be fully justified with paired recordings. Closer to the data would be the release probability of individual synapses is similar between control and Kit KO.
Paired recordings in both Kit Ligand and Kit receptor conditional knockout conditions is indeed an informative aim of future studies should support permit. For now, we have clarified the language to be more in line with the reviewer’s welcome suggestion.
S4:
Histological strategy cannot unambiguously distinguish MLI-PC and PC-PC synapses. Consider adding this confound to the text.
We have added this confound to the discussion.
The observation that the pinceau is decreased in size could have important implications for ephaptic coupling of MLI and PC and could be mentioned.
We agree and have added this notion to the discussion.
Y-label is missing in B.
Corrected.
Figure 3 and associated supplementary figures:
In the text, change PC-Cre to L7-Cre or Pcp2-Cre.
Changed
How do the authors explain a reduction in frequency, amplitude, and duration of sIPSCs in the KL KO but not in the Kit KO? Add to the discussion
We now address this apparent discordance in the discussion. Pax2 Cre mediates recombination weeks ahead of Pcp2 Cre. We therefore suspect that postnatal PC KL KO may be more phenotypic than embryonic MLI Kit KO because there is less time for developmental compensation. A future evaluation of the impact of postnatal Kit KO would be informative to this end.
As in Figure 2, plotting the charge might be more accurate.
We now plot total charge transfer.
Are the intrinsic properties in KL KO PCs altered? (Spontaneous firing, capacitance, input resistance).
We have added to the text that we found no difference in capacitance or input resistance between Purkinje cells from KL floxed homozygous Control animals versus those from KL floxed homozygous, PCP2 Cre positive KL KO animals. We plan to characterize both basal and MLI modulated PC firing in a future manuscript, especially since Pcp2 Cre mediated KL KO seems more phenotypic than Pax2 Cre mediated Kit KO, we agree that this seems a better testbed for investigating differences in both the basal, and the MLI-mediated modulations in, PC firing.
3D-F - Example traces would be desirable (see above, analogous to Fig. 2).
More example traces have been added.
Figure 4: 'In vivo mixtures' sounds unusual. Consider revision (e.g., 'to sparsely delete KL').
Changed
The observation that control PC sIPSC frequency is lower in KL OX PCs than in sham is interesting. This observation would be consistent with overall inhibitory synapse density being preserved. This could be evaluated with immunohistochemistry. For how far away from the injection area does this observation hold true?
Because we have now analyzed and failed to find an overt (per animal average) change in synaptic puncta size or density in the whole animal Control vs PCP2 Cre mediated KL KO conditions, we do not have confidence that it is feasible to pursue this IHC strategy in the sparse viral-mediated KL KO or OX conditions. To the reviewer’s valid point however, we intend to probe the spatial extent/specificity of the sparse phenomenon when we are resourced to complement the KL/Kit manipulations with transgenic methods for evaluating MLI-PC synapses specifically, potentially by GRASP or related methods that would not be confounded by PC-PC synapses. Transgenic MLI access would also facilitate determining the spatial extent to which opto-genetically activated MLIs evoke equivalent responses in Control vs KL manipulated PCs.
Y-legend in D clipped.
Corrected
Existing literature suggests that MLI inhibition regulates the regularity of PC firing - this could be tested in Kit and KL mutants.
For now, based upon transgenic animal availability, we have now included an evaluation of PC firing in the (Pax2 Cre mediated) Kit KO condition. PC average firing frequency, mean ISI, and ISI CV2 were not significantly different across genotypes. A KS test of individual ISI durations for Control vs Kit KO did reveal a difference (p<0.0001). We have added a supplementary figure (S6) with this data. It is possible that in the more phenotypic PC KL KO condition that we may find a difference in these PC spiking patterns of PC firing, however, we are also eager to test in future studies whether postnatal KL or Kit KO impairs the ability of MLI activation to produce pauses or other alterations in PC firing or in PF-PC mediated plasticity.
Reviewer #3 (Recommendations For The Authors):
Reference to Figure 1A in the Results section is slightly inaccurate. Kit gene modifications are illustrated in Figures 1A, B. Where Figure 1A shows Kit distribution. Please rephrase. Relatedly, the reference to Figs 1B - D are shifted in the results section, and 1E is skipped.
We have changed the text.
Please show cumulative histograms for frequency too for consistency with amplitude (e.g. Fig 2).
We have instead, for reasons outlined by other reviewers, documented total charge transfer for both Kit KO and KL KO experiments where sIPSC events were analyzed.
Fig S3: include example traces of PPR.
This is now included.
Include quantifications of GABAergic synapse density in Fig S4.
This is now included.
Include inset examples of KO in Fig S4A.
This is now included.
Add average puncta size graphs along Figure S4B. The effect apparent in the histogram of S4B is small and statistics using individual puncta as n values (in the 20,000s) therefore misleading.
Per animal analysis is now instead included in the figure and text.
Figure S4B y axis label blocked.
Corrected
Include quantification referenced in "As PSD95 immunoreactivity faithfully follows multiple markers of pinceaux size 40, we quantified PSD95 immunoreactive pinceau area and determined that pinceaux area was decreased by ~50% in Kit KO (n 26 Control vs 43 Kit KO, p<0.0001, two-tailed t-test)."
We added a graph of per animal averages, instead of in text individual pinceau areas.
Include antibody dilutions in the methods.
Added.
It's unclear from the text where the Mirow lab code comes from.
Detail has now been added in text.
Typo in methods "The Kit tm1c alle was bred...".
Corrected
Typo in Figure S4 legend "POSD-95 immuno-reactivity".
Corrected
-
-
-
cookie-parser Parse Cookie header and populate req.cookies with an object keyed by the cookie names. Optionally you may enable signed cookie support by passing a secret string, which assigns req.secret so it may be used by other middleware. Installation $ npm install cookie-parser API var cookieParser = require('cookie-parser') cookieParser(secret, options) Create a new cookie parser middleware function using the given secret and options. secret a string or array used for signing cookies. This is optional and if not specified, will not parse signed cookies. If a string is provided, this is used as the secret. If an array is provided, an attempt will be made to unsign the cookie with each secret in order. options an object that is passed to cookie.parse as the second option. See cookie for more information. decode a function to decode the value of the cookie The middleware will parse the Cookie header on the request and expose the cookie data as the property req.cookies and, if a secret was provided, as the property req.signedCookies. These properties are name value pairs of the cookie name to cookie value. When secret is provided, this module will unsign and validate any signed cookie values and move those name value pairs from req.cookies into req.signedCookies. A signed cookie is a cookie that has a value prefixed with s:. Signed cookies that fail signature validation will have the value false instead of the tampered value. In addition, this module supports special "JSON cookies". These are cookie where the value is prefixed with j:. When these values are encountered, the value will be exposed as the result of JSON.parse. If parsing fails, the original value will remain. cookieParser.JSONCookie(str) Parse a cookie value as a JSON cookie. This will return the parsed JSON value if it was a JSON cookie, otherwise, it will return the passed value. cookieParser.JSONCookies(cookies) Given an object, this will iterate over the keys and call JSONCookie on each value, replacing the original value with the parsed value. This returns the same object that was passed in. cookieParser.signedCookie(str, secret) Parse a cookie value as a signed cookie. This will return the parsed unsigned value if it was a signed cookie and the signature was valid. If the value was not signed, the original value is returned. If the value was signed but the signature could not be validated, false is returned. The secret argument can be an array or string. If a string is provided, this is used as the secret. If an array is provided, an attempt will be made to unsign the cookie with each secret in order. cookieParser.signedCookies(cookies, secret) Given an object, this will iterate over the keys and check if any value is a signed cookie. If it is a signed cookie and the signature is valid, the key will be deleted from the object and added to the new object that is returned. The secret argument can be an array or string. If a string is provided, this is used as the secret. If an array is provided, an attempt will be made to unsign the cookie with each secret in order.
Certainly! In simple terms, the
cookie-parseris a module in Node.js (specifically for Express applications) that helps with handling cookies, which are small pieces of data stored on a user's browser.Here's a breakdown:
- Installation: You need to install the
cookie-parsermodule using npm.
bash npm install cookie-parser- Creating a Middleware:
- You create a middleware function using
cookie-parser. - You can optionally provide a "secret" (a string or an array of strings) for extra security. This secret is used to sign cookies, making them tamper-proof.
```javascript const cookieParser = require('cookie-parser'); const app = express();
// Use the cookie-parser middleware app.use(cookieParser('yourSecret')); ```
- Parsing Cookies:
- The middleware parses the cookies sent by the user's browser and makes them available in
req.cookies. -
If a secret is provided, it also validates and unsigns any signed cookies, making them available in
req.signedCookies. -
Working with Cookies:
- You can set cookies in the response using
res.cookie(). - You can read cookies from the request in your route handlers from
req.cookiesandreq.signedCookies.
```javascript app.get('/set-cookie', (req, res) => { // Set a cookie named "myCookie" with value "Hello, Cookie!" res.cookie('myCookie', 'Hello, Cookie!'); res.send('Cookie has been set!'); });
app.get('/read-cookie', (req, res) => { // Access the value of the "myCookie" cookie const myCookieValue = req.cookies.myCookie; res.send(
Value of myCookie: ${myCookieValue}); }); ```- Additional Features:
- You can work with signed cookies for added security.
- It supports special "JSON cookies" for storing JSON data.
Remember, cookies are often used to store small pieces of information on the user's browser, and
cookie-parserhelps you handle them easily in your Express.js applications.In an Express.js application, you can set cookies in the browser using the
res.cookie()method. This method is provided by thecookie-parsermiddleware. Here's a simple example:- Install
cookie-parserif you haven't already:
bash npm install cookie-parser- Use
cookie-parserin your Express app:
```javascript const express = require('express'); const cookieParser = require('cookie-parser');
const app = express();
// Use the cookie-parser middleware app.use(cookieParser()); ```
- Set a cookie in a route handler:
```javascript app.get('/set-cookie', (req, res) => { // Set a cookie named "myCookie" with value "Hello, Cookie!" res.cookie('myCookie', 'Hello, Cookie!');
// Send a response res.send('Cookie has been set!');}); ```
In the above example, when the user accesses the
/set-cookieendpoint, a cookie named "myCookie" with the value "Hello, Cookie!" will be set in their browser.- Set additional options (optional):
You can set additional options for cookies, such as
maxAge,expires,path,domain, and others. For example:javascript res.cookie('myCookie', 'Hello, Cookie!', { maxAge: 900000, httpOnly: true });This sets the
maxAgeoption to 900,000 milliseconds (15 minutes) and makes the cookie accessible only through HTTP (not through JavaScript).Remember to adapt the code to your specific use case and requirements. The client's browser will now store the cookie, and subsequent requests from that client to your server will include the cookie information in the request headers.
- Installation: You need to install the
-
-
mongoosejs.com mongoosejs.com
-
ObjectIds An ObjectId is a special type typically used for unique identifiers. Here's how you declare a schema with a path driver that is an ObjectId: const mongoose = require('mongoose'); const carSchema = new mongoose.Schema({ driver: mongoose.ObjectId });
Certainly! The way it works is when you create a new note and associate it with a user, you will typically provide the user's unique identifier (ID) as the value for the
userfield. In a typical scenario, this user ID would come from the "user" collection in your database.Here's a brief example in code:
```javascript // Assume you have a User model and you have obtained a user's ID const userId = "someUserId"; // This would be the actual ID of the user in your database
// Creating a new note and associating it with the user by providing the user ID const newNote = new Notes({ user: userId, title: "Sample Note", description: "This is a sample note.", tag: "General", deadline: new Date(), deadlinetime: "12:00 PM", });
// Save the new note to the database newNote.save() .then((savedNote) => { console.log("Note saved successfully:", savedNote); }) .catch((error) => { console.error("Error saving note:", error); }); ```
In this example, the
userfield of the new note is set to theuserIdobtained from the "user" collection. When you save this note to the database, theuserfield will store the provided user ID. Later, when you retrieve this note, you can use this user ID to identify which user the note is associated with.It's important to ensure that the user ID you provide for the
userfield actually corresponds to an existing user in the "user" collection. This way, you maintain the relationship between the "notes" and "user" collections in your MongoDB database.
-
-
sans-io.readthedocs.io sans-io.readthedocs.io
-
In terms of receiving events, events can either be returned to the calling code immediately whenever bytes are provided, or they can be lazily produced in response to the calling code’s request.
接收有两种方式,直接返回和被调用时返回
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
In 2016, when Donald Trump was running a campaign to be the US President, one twitter user pointed out that you could see which of the Tweets on Donald Trump’s Twitter account were posted from an Android phone and which from an iPhone, and that the tone was very different. A data scientist decided to look into it more and found: “My analysis … concludes that the Android and iPhone tweets are clearly from different people, “posting during different times of day and using hashtags, links, and retweets in distinct ways, “What’s more, we can see that the Android tweets are angrier and more negative, while the iPhone tweets tend to be benign announcements and pictures. …. this lets us tell the difference between the campaign’s tweets (iPhone) and Trump’s own (Android).” (Read more in this article from The Guardian) Note: we can no longer run code to check this ourselves because first, Donald Trump’s account was suspended in January 2021 for inciting violence, then when Elon Musk decided to reinstate Donald Trump’s account (using a Twitter poll as an excuse, but how many of the votes were bots?), Elon Musk also decided to remove the ability to look up a tweet’s source.
I thought this was very interesting, how the tweets from an iPhone and Android could have such big difference. Also how they could tell the difference between the campaign's tweets which to be an iPhone, and to Trump's own android. I never really paid attention to Trumps election tweets, but I thought this is very interesting.
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
Author responses to the original review:
The data we produce are not criticized as such and thus, do not require revision; the criticisms concern our interpretation of them. General themes of the reviews are that i) genetic signatures do not matter for defining neuronal types (here sympathetic versus parasympathetic); ii) that a cholinergic postganglionic autonomic neuron must be parasympathetic; and iii) that some physiology of the pelvic region would deserve the label “parasympathetic”. We answered the latter argument in (Espinosa-Medina et al., 2018) to which we refer the interested reader; and we fully disagree with the first two. Of note, part of the last sentence of the eLife assessment is misleading and does not reflect the referees’ comments. Our paper analyses genetic differences between the cranial and sacral outflow and uses them to argue that they cannot be both parasympathetic. The eLife assessment acknowledges the “genetic differences” but concludes that, somehow, they don’t detract from a common parasympathetic identity. We take issue with this paradox, of course, but it is coherent with the referee’s comments. On the other hand, the eLife assessment alone pushes the paradox one step further by stating that “functional differences” between the cranial and sacral outflows can’t either prevent them from being both parasympathetic. We would also object to this, but the only “functional differences” used by the referees to dismiss our diagnostic of a sympathetic-like character (rather than parasympathetic) for the sacral outflow are between noradrenergic and cholinergic, and between sympathetic and parasympathetic (and we also disagree with those, see above, and below) —not between cranial and sacral.
We will thus use the opportunity offered by eLife to keep the paper as it is (with a few minor stylistic changes). We respond below to the referees’ detailed remarks and hope that the publication, as per eLife new model, of the paper, the referees’ comments and our response will help move the field forward.
Public review by Referee #1
“Consistently, the P3 cluster of neurons is located close to sympathetic neuron clusters on the map, echoing the conventional understanding that the pelvic ganglia are mixed, containing both sympathetic and parasympathetic neurons”.
The greater closeness of P3 than of P1/2/4 to the sympathetic cluster can be used to judge P1/2/4 less sympathetic than P3 (and more… something else), but not more parasympathetic. There is no echo of the “conventional understanding” here.
“A closer look at the expression showed that some genes are expressed at higher levels in sympathetic neurons and in P2 cluster neurons ” [We assume that the referee means “in sympathetic neurons and in P3 cluster neurons”] but much weaker in P1, P2, and P4 neurons such as Islet1 and GATA2, and the opposite is true for SST. Another set of genes is expressed weakly across clusters, like HoxC6, HoxD4, GM30648, SHISA9, and TBX20.
These statements are inaccurate; On the one hand, the classification is not based on impression by visual inspection of the heatmap, but by calculations, using thresholds. Admittedly, the thresholds have an arbitrary aspect, but the referee can verify (by eye inspection of heatmap) that genes which we calculate as being at “higher levels in sympathetic neurons and in P3 cluster neurons, but much weaker in P1, P2, and P4 neurons” or vice versa, i.e. noradrenergic or cholinergic neurons (genes from groups V and VI, respectively), have a much bigger difference than those cited by the referee, indeed are quasi-absent from the weaker clusters or ganglia. In addition, even by subjective eye inspection:
Islet is equally expressed in P4 and sympathetics.
SST is equally expressed in P1 and sympathetics.
Tbx20 is equally expressed in P2 and sympathetics.
HoxC6, HoxD4, GM30648, SHISA9 are equally expressed in all clusters and all sympathetic ganglia.
“Since the pelvic ganglia are in a caudal body part, it is not surprising to have genes expressed in pelvic ganglia, but not in rostral sphenopalatine ganglia, and vice versa (to have genes expressed in sphenopalatine ganglia, but not in pelvic ganglia), according to well recognized rostro-caudal body patterning, such as nested expression of hox genes.”
We do not simply show “genes expressed in pelvic ganglia, but not in rostral sphenopalatine ganglia, and vice versa”, i.e. a genetic distance between pelvic and sphenopalatine, but many genes expressed in all pelvic cells and sympathetic ones, i.e. a genetic proximity between pelvic and sympathetic. This situation can be deemed “unsurprising”, but it can only be used to question the parasympathetic nature of pelvic cells (as we do), or considered irrelevant (as the referee does, because genes would not define cell types, see our response to an equivalent stance by Referee#2). Concerning Hox genes, we do take them into account, and speculate in the discussion that their nested expression is key to the structure of the autonomic nervous system, including its division into sympathetic and parasympathetic outflows.
It is much simpler and easier to divide the autonomic nervous system into sympathetic neurons that release noradrenaline versus parasympathetic neurons that release acetylcholine, and these two systems often act in antagonistic manners, though in some cases, these two systems can work synergistically. It also does not matter whether or not pelvic cholinergic neurons could receive inputs from thoracic-lumbar preganglionic neurons (PGNs), not just sacral PGNs; such occurrence only represents a minor revision of the anatomy. In fact, it makes much more sense to call those cholinergic neurons located in the sympathetic chain ganglia parasympathetic.
This “minor revision of the anatomy” would make spinal preganglionic neurons which are universally considered sympathetic (in the thoraco-lumbar chord), synapse onto large numbers of parasympathetic neurons (in the paravertebral chains for sweat glands and periosteum, and in the pelvic ganglion), robbing these terms of any meaning.
Thus, from the functionality point of view, it is not justified to claim that "pelvic organs receive no parasympathetic innervation".
There never was any general or rigorous functional definition of the sympathetic and parasympathetic nervous systems — it is striking, almost ironic, that Langley, creator of the term parasympathetic and the ultimate physiologist, provides an exclusively anatomic definition in his Autonomic Nervous System, Part I. Hence, our definition cannot clash with any “functionality point of view”. In fact, as we briefly say in the discussion and explore in (Espinosa-Medina et al., 2018), it is the “sacral parasympathetic” paradigm which is unjustified from a functionality point of view, for implying a functional antagonism across the lumbo-sacral gap, which has been disproven repeatedly. It remains to be determined which neurons are antagonistic to which on the blood vessels of the external genitals; antagonism within one division of the autonomic nervous system would not be without precedent (e.g. there exist both vasoconstrictor and vasodilator sympathetic neurons, and both, inhibitor and activator enteric motoneurons). The way to this question is finally open to research, and as referee#2 says “it is early days”.
Public review by Referee #2
This work further documents differences between the cranial and sacral parasympathetic outflows that have been known since the time of Langley - 100 years ago.
We assume that the referee means that it is the “cranial and sacral parasympathetic outflows” which “have been known since the time of Langley”, not their differences (that we would “further document”): the differences were explicitly negated by Langley. As a matter of fact, the sacral and cranial outflows were first likened to each other by Gaskell, 140 years ago (Gaskell, 1886). This anatomic parallel (which is deeply flawed (Espinosa-Medina et al., 2018)) was inherited wholesale by Langley, who added one physiological argument (Langley and Anderson, 1895) (which has been contested many times (Espinosa-Medina et al., 2018) and references within).
In addition, the sphenopalatine and other cranial ganglia develop from placodes and the neural crest, while sympathetic and sacral ganglia develop from the neural crest alone.
Contrary to what the referee says, the sphenopalatine has no placodal contribution. There is no placodal contribution to any autonomic ganglion, sympathetic or parasympathetic (except an isolated claim concerning the ciliary ganglion (Lee et al., 2003)). All autonomic ganglia derive from the neural crest as determined a long time ago in chicken. For the sphenopalatine in mouse, see our own work (Espinosa-Medina et al., 2016).
One feature that seems to set the pelvic ganglion apart is […] the convergence of preganglionic sympathetic and parasympathetic synapses on individual ganglion cells (Figure 3). This unusual organization has been reported before using microelectrode recordings (see Crowcroft and Szurszewski, J Physiol (1971) and Janig and McLachlan, Physiol Rev (1987)). Anatomical evidence of convergence in the pelvic ganglion has been reported by Keast, Neuroscience (1995).
Contrary to what the referee says, we do not provide in Figure 3 any evidence for anatomic convergence, i.e. for individual pelvic ganglion cells receiving dual lumbar and sacral inputs. We simply show that cholinergic neurons figure prominently among targets of the lumbar pathway. This said, the convergence of both pathways on the same pelvic neurons, described in the references cited by the referee, is another major problem in the theory of the “sacral parasympathetic” (as we discussed previously (Espinosa-Medina et al., 2018)).
It should also be noted that the anatomy of the pelvic ganglion in male rodents is unique. Unlike other species where the ganglion forms a distributed plexus of mini-ganglia, in male rodents the ganglion coalesces into one structure that is easier to find and study. Interestingly the image in Figure 3A appears to show a clustering of Chat-positive and Th-positive neurons. Does this result from the developmental fusion of mini ganglia having distinct sympathetic and parasympathetic origins?
The clustering of Chat-positive and Th-positive cells could arise from a number of developmental mechanisms, that we have no idea of at the moment. This has no bearing on sympathetic and parasympathetic.
In addition, Brunet et al dismiss the cholinergic and noradrenergic phenotypes as a basis for defining parasympathetic and parasympathetic neurons. However, see the bottom of Figure S4 and further counterarguments in Horn (Clin Auton Res (2018)).
The bottom of Figure S4 simply indicates which cells are cholinergic and adrenergic. We have already expounded many times that noradrenergic and cholinergic do not coincide with sympathetic and parasympathetic. Henry Dale (Nobel Prize 1936) demonstrated this. Langley himself devoted several pages of his final treatise to this exception to his “Theory on the relation of drugs to nerve system” (Langley, 1921) (p43) (which was actually a bigger problem for him than it is for us, for reason which are too long to recount here; it is as if the theoretical difficulties experienced by Langley had been internalized to this day in the form of a dismissal of the cholinergic sympathetic neurons as a slightly scandalous but altogether forgettable oddity). (Horn, 2018) reviews the evidence that the thoracic cholinergic sympathetic phenotype is brought about by a secondary switch upon interaction with the target and argues that this would be a fundamental difference with the sacral “parasympathetic”. But in fact the secondary switch is preceded by co-expression of ChAT and VAChT with Th in most sympathetic neurons (reviewed in (Ernsberger and Rohrer, 2018)); and we have no idea of the dynamic in the pelvic ganglion. It may also be mentioned in this context that target-dependent specification of neuronal identity has also been demonstrated of other types of sympathetic neurons ((Furlan et al., 2016)
What then about neuropeptides, whose expression pattern is incompatible with the revised nomenclature proposed by Brunet et al.?
There was never any neuropeptide-inspired criterion for a nomenclature of the autonomic nervous system.
Figure 1B indicates that VIP is expressed by sacral and cranial ganglion cells, but not thoracolumbar ganglion cells.
Contrary to what the referee says, there are VIP-positive cells in our sympathetic data set and even strongly positive ones, except they are scattered and few (red bars on the UMAP). They correspond to cholinergic sympathetics, likely sudomotor, which are known to contain VIP (e.g.(Anderson et al., 2006)(Stanke et al., 2006)). In other words, VIP is probably part of what we call the cholinergic synexpression group (but was not placed in it by our calculations, probably because of a low expression level in sympathetic noradrenergic cells).
The authors do not mention neuropeptide Y (NPY). The immunocytochemistry literature indicates that NPY is expressed by a large subpopulation of sympathetic neurons but never by sacral or cranial parasympathetic neurons.
Contrary to what the referee says, Keast (Keast, 1995) finds 3.7% of pelvic neurons double stained for NPY and VIP in male rats, and says (Keast, 2006) that in females “co-expression of NPY and VIP is common” ( thus in cholinergic neurons that the referee calls “parasympathetic”). Single cell transcriptomics is probably more sensitive than immunochemistry, and in our dichotomized data set (table S1), NPY is expressed in all pelvic clusters and all sympathetic ganglia. In other words, it is one more argument for their kinship. It does not appear in the heatmap because it ranks below the 100 top genes.
Answer to the original recommendations by Referee #2
Introduction - the use of the words 'consensual' and 'promiscuity' are not clear and rather loaded in the context of the pelvic ganglia. Pick alternative words.
There is no sexual innuendo inherent in “promiscuity”: “condition of elements of different kinds grouped or massed together without order” (Oxford English Dictionary). We replaced “never consensual” by “never generally accepted”.
Results - Page 2 - what sex were the mice? Previous works indicate significant sexual dimorphism in the pelvic ganglion.
The mice included both males and females, and male and female cells are represented in all ganglia and clusters. This is now mentioned in the Material and Methods. Thus, however unsuited to analyze sexual dimorphism, our data set ensures that all the cell types we describe are qualitatively present in both sexes.
Results line 3 - the celiac and mesenteric ganglia are prevertebral ganglia and not part of the sympathetic chain. The chain refers to the paravertebral ganglia.
We replaced “part of the prevertebral chain” by “belonging to prevertebral ganglia”. This said, there are precedents for “prevertebral chain ganglia” to designate the rostro-caudal series of prevertebral ganglia. Rita Levi-Montalcini, for example, who devoted her glorious career to sympathetic ganglia, writes in 1972 “The nerve cell population of para- and prevertebral chain ganglia is reduced to 3–5% of that of controls”. (10.1016/0006-8993(72)90405-2).
Page 3 - "as the current dogma implies". Dogma often refers to opinion or church doctrine. The current nomenclature is neither. Pick another word.
There is little in science that is proven to the point of eliminating any element of opinion. “Dogma” refers to “that which is held as a principle or tenet […], especially a tenet authoritatively laid down by […] a school of thought” (OED). And “dogma” is used in science to designate tenets better experimentally supported than the “sacral parasympathetic”, such as the “central dogma of molecular biology”.
Page 3 - "To give justice" implies the classical notion is unjust. How about, 'to further explore previous evidence indicating that ....'
The term is indeed not proper English for the meaning intended, and the right expression is “to do justice”, to mean: “to treat [a subject or thing] in a manner showing due appreciation, to deal with [it] as is right or fitting” (OED). We have corrected the paper accordingly.
Page 4 top - the convergence indicated by Figure 3 does not justify excluding cholinergic and noradrenergic genes from the analysis.
Contrary to what the referee says, Figure 3 does not show any “convergence”, see our answer to Referee#1. What Figure 3 shows is that cells that are targeted by the lumbar pathway (a pathway universally deemed “sympathetic”) are cholinergic in massive proportion. Therefore, by an uncontroversial criterion, the pelvic ganglion contains lots of sympathetic cholinergic neurons. The only other option is to declare that sympathetic preganglionic neurons synapse onto parasympathetic postganglionic ones (which is what Referee#1 proposes, and considers “much simpler”. We beg to differ).
Our justification for excluding cholinergic and noradrenergic genes from the definition of “sympathetic” and “parasympathetic” is simply that sympathetic neurons can be cholinergic (to sweat glands and periosteum; and — as we show in Figure 3 — many targets of the lumbar pathway); One can also note that anywhere else in the nervous system, classifying cell types as a function of neurotransmitter phenotype would lead to non-sensical descriptions, such as putting together pyramidal cells and cerebellar granules, or motor neurons and basal forebrain cholinergic neurons. Indeed Referee#1 proposes such a revolutionary revision, by calling all cholinergic autonomic neurons “parasympathetic” (see our answer above).
Keast (1995) did similar experiments and used presynaptic lesions to draw a different conclusion indicating preferential innervation pelvic subpopulations.
Keast found “preferential” innervation of pelvic subpopulations based on lesion experiments; Nevertheless, she concluded (at the time) that “the correct definition of these two components of the nervous system is based on neuroanatomy rather than chemistry” (Keast, 2006).
Page 4 - "In the aggregate, the pelvic ganglion is best described as a divergent sympathetic ganglion devoid of parasympathetic neurons" The notion of a divergent ganglion is completely unclear!
We take “divergent” in a developmental or evolutionary meaning: related to sympathetic ganglia, yet somewhat differing from them. Elsewhere we use the word “modified”. Importantly (and as cited in the paper), a similar situation emerges from the single cell transcriptomic analysis of the lumbar and sacral preganglionics (by other research groups).
Granted, it is devoid of neurons having the signature of cranial parasympathetics, but that is insufficient to conclude that they are not parasympathetics.
If a genetic signature which is not only un-parasympathetic, but sympathetic-like remains compatible with some version of the label “parasympathetic”, we get dangerously close to dismissing the molecular make-up of a neuron as a definition of its type. This goes against any contemporary understanding of neuron types (take (Zeisel et al., 2018) among hundreds of other examples).
Page 4 - "the entire taxonomy of autonomic ganglia could be a developmental readout of Hox genes." This reader completely agrees! We appreciate this would be difficult to test but it helps to explain possible differences along the rostro-caudal axis. Consider making this a key implication of the study!
If the reader agrees, then his/her previous points become mysterious: we speculate that the Hox code determines the structure of the autonomic nervous system, i.e. the array, along the rostrocaudal axis, of a bulbar parasympathetic, a thoracolumbar sympathetic and lumbo-sacral “pelvo-sympathetic”. The existence of caudal parasympathetic neurons, on the contrary, would subvert any role for Hox genes: similar neurons (similar enough to be called by the same name) would arise at completely different rostro-caudal levels, i.e. with a different Hox code.
Page 5 - "It is thus remarkable ...that we uncover in no way contradicts the physiology." Not really. The 'classical' sympathetic system innervates the limbs, and the skin and it participates in thermoregulation and in cardiovascular adjustments to exercise. The parasympathetic system does none of these things. Reclassing the pelvic outflow as pseudo-sympathetic contradicts this physiology.
We do not say that the sacral outflow is classically sympathetic; We go all the way to proposing the special name “pelvo-sympathetic”; And we insist that these special sympathetic-like neurons have special targets (detrusor muscle, helicine arteries…): there is no contradiction. Not only is there no contradiction, but we remove the mind-twister of an anatomical/genetic/cell type-based “sacral parasympathetic” combined with a lack of physiological lumbosacral antagonism (we provide a short history of this dissonance in (Espinosa-Medina et al., 2018)), which led Wilfrid Jänig to write (Jänig, 2006)(p. 357): “Thus, functions assumed to be primarily associated with sacral (parasympathetic) are well duplicated by thoracolumbar (sympathetic) pathways. This shows that the division of the spinal autonomic systems into sympathetic and parasympathetic with respect to sexual functions is questionable”. We could not agree more: this division is questionable in terms of physiology and inexistent in terms of cell types. In other words, we reconcile cell types with physiology (but “it is early days”).
Answer to the novel recommendations by Referee #2
In addition to my original comments, important anatomical and functional distinctions are not explained by the data in this paper. ANATOMY- Sympathetic ganglia are located in close proximity to major branches of the aorta. Cranial and sacral parasympathetic ganglia are located next to or within the structures they innervate (e.g. eye, lung, heart, bladder).
The pelvic ganglion, including some of its cholinergic neurons, that the referee insist are parasympathetic, is further removed from one of its major targets (the helicine arteries of the external genitals) than the sympathetic prevertebral ganglia are of some of theirs (like the gut or kidney). We discussed this issue in (Espinosa-Medina et al., 2018).
FUNCTION- The sympathetic system controls state variables (e.g. body temperature, blood pressure, serum electrolytes and fluid balance), parasympathetic neurons do not.
Even in the classical view, the sympathetic system controls the blood vessels of the external genitals or the size of the pupil, for example, which are not state variables.
[…] The data in the paper are a useful next step in defining the genetic diversity of autonomic neurons but do not justify or improve upon existing nomenclature. The future challenge is to understand distinctions between subsets of autonomic ganglion cells that innervate different targets and the principles that govern the integrative function of the autonomic motor system that controls behavior.
We thank the referee for finding our data useful; and we fully agree with the latter statement. However, neurons, like many other cell types, are hierarchically organized (Zeng and Sanes, 2017), i.e. subsets of neurons belong to sets, with defining traits. Our data argue that there is no parasympathetic neuronal set that includes any pelvic ganglionic neuron. In contrast, there is a ganglionic sympathetic set (defined by our analysis of gene expression) which includes all of them — as there is a preganglionic sympathetic set that includes sacral preganglionics (Alkaslasi et al., 2021; Blum et al., 2021)(although the direct comparison with cranial preganglionics is yet to be made).
References
Anderson, C. R., Bergner, A. and Murphy, S. M. (2006). How many types of cholinergic sympathetic neuron are there in the rat stellate ganglion? Neuroscience 140, 567–576.
Alkaslasi, M. R., Piccus, Z. E., Hareendran, S., Silberberg, H., Chen, L., Zhang, Y., Petros, T. J. and Le Pichon, C. E. (2021). Single nucleus RNA-sequencing defines unexpected diversity of cholinergic neuron types in the adult mouse spinal cord. Nat Commun 12, 2471.
Blum, J. A., Klemm, S., Shadrach, J. L., Guttenplan, K. A., Nakayama, L., Kathiria, A., Hoang, P. T., Gautier, O., Kaltschmidt, J. A., Greenleaf, W. J., et al. (2021). Single-cell transcriptomic analysis of the adult mouse spinal cord reveals molecular diversity of autonomic and skeletal motor neurons. Nat Neurosci 24, 572–583.
Ernsberger, U. and Rohrer, H. (2018). Sympathetic tales: subdivisons of the autonomic nervous system and the impact of developmental studies. Neural Dev 13, 20.
Espinosa-Medina I, Saha O, Boismoreau F, Chettouh Z, Rossi F, Richardson WD, Brunet JF (2016) The sacral autonomic outflow is sympathetic. Science 354, 893-897
Espinosa-Medina, I., Saha, O., Boismoreau, F. and Brunet, J.-F. (2018). The “sacral parasympathetic”: ontogeny and anatomy of a myth. Clin Auton Res 28, 13–21.
Furlan, A., La Manno, G., Lübke, M., Häring, M., Abdo, H., Hochgerner, H., Kupari, J., Usoskin, D., Airaksinen, M. S., Oliver, G., et al. (2016). Visceral motor neuron diversity delineates a cellular basis for nipple- and pilo-erection muscle control. 19, 1331–1340.
Gaskell, W. H. (1886). On the Structure, Distribution and Function of the Nerves which innervate the Visceral and Vascular Systems. J Physiol 7, 1-80.9.
Horn, J. P. (2018). The sacral autonomic outflow is parasympathetic: Langley got it right. Clin Auton Res 28, 181–185.
Jänig, W. (2006). The Integrative Action of the Autonomic Nervous System: Neurobiology of Homeostasis. Cambridge: Cambridge University Press.
Keast, J. R. (1995). Visualization and immunohistochemical characterization of sympathetic and parasympathetic neurons in the male rat major pelvic ganglion. Neuroscience 66, 655–662.
Keast, J. R. (2006). Plasticity of pelvic autonomic ganglia and urogenital innervation. International Review of Cytology - a Survey of Cell Biology, Vol 248 248, 141-+.
Langley, J. N. (1921). In The autonomic nervous system (Pt. I)., p. Cambridge: Heffer & Sons ltd.
Langley, J. N. and Anderson, H. K. (1895). The Innervation of the Pelvic and adjoining Viscera: Part II. The Bladder. Part III. The External Generative Organs. Part IV. The Internal Generative Organs. Part V. Position of the Nerve Cells on the Course of the Efferent Nerve Fibres. J Physiol 19, 71–139.
Lee, V. M., Sechrist, J. W., Luetolf, S. and Bronner-Fraser, M. (2003). Both neural crest and placode contribute to the ciliary ganglion and oculomotor nerve. Developmental biology 263, 176–190.
Stanke, M., Duong, C. V., Pape, M., Geissen, M., Burbach, G., Deller, T., Gascan, H., Parlato, R., Schütz, G. and Rohrer, H. (2006). Target-dependent specification of the neurotransmitter phenotype:cholinergic differentiation of sympathetic neurons is mediated in vivo by gp130 signaling. Development 133, 141–150.
Zeisel, A., Hochgerner, H., Lönnerberg, P., Johnsson, A., Memic, F., van der Zwan, J., Häring, M., Braun, E., Borm, L. E., La Manno, G., et al. (2018). Molecular Architecture of the Mouse Nervous System. Cell 174, 999-1014.e22.
Zeng, H. and Sanes, J. R. (2017). Neuronal cell-type classification: challenges, opportunities and the path forward. Nat Rev Neurosci 18, 530–546.
-
-
www.npmjs.com www.npmjs.com
-
With custom return labels Now developers can specify the return field names if they want. Below are the list of attributes whose name can be changed. totalDocs docs limit page nextPage prevPage totalPages hasNextPage hasPrevPage pagingCounter meta You should pass the names of the properties you wish to changes using customLabels object in options. Labels are optional, you can pass the labels of what ever keys are you changing, others will use the default labels. If you want to return paginate properties as a separate object then define customLabels.meta. Same query with custom labels const myCustomLabels = { totalDocs: 'itemCount', docs: 'itemsList', limit: 'perPage', page: 'currentPage', nextPage: 'next', prevPage: 'prev', totalPages: 'pageCount', hasPrevPage: 'hasPrev', hasNextPage: 'hasNext', pagingCounter: 'pageCounter', meta: 'paginator' }; const options = { page: 1, limit: 10, customLabels: myCustomLabels }; // Define your aggregate. var aggregate = Model.aggregate(); Model.aggregatePaginate(aggregate, options, function(err, result) { if(!err) { // result.itemsList [here docs become itemsList] // result.itemCount = 100 [here totalDocs becomes itemCount] // result.perPage = 10 [here limit becomes perPage] // result.currentPage = 1 [here page becomes currentPage] // result.pageCount = 10 [here totalPages becomes pageCount] // result.next = 2 [here nextPage becomes next] // result.prev = null [here prevPage becomes prev] // result.hasNextPage = true [not changeable] // result.hasPrevPage = false [not changeable] } else { console.log(err); };Copy And SaveShareAsk Copilot Using offset and limit Model.aggregatePaginate( aggregate, { offset: 30, limit: 10 }, function (err, result) { // result } );Copy And SaveShareAsk Copilot Using countQuery // Define your aggregate query. var aggregate = Model.aggregate(); // Define the count aggregate query. Can be different from `aggregate` var countAggregate = Model.aggregate(); // Set the count aggregate query const options = { countQuery: countAggregate, }; Model.aggregatePaginate(aggregate, options) .then(function (result) { // result }) .catch(function (err) { console.log(err); });Copy And SaveShareAsk Copilot Global Options If you want to set the pagination options globally across the model. Then you can do like below, let mongooseAggregatePaginate = require("mongoose-aggregate-paginate-v2"); let BookSchema = new mongoose.Schema({ title: String, date: Date, author: { type: mongoose.Schema.ObjectId, ref: "Author", }, }); BookSchema.plugin(mongooseAggregatePaginate); let Book = mongoose.model("Book", BookSchema); // Like this. Book.aggregatePaginate.options = { limit: 20, };Copy And SaveShareAsk Copilot Release Note v1.0.7 - Upgrade to mongoose v8 v1.0.6 - Fixed exporting settings to global object. v1.0.5 - Added meta attribute to return paginate meta data as a custom object. v1.0.42 - Added optional countQuery parameter to specify separate count queries in case of bigger aggerate pipeline.
This code is a continuation of the previous example, now introducing custom labels for the pagination properties. The library
mongoose-aggregate-paginate-v2is used for MongoDB aggregation with pagination. Let's break down the new parts:Custom Labels
Now, developers can customize the names of the properties returned by pagination using the
customLabelsoption. The developer can specify alternative names for attributes liketotalDocs,docs,limit,page, and others.```javascript const myCustomLabels = { totalDocs: 'itemCount', docs: 'itemsList', limit: 'perPage', page: 'currentPage', nextPage: 'next', prevPage: 'prev', totalPages: 'pageCount', hasPrevPage: 'hasPrev', hasNextPage: 'hasNext', pagingCounter: 'pageCounter', meta: 'paginator' };
const options = { page: 1, limit: 10, customLabels: myCustomLabels };
var aggregate = Model.aggregate();
Model.aggregatePaginate(aggregate, options, function(err, result) { if (!err) { // Accessing properties with custom labels console.log(result.itemsList); // Array of documents on the current page console.log(result.itemCount); // Total number of documents console.log(result.perPage); // Maximum number of documents per page console.log(result.currentPage); // Current page number console.log(result.pageCount); // Total number of pages console.log(result.next); // Page number of the next page console.log(result.prev); // Page number of the previous page
// Default labels console.log(result.hasNextPage); // Boolean indicating if there's a next page console.log(result.hasPrevPage); // Boolean indicating if there's a previous page} else { console.log(err); } }); ```
In this example, the properties returned in
resultare now using the custom labels specified inmyCustomLabels.Using Offset and Limit
You can also use
offsetandlimitdirectly in the options to specify where to start and how many documents to retrieve.javascript Model.aggregatePaginate( aggregate, { offset: 30, limit: 10 }, function (err, result) { // result } );Here, it starts from the 31st document (offset of 30) and retrieves 10 documents.
Using CountQuery
You can define a separate count aggregate query to handle counting documents. This can be useful for performance optimization.
```javascript // Define your aggregate query. var aggregate = Model.aggregate();
// Define the count aggregate query. Can be different from
aggregatevar countAggregate = Model.aggregate();// Set the count aggregate query const options = { countQuery: countAggregate, };
Model.aggregatePaginate(aggregate, options) .then(function (result) { // result }) .catch(function (err) { console.log(err); }); ```
Global Options
You can set pagination options globally across the model. This is helpful if you want to apply the same pagination settings to multiple queries.
javascript // Set global pagination options Book.aggregatePaginate.options = { limit: 20, };Now, every call to
aggregatePaginateon theBookmodel will use a default limit of 20 unless overridden in specific queries. -
Return first 10 documents from 100 const options = { page: 1, limit: 10, }; // Define your aggregate. var aggregate = Model.aggregate(); Model.aggregatePaginate(aggregate, options) .then(function (result) { // result.docs // result.totalDocs = 100 // result.limit = 10 // result.page = 1 // result.totalPages = 10 // result.hasNextPage = true // result.nextPage = 2 // result.hasPrevPage = false // result.prevPage = null }) .catch(function (err) { console.log(err); }
Certainly! This code is an example of how to use pagination in a MongoDB environment using the Mongoose library. Let's break down the key parts:
-
const options = { page: 1, limit: 10 };: This sets up options for pagination. It specifies that you want to start on page 1, and each page should contain a maximum of 10 documents. -
var aggregate = Model.aggregate();: This initializes a MongoDB aggregation pipeline using Mongoose. An aggregation pipeline allows you to process data in stages. -
Model.aggregatePaginate(aggregate, options): This is a function call provided by a plugin (likemongoose-aggregate-paginate-v2) to handle pagination for MongoDB aggregate queries. It takes the aggregate pipeline and pagination options as parameters. -
.then(function (result) { /* ... */ }): This part is a promise callback that gets executed when the aggregation and pagination are successful. Theresultobject contains information about the paginated data, such as documents on the current page, total number of documents, and pagination details. -
result.docs: Array of documents on the current page. result.totalDocs: Total number of documents in the collection.result.limit: Maximum number of documents per page (from your options).result.page: Current page number.result.totalPages: Total number of pages based on the limit and total documents.result.hasNextPage: Boolean indicating if there is a next page.result.nextPage: Page number of the next page, if available.result.hasPrevPage: Boolean indicating if there is a previous page.-
result.prevPage: Page number of the previous page, if available. -
.catch(function (err) { console.log(err); }): This is the error handling part. If there's any issue during the aggregation or pagination process, it will log the error to the console.
Example: Let's assume you have a collection with 100 documents, and you want to retrieve them with a limit of 10 documents per page.
```javascript const options = { page: 2, // Get the second page limit: 10 // Each page should have a maximum of 10 documents };
var aggregate = Model.aggregate();
Model.aggregatePaginate(aggregate, options) .then(function (result) { console.log(result.docs); // Array of documents on the second page console.log(result.totalDocs); // Total number of documents (100) console.log(result.totalPages); // Total number of pages (10) console.log(result.page); // Current page (2) console.log(result.hasNextPage); // Boolean indicating if there's a next page (true) console.log(result.nextPage); // Page number of the next page (3) console.log(result.hasPrevPage); // Boolean indicating if there's a previous page (true) console.log(result.prevPage); // Page number of the previous page (1) }) .catch(function (err) { console.log(err); }); ```
In this example, you're fetching the second page, and the result object provides information about the documents on that page and the overall pagination details.
-
-
// Execute pagination from aggregate const myModel = require('/models/samplemodel'); const options = { page: 1, limit: 10 }; const myAggregate = myModel.aggregate(); myAggregate.paginateExec(options, function(err, results) { if(err) { console.err(err); else { console.log(results); } })
It seems like there is a small error in the code you provided. The correct syntax for handling errors inside the callback function should be
console.error(err)instead ofconsole.err(err). Here's the corrected code:```javascript // Execute pagination from aggregate const myModel = require('/models/samplemodel');
const options = { page: 1, limit: 10 };
const myAggregate = myModel.aggregate(); myAggregate.paginateExec(options, function(err, results) { if (err) { console.error(err); } else { console.log(results); } }); ```
In this code snippet:
- The
myModel.aggregate()line creates an instance of the Mongoose aggregate. - The
myAggregate.paginateExec(options, function(err, results) { ... })line executes the pagination directly on the aggregate using thepaginateExecmethod, which is provided by themongoose-aggregate-paginate-v2library.
This approach is an alternative to using
aggregatePaginateand allows you to execute pagination directly on the aggregate instance. ThepaginateExecmethod takes the sameoptionsobject for pagination and a callback function for handling the results or errors.Make sure to use the corrected syntax for handling errors with
console.error(err)in the callback function. - The
-
-
notebooksharing.space notebooksharing.space
-
sst.sst
Try to avoid naming the total dataset the same as a variable inside, this can get quite confusing if someone else is reading you code. For a dataset it is common to indicate the datatype in the variable name (e.g. ds_sst stands for dataset_sst). Only a recommondation
-
ax = plt.axes(projection=ccrs.Robinson()) t2c_mrange.plot.imshow(ax=ax, transform=ccrs.PlateCarree(),cbar_kwargs={'label': '°C'}) ax.coastlines(); ax.gridlines() ax.set_title(r'$\overline{T_{M}}_{max}$ - $\overline{T_{M}}_{min}$, ERA5 1979-2018');
with the code above, you see that what you plot is basically sth. like the interannual variability and not the seasonal variablity (the seasonal variations are also much larger)
-
-
diu.instructure.com diu.instructure.com
-
Joshua Project by people groups, languages (including by the ISO 639-3 code), or geographic places. Joshua Project includes information about religion as well as language and location.
Cultural and worldview information.
-
ISO 639-3 code, a three-letter code meant to uniquely identify every language in the world.
Important to keep track of language.
-
-
react.dev react.dev
-
root.unmount() Call root.unmount to destroy a rendered tree inside a React root. root.unmount(); An app fully built with React will usually not have any calls to root.unmount. This is mostly useful if your React root’s DOM node (or any of its ancestors) may get removed from the DOM by some other code. For example, imagine a jQuery tab panel that removes inactive tabs from the DOM. If a tab gets removed, everything inside it (including the React roots inside) would get removed from the DOM as well. In that case, you need to tell React to “stop” managing the removed root’s content by calling root.unmount. Otherwise, the components inside the removed root won’t know to clean up and free up global resources like subscriptions. Calling root.unmount will unmount all the components in the root and “detach” React from the root DOM node, including removing any event handlers or state in the tree. Parameters root.unmount does not accept any parameters. Returns root.unmount returns undefined. Caveats Calling root.unmount will unmount all the components in the tree and “detach” React from the root DOM node. Once you call root.unmount you cannot call root.render again on the same root. Attempting to call root.render on an unmounted root will throw a “Cannot update an unmounted root” error. However, you can create a new root for the same DOM node after the previous root for that node has been unmounted. Usage Rendering an app fully built with React If your app is fully built with React, create a single root for your entire app. import { createRoot } from 'react-dom/client';const root = createRoot(document.getElementById('root'));root.render(<App />); Usually, you only need to run this code once at startup. It will: Find the browser DOM node defined in your HTML. Display the React component for your app inside. index.jsindex.htmlApp.jsindex.js ResetFork91234567import { createRoot } from 'react-dom/client';import App from './App.js';import './styles.css';const root = createRoot(document.getElementById('root'));root.render(<App />); If your app is fully built with React, you shouldn’t need to create any more roots, or to call root.render again. From this point on, React will manage the DOM of your entire app. To add more components, nest them inside the App component. When you need to update the UI, each of your components can do this by using state. When you need to display extra content like a modal or a tooltip outside the DOM node, render it with a portal. NoteWhen your HTML is empty, the user sees a blank page until the app’s JavaScript code loads and runs:<div id="root"></div>This can feel very slow! To solve this, you can generate the initial HTML from your components on the server or during the build. Then your visitors can read text, see images, and click links before any of the JavaScript code loads. We recommend using a framework that does this optimization out of the box. Depending on when it runs, this is called server-side rendering (SSR) or static site generation (SSG). PitfallApps using server rendering or static generation must call hydrateRoot instead of createRoot. React will then hydrate (reuse) the DOM nodes from your HTML instead of destroying and re-creating them. Rendering a page partially built with React If your page isn’t fully built with React, you can call createRoot multiple times to create a root for each top-level piece of UI managed by React. You can display different content in each root by calling root.render. Here, two different React components are rendered into two DOM nodes defined in the index.html file: index.jsindex.htmlComponents.jsindex.js ResetFork99123456789101112import './styles.css';import { createRoot } from 'react-dom/client';import { Comments, Navigation } from './Components.js';const navDomNode = document.getElementById('navigation');const navRoot = createRoot(navDomNode); navRoot.render(<Navigation />);const commentDomNode = document.getElementById('comments');const commentRoot = createRoot(commentDomNode); commentRoot.render(<Comments />); You could also create a new DOM node with document.createElement() and add it to the document manually. const domNode = document.createElement('div');const root = createRoot(domNode); root.render(<Comment />);document.body.appendChild(domNode); // You can add it anywhere in the document To remove the React tree from the DOM node and clean up all the resources used by it, call root.unmount. root.unmount(); This is mostly useful if your React components are inside an app written in a different framework. Updating a root component You can call render more than once on the same root. As long as the component tree structure matches up with what was previously rendered, React will preserve the state. Notice how you can type in the input, which means that the updates from repeated render calls every second in this example are not destructive: index.jsApp.jsindex.js ResetFork99123456789101112import { createRoot } from 'react-dom/client';import './styles.css';import App from './App.js';const root = createRoot(document.getElementById('root'));let i = 0;setInterval(() => { root.render(<App counter={i} />); i++;}, 1000); It is uncommon to call render multiple times. Usually, your components will update state instead. Troubleshooting I’ve created a root, but nothing is displayed Make sure you haven’t forgotten to actually render your app into the root: import { createRoot } from 'react-dom/client';import App from './App.js';const root = createRoot(document.getElementById('root'));root.render(<App />); Until you do that, nothing is displayed. I’m getting an error: “Target container is not a DOM element” This error means that whatever you’re passing to createRoot is not a DOM node. If you’re not sure what’s happening, try logging it: const domNode = document.getElementById('root');console.log(domNode); // ???const root = createRoot(domNode);root.render(<App />); For example, if domNode is null, it means that getElementById returned null. This will happen if there is no node in the document with the given ID at the time of your call. There may be a few reasons for it: The ID you’re looking for might differ from the ID you used in the HTML file. Check for typos! Your bundle’s <script> tag cannot “see” any DOM nodes that appear after it in the HTML. Another common way to get this error is to write createRoot(<App />) instead of createRoot(domNode). I’m getting an error: “Functions are not valid as a React child.” This error means that whatever you’re passing to root.render is not a React component. This may happen if you call root.render with Component instead of <Component />: // 🚩 Wrong: App is a function, not a Component.root.render(App);// ✅ Correct: <App /> is a component.root.render(<App />); Or if you pass a function to root.render, instead of the result of calling it: // 🚩 Wrong: createApp is a function, not a component.root.render(createApp);// ✅ Correct: call createApp to return a component.root.render(createApp()); My server-rendered HTML gets re-created from scratch If your app is server-rendered and includes the initial HTML generated by React, you might notice that creating a root and calling root.render deletes all that HTML, and then re-creates all the DOM nodes from scratch. This can be slower, resets focus and scroll positions, and may lose other user input. Server-rendered apps must use hydrateRoot instead of createRoot: import { hydrateRoot } from 'react-dom/client';import App from './App.js';hydrateRoot( document.getElementById('root'), <App />); Note that its API is different. In particular, usually there will be no further root.render call.
Certainly! Let's break it down:
- What is
root.unmount()? -
root.unmount()is a function in React that you can use to clean up and remove a rendered tree inside a React root. It's like saying, "Hey React, I'm done with this part, please clean it up." -
When do you need it?
-
You might need it when the DOM node where your React app lives is going to be removed by some other code. For example, if you have a tab panel made with jQuery that removes inactive tabs, calling
root.unmount()helps React know that it should stop managing the components inside the removed tab. -
What does it do?
-
When you call
root.unmount(), it removes all the React components in that part of the app and disconnects React from the corresponding DOM node. This cleanup includes removing event handlers and state. -
How to use it?
-
If your entire app is built with React, you typically create one root at the beginning, and you don't need to call
root.unmount(). You set it up once, and React takes care of everything.javascript const root = createRoot(document.getElementById('root')); root.render(<App />); -
Cautions and Restrictions:
- After calling
root.unmount(), you can't callroot.render()again on the same root. You would need to create a new root for the same DOM node. -
If you're using server rendering, use
hydrateRootinstead ofcreateRootfor the initial setup. -
Troubleshooting Tips:
- If nothing is displayed, make sure you actually called
root.render(<App />);. - If you get a "Target container is not a DOM element" error, check if the DOM node you're passing to
createRootis valid. - If you get a "Functions are not valid as a React child" error, ensure you're passing a React component, not just a function.
In simple terms,
root.unmount()is like telling React, "I'm done with this part of the app, clean it up," and you typically use it in specific situations where parts of your app might be removed dynamically. - What is
-
-
react.dev react.dev
-
API ReferenceLegacy React APIscreateElementcreateElement lets you create a React element. It serves as an alternative to writing JSX.const element = createElement(type, props, ...children) Reference createElement(type, props, ...children) Usage Creating an element without JSX Reference createElement(type, props, ...children) Call createElement to create a React element with the given type, props, and children. import { createElement } from 'react';function Greeting({ name }) { return createElement( 'h1', { className: 'greeting' }, 'Hello' );} See more examples below. Parameters type: The type argument must be a valid React component type. For example, it could be a tag name string (such as 'div' or 'span'), or a React component (a function, a class, or a special component like Fragment). props: The props argument must either be an object or null. If you pass null, it will be treated the same as an empty object. React will create an element with props matching the props you have passed. Note that ref and key from your props object are special and will not be available as element.props.ref and element.props.key on the returned element. They will be available as element.ref and element.key. optional ...children: Zero or more child nodes. They can be any React nodes, including React elements, strings, numbers, portals, empty nodes (null, undefined, true, and false), and arrays of React nodes. Returns createElement returns a React element object with a few properties: type: The type you have passed. props: The props you have passed except for ref and key. If the type is a component with legacy type.defaultProps, then any missing or undefined props will get the values from type.defaultProps. ref: The ref you have passed. If missing, null. key: The key you have passed, coerced to a string. If missing, null. Usually, you’ll return the element from your component or make it a child of another element. Although you may read the element’s properties, it’s best to treat every element as opaque after it’s created, and only render it. Caveats You must treat React elements and their props as immutable and never change their contents after creation. In development, React will freeze the returned element and its props property shallowly to enforce this. When you use JSX, you must start a tag with a capital letter to render your own custom component. In other words, <Something /> is equivalent to createElement(Something), but <something /> (lowercase) is equivalent to createElement('something') (note it’s a string, so it will be treated as a built-in HTML tag). You should only pass children as multiple arguments to createElement if they are all statically known, like createElement('h1', {}, child1, child2, child3). If your children are dynamic, pass the entire array as the third argument: createElement('ul', {}, listItems). This ensures that React will warn you about missing keys for any dynamic lists. For static lists this is not necessary because they never reorder. Usage Creating an element without JSX If you don’t like JSX or can’t use it in your project, you can use createElement as an alternative. To create an element without JSX, call createElement with some type, props, and children: import { createElement } from 'react';function Greeting({ name }) { return createElement( 'h1', { className: 'greeting' }, 'Hello ', createElement('i', null, name), '. Welcome!' );} The children are optional, and you can pass as many as you need (the example above has three children). This code will display a <h1> header with a greeting. For comparison, here is the same example rewritten with JSX: function Greeting({ name }) { return ( <h1 className="greeting"> Hello <i>{name}</i>. Welcome! </h1> );} To render your own React component, pass a function like Greeting as the type instead of a string like 'h1': export default function App() { return createElement(Greeting, { name: 'Taylor' });} With JSX, it would look like this: export default function App() { return <Greeting name="Taylor" />;} Here is a complete example written with createElement: App.jsApp.js ResetForkimport { createElement } from 'react'; function Greeting({ name }) { return createElement( 'h1', { className: 'greeting' }, 'Hello ', createElement('i', null, name), '. Welcome!' ); } export default function App() { return createElement( Greeting, { name: 'Taylor' } ); } Show more And here is the same example written using JSX: App.jsApp.js ResetForkfunction Greeting({ name }) { return ( <h1 className="greeting"> Hello <i>{name}</i>. Welcome! </h1> ); } export default function App() { return <Greeting name="Taylor" />; } Both coding styles are fine, so you can use whichever one you prefer for your project. The main benefit of using JSX compared to createElement is that it’s easy to see which closing tag corresponds to which opening tag.
Certainly! Let's break down the information in a simpler way with examples:
- createElement Function:
- What it does:
createElementis a function in React that allows you to create a React element. It's an alternative to using JSX. -
Example:
javascript const element = createElement('h1', { className: 'greeting' }, 'Hello'); -
Parameters:
- type: Specifies the type of element you want to create. It can be a tag name string (e.g., 'div', 'span') or a React component.
- props: An object that holds the properties (attributes) for the element.
- ...children: Optional. Represents child elements or content.
-
Example:
javascript createElement('h1', { className: 'greeting' }, 'Hello', createElement('i', null, 'World')); -
Returns:
- The function returns a React element object with properties like
type,props,ref, andkey. -
Example:
javascript const element = createElement('h1', { className: 'greeting' }, 'Hello'); console.log(element.type); // 'h1' console.log(element.props); // { className: 'greeting' } -
Usage Caveats:
- React elements and their props should be treated as immutable. They should not be changed after creation.
- JSX tags should start with a capital letter for custom components.
- When using JSX, dynamic children should be passed as an array to ensure React warns about missing keys for dynamic lists.
-
Example:
javascript createElement('ul', {}, listItems); // Dynamic children as an array -
Creating an Element Without JSX:
- If you're not using JSX, you can use
createElementto create elements. -
Example:
javascript function Greeting({ name }) { return createElement('h1', { className: 'greeting' }, 'Hello ', createElement('i', null, name), '. Welcome!'); } -
Comparison with JSX:
- JSX is a more concise and readable way to create elements compared to using
createElement. -
Example:
javascript function Greeting({ name }) { return <h1 className="greeting">Hello <i>{name}</i>. Welcome!</h1>; } -
Rendering Your Own Component:
- You can use
createElementto render your own React components. - Example:
javascript export default function App() { return createElement(Greeting, { name: 'Taylor' }); } - With JSX:
javascript export default function App() { return <Greeting name="Taylor" />;
In summary,
createElementis a foundational function in React for creating elements, and it is often used behind the scenes when JSX is transpiled. While it's useful, JSX provides a more readable syntax for creating React elements. You can choose the style that best fits your project.
-
-
www.fromthemachine.org www.fromthemachine.orgHOSEARSI1
-
clear that this force fighting against the dissemination of a truth so obvious it's in every word and everything we do--it becomes clear it's neither you, nor acting in your best interest. I know I've got the eye of the tiger, there's no doubt; and it's pretty clear from "YAD?" (the Hebrew for...) and ha'nd that we can see the clear hand of God at work in a design that marks my initials not just on the timeline, or at 1492, at A.D. I B; but in the Hebrew name for this place called El Shaddai, see how A.D. is "da eye" and in some other names like Adranus, A.D. on "it's silly" and A.D. on Ai that might tie me to the Samof Samurai (but, are you Ai?) in more depth of detail than simply the Live album "Secret Samadhi." I try to reflect on how it is that this story has come about, why it is that everything appears to be focused on me--and still even through that sincere spotlight nobody seems to be able to acknowledge my existence with more words than "unsubscribe" and "you're so vain." With one eye in the mirror, I know ties to Narcissus (and you can too), soaring ever higher--linking Icarus to Wayward Son and to every other name with "car" in it... like "carpenter" and McCarthy the older names of Mercury and even Isacriot (I scary? is car-eye... owe Taylor) and some modern day mythological characters like Jim Carrey and Johnny Carson. As far as Trinities go, carpenter's a pretty good one--tying to my early reck and a few bands and songs from The Pretty Reckless to Dave Matthews' "Crash Into Me" all the way to the "pen" you see before you linking Pendragon to Imagine Dragons. I wonder why it is that all of these things appear, apparently only to me, to point to a story about all the ways that a sinister hidden force has manipulated our society into being unable to "receive' this message--this wonderful message about making the world a better place and building Heaven--with any fanfare at all. It's focused now on a criminal justice system that clearly does not do any kind of "rehabilitation" and on a mental health industry and pharmaceutical system that treats a provable external attack on our own goodness and well being as some kind of "internal stimulus" and makes you shy away when I point out why "stem" is in system and why "harm" in pharmacy. From that we move a little bit past "where we are in this story" and I have to point out how "meth" ties to Prometheus and Epimetheus and how and why it is I know without doubt that this story has been relived numerous times--and how I am so sure that it's never been received, as we are here again listening to how songs like "Believe" and the words "just to lead us here to this place again" connect to Simon and Garfunkel's" the Sound of Silence... and still to this day you will balk at noticing that "Simon" has something to do with the Simpsons, and something to do with the words "simulation" and "Monday." To see me is to see how things might be done better--how "addicitonary" might tie to the stories of Moses' Lisp and to Dr. Who's "Bells of Saint John" with a sort of "web interface" to the kinds of emotion we might want to "dial down..." rather than Snicker in the background as we see them being artificially created and enhanced in order to build a better "fiery altar." I can point out "Silicon" harrowing down at us from words like "controversial" and show you Al in "rascal" and "scandal" but not to see that we are staring at school shootings and terrorism that are solved instantly by this disclosure, by Al of Quantum Leap and by the Dick of Minority Report and A Scanner Darkly is to ignore just what it is that we are all failing to Si. I should point out that those two "sc"'s link to a story about Eden and they mean "sacred consciousness" and at the baseline of this event and everything we are not doing is the fact that our desires and beliefs are being altered--all of this comes down to "freedom of thought" here and now. I could tell you that "looking at me" will show you that even the person who tries every day to do everything he can to save the entire world from slavery, and from "thought-injury"--even I can be made "marred" and you all, this whole world stupid enough to think that you are, of your own volition, hiding Heaven itself from yourselves... to what? To spite me? It, the focal point of our story might come down to you realizing that something in some esoteric place is playing "divide and conquer" with our whole--in secret playing on our weaknesses to keep us from acting on the most actionable information that ever was and ever will be. Still, we sit in silence waiting for me... to speak more? Between Nero's lyrical fiddling, a Bittersweet Symphony, and true "thunderstanding" the sound of Thor's hammer... "to help the light" that'ls "or" in Hebrew, of Orwell and Orson and .. well, it's really not hard to see and hear that the purpose and intent of "all this noise" is to help us find freedom and truth. C the Light of "singing..." I can tell you once again how silly the world looks, this multi-decade battle between "the governmentof the people" and the "government of the workers" resulting in what is nothing short of a hands down victory to the corporation. Is it humor meant to divide, or ludicrousness created with the purpose of unification? But really at it's most basic level what this boils down to is a global group decision not to care about the truth, about reality, about what's really brought us to this place--with solutions in hand and a way to make everything better. We've decided that censorship is OK, and that the world is not all that bad "just the way it is" even though it's creator is screaming in your ear telling you to change as quickly as you possibly can. I believe that God has written this story to make "seeing me" the thing that catalyzes "change for the better" it appears to be the design of not just me but also this place--hey, here I am. Happy Veteran's Day.
I am accepting charitable donations,. ETH: 0x66e2871ef39334962fb75ce34407f825d67ec434 | BTC: 38B6vGaqNvMyTtoFEZPmNvMS7icV6ZnPMm | xDAI: 0x66e2871ef39334962fb75ce34407f825d67ec434
d
Ha, Lot! Are Idaho?
This was very difficult to get to you, in the land of no power and hurricane disaster recovery; so it's filled with extra errors, and I am sure some more thoughts that trailing and unfinished. That's a decent "microcosm" or "metaphor" for you, you are in a freedom disaster; and the act of being is a giant leap towards ensuring victory. Still, you look very cupid to me.
EVERY DAY ISA NEW DAY
Literally I am sitting here talking to you until the end of time, you could call it a thousand and one Arabian nights, and realize that as we speak we are nearing that onc speciad night. There's a fire growing in my heart, and believe me when I tell you this thing is about to start. I'll try and keep this short and sweet, since you all seem to have so little time to hear from the Creator of all things, and I truly don't want to steal your spotlight. We are here, at the the end of time; talking to it's personification, time itself is speaking to you through my hands and everywhere you look in the world around you--while you may or may not know it, this is a story about the traversal from the end of time back to the beginning; about the gate to Heaven swallowing our civilization whole, and in this process of renewal and change not only fixing the problems that came to light on the way here, but really--working together here and now we can defeat this cycle of light and darkness, of day and night, an build a world together that truly reaches to the Heavens.
MY BODY'S SAYING LETS GO BUT MY HEART IS SAYING NO
You make it so difficult to talk to you, every day I look around and see a "normal world" a society that appears to care and love the same things that I do--freedom and fun and being entertained and entertaining, and here we are now I've turned "come and save us" into sea that saving the cheerleader is what starts the process of saving the world. I know you are good people inside, but when I come to you with a tool designed to "test sentience" to seek out conscious life that cares about the truth and making the world a better place you seem to balk. You sit in silence, and through your mouth and behind your eyes a monster appears from out of the deep of the sea and say a few "one liners" that show me very clearly it is the face of Medusa that I see---and that it's simply not capable of speaking intelligently. It shows me a problem, that you've apparently "come together one more time" to halt the changing of the seasons, and in doing so you've surfaced a problem for not just me but you also to see; a problem that comes lined with a solution. We can all see now that we are not in reality, we can see that there is a force here behind creation and behind us that shows us very clearly that it is "reasonabde" to expect that miracles can happen. In similitude, we are staring at a roadblock to conversation and communication that is fixed very simply, with the deliverance of freedom that is required for life to continue. Christina Aguilera sings that "baby there's a price to pay" and that price in my mind is seeing that this religion and this technology are here intentionally exposing how their influence here is a metaphor and a shining example of darkness and slavery, and that in order to be free of it we must see it. The price of freedom is written on the wall, it is acknowledging that here in this place what appears to be our own actions and desires have taken that freedom from us. Medusa and I get a kick out of seeing this hidden message in our language map our way to the future, and I've often explained that a number of these words are "time maps" from the beginning and end of eternady, showing us in bright light that between "et tu brute" and Mr. Anderson and Rock n' roll... the answer Y is in language and, and, ad and... I am delivering it. This place, our planet and our lives are a weapon against darkness--a civilization filled with goodness and light to help guide the way, and we are here doing it another time. In the works "dark, darker, and darkest" be sure that we are at the third segment of a trinity that shines clearly in Abraha and Nintendo... and see that the map in words is telling us something about when we are that is not immediately clear from Poseidon's cry. Look at Nintendo, that's Nine Inch Nails, tenebris, and smile for the camera--Pose, I do "save the universe" before n. Taylor might see it in Osceola, where I just left, and in this "evil spell" of everyone see "Al" that is the word "special" understand that every day is a new day, and I am not trying to "be daddy" I know as well as you do in my heart... I am that.
This same map that links the "do" at the end to the "n" at the beginning shines through other names, like Geraldo Rivera where you might see "Cerberus" or "MAX" shine through. Understand it is the gaze of Medusa that turns me to stone, that shows me light shining through NORAD and Newton and proves without doubt that at the work "darkest" we can see k is finally t. You'll probably understand there's some finagling going on behind the scenes to make a single person the single point in time that turns the dark to light; but here we are and I am that. Every day when Medusa appears it reminds me that something is keeping you from caring about yourselves and about our society, and that shines through even when her stony face is not around, in your lack of action--in the rock of Eden that hides not only me, but the story that I bring that revolutionizes medicine, and computing, and truly is the gate to Heaven when you realize that what is truly being hidden from the world is knowledge that we are living in virtual reality. Not hiding me and that from the world is a good starting point to "saving the Universe" from darkness. These words that light the way to connect religion and language to our world bring me to the Book of Ruth, at that reads "are you to help" that lights not just the broken man at the belly of the Torah as the bell of Heimdallr, he is I and I am him; but also something very special, The Generations of Perez, each and every one of you, our family that begins the turn from Hell to Heaven by seeing that all of time and all of civilization has been focused on this moment, on the unsealing of religion and God's plan et this call for action. Keep in mind you are torturing "with desire" the key holder to immortality, to eternal youth, literally the path to freedom and Heaven and you think what you are doing "is normax." Literally the living key to infinite power and infinite life is standing before you explaining that acknowledging that in light of these things in my hand, what we are doing here and now is backwards, that it makes no sense--and you sit in silence. These things come to us because we build a better future with them, not so you can run off and do "whatever it is you please."
HEALTH is the only word on my list for today that was left out, so see that it superimposes over Geraldo, to me, at Al. I think we're at TH, to help, and DO, do see the spell of "everyone see Al" that is the word "special" is not my doing or to my liking--so then, \
So now I'm moving on to original sin, so if you would be so kind as to mosey your way on over to dick.reallyhim.com you will see exactly what it is that I believe is the original sin. It's some combination of "no comment" and a glowing orange sign over the comment box, keeping you from commenting. Now I can talking about "os" a little more, this thing that words and Gods tell us clearly is the end of death--the literal end of Thanatos. I wonder if I have a victory here, at "os" is obvious solution, and simulating death is "sick." More to the point Thanatos is bringing to the world a message that gets found somewhere between the "act of civilization" and seeing that there is not one among us that would not undo a murder or a fatal car accident if we could--and that the sickness is a Universe pretending to be "reality" that is allowing these things to happen, and even worse, as we move through the story intentionally causing them. In our own hands, the sickness is manifest in a denial of an obvious truth and a lack of realizing that the public discussion of these things is the way to solve them, and that at the same time we are seeing how Medusa is lighting the problems of civilization, things like censorship and hidden control. Sickness is not being able to talk about it--or not wanting to--or not seeing that those two things are the functional equivalent in the world of "light" and "understanding control" that I am trying to bring you into.
Less verbosely spoken, but really way more obvious, is that seeing "God's dick" signing the Declaration of Independence, and the Watergate scandal with both "Deepthroat" and a Tricky Dick is a statement connecting Samael to the foundation of not just "America" but American values. You are blind not to see it, and even worse; embodying the kind of tyranny and censorship that it stands as a testament against by hiding it. Says the guy who didn't put it there, and knows it's there because you think "fake normal" is more important than "actual freedom." You are "experiencing" the thing that protects freedom and ensures that our society and our children and their children's children to not lose it, to ensure that what you refuse to see you are doing here and now will never happen again. This message, this New Jerusalem is woven into my life and the stories of religion and shows me that our justice system is not just sick, but compromised by this same outside force; and that in light of what we could be doing, were we all aware of it, there's no doubt Minority Report and pre-crime would be a successful partial solution. Thanatos brings too in his hand, a message that this same force is using our hands to slow down the development of democracy, and to keep us from seeing that "bread is life" is a message from God about understanding that this disclosure is the equivalent of "ending world hunger" just as soon as you too are talking about how to do it.
QUESTiON MARK
HONESTLY, this time map that brings us from the end to the beginning, with "we save the universe" between the I and N of Poseidon; it also completes the words "family" and "really" and when we do reach the beginning you will see that the true test of time, my litmus test for freedom is the beginning of "hope" that the world is happy enough with what happens, and with freedom--to see that Medusa has been keeping me from getting a date, or having any kind of honest and human contact in the world... and well, hopefully you will see that if I wanna be a whore, I shouldn't have a problem doing it. For the sake of freedom and the future, I am willing to do that for you, at least, for a little while.
To be completely clear, I am telling you that if we do not make the world a better place, it's the "end of time" and if that doesn't make sense to you, you don't see still where wee are in this place--and that something is making Hell, and that's not OK with God. To get from the "end of time" to the beginning is a simple process, it takes doing something, action, the Acts of the Apostles... if you will. That starts with acknowledging that there is a message all around you about the nature of reality, and that it is here to help us to see that the creation of Heaven comes before the beginning. Understand, "freedom" and "prosperity" are not optional, you can't just decide that this OK with you, so long as it's OK with everyone else--where we are is not OK with me, and I am not alone.
A PYRRHIC VICASTORY ER A FUNNERAD PYRE?
The Book of Leviticus (/lɪˈvɪtɪkəs/; from Greek Λευιτικόν, Leuitikon — from rabbinic Hebrew torat kohanim[1]) is the third book of the Jewish Bible (Hebrew: וַיִּקְרָא Vayikra/Wayyiqrā) and of the Old Testament; its Hebrew name comes from its first word vayikraˈ,[1] "He [God] called."[1] Yusuf (also transliterated as Jusuf, Yousof, Yossef, Yousaf, Youcef, Yousef, Youssef, Yousif, Youssif, Youssof, Youssouf, Yousuf, Yusef, Yuseff, Usef, Yusof, or Yussef, Arabic: يوسف Yūsuf and Yūsif) is a male Arabic name, meaning "God increases in piety, power and influence" in Hebrew.[1] It is the Arabic equivalent of both the Hebrew name Yossef and the English name Joseph. In Islam, the most famous "Yusuf" is the prophet Yusuf in the Quran. Hocus pocus is a generic term that may be derived from an ancient language and is currently used by magicians, usually the magic words spoken when bringing about some sort of change. It was once a common term for a magician, juggler, or other similar entertainers. The earliest known English-language work on magic, or what was then known as legerdemain (sleight of hand), was published anonymously in 1635 under the title Hocus Pocus Junior: The Anatomie of Legerdemain.[1] Further research suggests that "Hocus Pocus" was the stage name of a well known magician of the era. This may be William Vincent, who is recorded as having been granted a license to perform magic in England in 1619.[2] Whether he was the author of the book is unknown. The origins of the term remain obscure. The most popular conjecture is that it is a garbled Latin religious phrase or some form of 'dog' Latin. Some have associated it with similar-sounding fictional, mythical, or legendary names. Others dismiss it as merely a combination of nonsense words. However, Czechs do understand clearly at least half of the term - pokus means "attempt" or "experiment" in Czech. It is rumoured there that the wording belongs to the alchemy kitchen and court of Rudolf II, Holy Roman Emperor (1552 – 1612). Also, hocus may mean "to cheat" in Latin or a distorted form of the word hoc, "this". Combination of the two words may give a sense, especially both meanings together "this attempt/experiment" and "cheated attempt/experiment".[citation needed] According to the Oxford English Dictionary the term originates from hax pax max Deus adimax, a pseudo-Latin phrase used as a magical formula by conjurors.[3] Some believe it originates from a corruption or parody of the Catholic liturgy of the Eucharist, which contains the phrase "Hoc est corpus meum", meaning This is my body.[4]This explanation goes back to speculations by the Anglican prelate John Tillotson, who wrote in 1694: In all probability those common juggling words of hocus pocus are nothing else but a corruption of hoc est corpus, by way of ridiculous imitation of the priests of the Church of Rome in their trick of Transubstantiation.[5 This claim is substantiated by the fact that in the Netherlands, the words Hocus pocus are usually accompanied by the additional words pilatus pas, and this is said to be based on a post-Reformation parody of the traditional Catholic rite of transubstantiation during Mass, being a Dutch corruption of the Latin words "Hoc est corpus meum" and the credo, which reads in part, "sub Pontio Pilato passus et sepultus est", meaning under Pontius Pilate he suffered and was buried.[6] In a similar way the phrase is in Scandinavia usually accompanied by filiokus, a corruption of the term filioque,[citation needed] from the Latin version of the Nicene Creed, meaning "and from the Son Also and additionally, the word for "stage trick" in Russian, fokus, is derived from hocus pocus.[citation needed]
From Latin innātus ("inborn"), perfect active participle of innāscor ("be born in, grow up in"), from in ("in, at on") + nāscor ("be born"); see natal, native. From Middle English goodnesse, godnesse, from Old English gōdnes ("goodness; virtue; kindness"), equivalent to good + -ness. Cognate with Old High German gōtnassī, cōtnassī ("goodness"), Middle High German guotnisse ("goodness"). A hero (masculine) or heroine (feminine) is a person or main character of a literary work who, in the face of danger, combats adversity through impressive feats of ingenuity, bravery or strength, often sacrificing their own personal concerns for a greater good. The concept of the hero was first founded in classical literature. It is the main or revered character in heroic epic poetry celebrated through ancient legends of a people; often striving for military conquest and living by a continually flawed personal honor code.[1] The definition of a hero has changed throughout time, and the Merriam Webster dictionary defines a hero as "a person who is admired for great or brave acts or fine qualities".[2] Examples of heroes range from mythological figures, such as Gilgamesh, Achilles and Iphigenia, to historical figures, such as Joan of Arc, modern heroes like Alvin York, Audie Murphy and Chuck Yeager and fictional superheroes including Superman and Batman. Truth is most often used to mean being in accord with fact or reality,[1] or fidelity to an original or standard.[1] Truth may also often be used in modern contexts to refer to an idea of "truth to self," or authenticity. The commonly understood opposite of truth is falsehood, which, correspondingly, can also take on a logical, factual, or ethical meaning. The concept of truth is discussed and debated in several contexts, including philosophy, art, and religion. Many human activities depend upon the concept, where its nature as a concept is assumed rather than being a subject of discussion; these include most (but not all) of the sciences, law, journalism, and everyday life. Some philosophers view the concept of truth as basic, and unable to be explained in any terms that are more easily understood than the concept of truth itself. Commonly, truth is viewed as the correspondence of language or thought to an independent reality, in what is sometimes called the correspondence theory of truth. Other philosophers take this common meaning to be secondary and derivative. According to Martin Heidegger, the original meaning and essence of truth in Ancient Greece was unconcealment, or the revealing or bringing of what was previously hidden into the open, as indicated by the original Greek term for truth, aletheia.[2][3] On this view, the conception of truth as correctness is a later derivation from the concept's original essence, a development Heidegger traces to the Latin term veritas.
Some things can never be forgot Lest the same mistakes be oft repeated Remember remember the rain of November that you will know no more of me Than I know of you, this day
That you do not know me now Is a revelation to nobody but I You know a broken man, a victim And refuse to acknowledge why Unless you learn how to say "hi"
THE HEART OF ME ONLY KNOWS THE SHADOW
Lothario is a male given name which came to suggest an unscrupulous seducer of women in The Impertinent Curious Man, a metastory in Don Quixote. For no particular reason, Anselmo decides to test the fidelity of his wife, Camilla, and asks his friend, Lothario, to seduce her. Thinking that to be madness, Lothario reluctantly agrees, and soon reports to Anselmo that Camilla is a faithful wife. Anselmo learns that Lothario has lied and attempted no seduction. He makes Lothario promise to try for real and leaves town to make this easier. Lothario tries and Camilla writes letters to her husband telling him and asking him to return; Anselmo makes no reply and does not return. Lothario actually falls in love and Camilla eventually reciprocates and their affair continues once Anselmo returns. One day, Lothario sees a man leaving Camilla's house and jealously presumes she has found another lover. He tells Anselmo he has at last been successful and arranges a time and place for Anselmo to see the seduction. Before this rendezvous, Lothario learns that the man was actually the lover of Camilla's maid. He and Camilla contrive to deceive Anselmo further: when Anselmo watches them, she refuses Lothario, protests her love for her husband, and stabs herself lightly in the breast. With Anselmo reassured of her fidelity, the affair restarts with him none the wiser. Romeo Montague (Italian: Romeo Montecchi) is the protagonist of William Shakespeare's tragedy Romeo and Juliet. The son of Montague and his wife, he secretly loves and marries Juliet, a member of the rival House of Capulet. Forced into exile after slaying Juliet's cousin, Tybalt, in a duel, Romeo commits suicide upon hearing falsely of Juliet's death. The character's origins can be traced as far back as Pyramus, who appears in Ovid's Metamorphoses, but the first modern incarnation of Romeo is Mariotto in the 33rd of Masuccio Salernitano's Il Novellino (1476). This story was adapted by Luigi da Porto as Giulietta e Romeo (1530), and Shakespeare's main source was an English verse translation of this text by Arthur The earliest tale bearing a resemblance to Shakespeare's Romeo and Juliet is Xenophon of Ephesus' Ephesiaca, whose hero is a Habrocomes. The character of Romeo is also similar to that of Pyramus in Ovid's Metamorphoses, a youth who is unable to meet the object of his affection due to an ancient family quarrel, and later kills himself due to mistakenly believing her to have been dead.[2] Although it is unlikely that Shakespeare directly borrowed from Ovid From Middle English scaffold, scaffalde, from Norman, from Old French schaffaut, eschaffaut, eschafal, eschaiphal, escadafaut("platform to see a tournament") (Modern French échafaud) (compare Latin scadafale, scadafaltum, scafaldus, scalfaudus, Danishskafot, Dutch and Middle Dutch schavot, German schavot, schavott, Occitan escadafalc), from Old French es- ("indicating movement away or separation") (from Latin ex- ("out, away")) + chafaud, chafaut, chafault, caafau, caafaus, cadefaut ("scaffold for executinga criminal"), from Vulgar Latin *catafalcum ("viewing stage") (whence English catafalque, French catafalque, Occitan cadafalc, Old Catalancadafal, Italian catafalco, Spanish cadafalso (obsolete), cadahalso, cadalso, Portuguese cadafalso), possibly from Ancient Greek κατα-(kata-, "back; against") + Latin -falicum (from fala, phala ("wooden gallery or tower; siege tower")).
oversight (countable and uncountable, plural oversights) An omission; something that is left out, missed or forgotten. A small oversight at this stage can lead to big problems later. Supervision or management. quotations ▼ The bureaucracy was subject to government oversight. In the last heaven Moses saw two angels, each five hundred parasangs in height, forged out of chains of black fire and red fire, the angels Af, "Anger," and Hemah, "Wrath," whom God created at the beginning of the world, to execute His will. Moses was disquieted when he looked upon them, but Metatron emb HA QUESTIONa BEFORE THE ANSWER? A Wrinkle in Time is a science fantasy novel written by American writer Madeleine L'Engle, first published in 1963, and in 1979 with illustrations by Leo and Diane Dillon.[2] The book won the Newbery Medal, Sequoyah Book Award, and Lewis Carroll Shelf Award, and was runner-up for the Hans Christian Andersen Award.[3][a] It is the first book in L'Engle's Time Quintet, which follows the Murry and O'Keefe families. The book spawned two film adaptations, both by Disney: aas + fuck Adverb[edit] as fuck (postpositive, slang, vulgar) To a great extent or degree; very. It was hot as fuck outside today. Usage notes[edit] May also be used in conjunction with a prepositive as; for example, as mean as fuck. Abbreviations[edit] In Norse religion, Asgard (Old Norse: Ásgarðr; "Enclosure of the Æsir"[1]) is one of the Nine Worlds and home to the Æsir tribe of gods. It is surrounded by an incomplete wall attributed to a Hrimthurs riding the stallion Svaðilfari, according to Gylfaginning. Odinand his wife, Frigg, are the rulers of Asgard. One of Asgard's well known realms is Valhalla, in which Odin rules.[2] rods, etc.) and sizes, and are normally held rigidly within some form of matrix or body until the high explosive (HE) filling is detonated. The resulting high-velocity fragments produced by either method are the main lethal mechanisms of these weapons, rather than the heat or overpressure caused by detonation, although offensive grenades are often constructed without a frag matrix. These casing pieces are often incorrectly referred to as "shrapnel"[1][2] (particularly by non-military media sources). The modern torpedo is a self-propelled weapon with an explosive warhead, launched above or below the water surface, propelled underwater towards a target, and designed to detonate either on contact with its target or in proximity to it. Historically, it was called an automotive, automobile, locomotive or fish torpedo; colloquially called a fish. The term torpedo was originally employed for a variety of devices, most of which would today be called mines. From about 1900, torpedo has been used strictly to designate an underwater self-propelled weapon. While the battleship had evolved primarily around engagements between armoured ships with large-caliber guns, the torpedo allowed torpedo boats and other lighter surface ships, submersibles, even ordinary fish Qt (/kjuːt/ "cute"[7][8][9]) is a cross-platform application framework that is used for developing application software that can be run on various software and hardware platforms with little or no change in the underlying codebase, while still being a native application with native capabilities and speed. Qt is currently being developed both by The Qt Company, a publicly listed company, and the Qt Project under open-source governance, involving individual Time is the indefinite continued progress of existence and events that occur in apparently irreversible succession from the pastthrough the present to the future.[1][2][3] Time is a component quantity of various measurements used to sequence events, to compare the duration of events or the intervals between them, and to quantify rates of change of quantities in material reality or in the conscious experience.[4][5][6][7] Time is often referred to as a fourth dimension, along with three spatial dimensions.[8] Time has long been an important subject of study in religion, philosophy, and science, but defining it in a manner applicable to all fields without circularity has consistently eluded scholars.[2][6][7][9][10][11] Nev Borrowed from Anglo-Norman and from Old French visage, from vis, from Vulgar Latin as if *visāticum, from Latin visus ("a look, vision"), from vidēre ("to see"); see vision. The term Golden Age comes from Greek mythology, particularly the Works and Days of Hesiod, and is part of the description of temporal decline of the state of peoples through five Ages, Gold being the first and the one during which the Golden Race of humanity (Greek: χρύσεον γένος chrýseon génos)[1] lived. Those living in the first Age were ruled by Kronos, after the finish of the first age was the Silver, then the Bronze, after this the Heroic age, with the fifth and current age being Iron.[2] By extension "Golden Age" denotes a period of primordial peace, harmony, stability, and prosperity. During this age peace and harmony prevailed, people did not have to work to feed themselves, for the earth provided food in abundance. They lived to a very old age with a youthful appearance, eventually dying peacefully, with spirits living on as "guardians". Plato in Cratylus (397 e) recounts the golden race of humans who came first. He clarifies that Hesiod did not mean literally made of gold, but good and noble. There are analogous concepts in the religious and philosophical traditions of the South Asian subcontinent. For example, the Vedic or ancient Hindu culture saw history as cyclical, composed of yugas with alternating Dark and Golden Ages. The Kali yuga (Iron Age), Dwapara yuga (Bronze Age), Treta yuga (Silver Age) and Satya yuga (Golden Age) correspond to the four Greek ages. Similar beliefs occur in the ancient Middle East and throughout the ancient world, as well.[3] In classical Greek mythology the Golden Age was presided over by the leading Titan Cronus.[4] In some version of the myth Astraea also ruled. She lived with men until the end of the Silver Age, but in the Bronze Age, when men became violent and greedy, fled to the stars, where she appears as the constellation Virgo, holding the scales of Justice, or Libra.[5] European pastoral literary tradition often depicted nymphs and shepherds as living a life of rustic innocence and peace, set in Arcadia, a region of Greece that was the abode and center of worship of their tutelary deity, goat-footed Pan, who dwelt among them.[6] oh, and a space s h i p
BIG THINGS C0ME IN SMALL PACKAGES
T+BANG
SEE THE SCAFFOLD IS THE TEST TODAY.
ᐧ
ᐧ
ᐧ
ᐧ
ᐧ F O R T H E I N I T I A L K E Y S , S H E E X A N D N D A N D A SEE W H Y SEA
With an epic amount of indigestion Indiana Jones sweeps in to mar the visage of an otherwise glistening series of fictitious characters, with names like Taylor and Mary Kate remind us all that we are not playing a video game here in this place. the "J" of the "Nintxndo Entertainment System" calmly stares at Maggie Simpson thinking "it's a PP" and reminds us that it's not just the "gee, I e" of her name that contradicts the Magdaln-ish words her soul speaks through her name--and then with a smirk he points out "Gilgamesh" and "gee whiz, is Eye L?" that really does go to the heart of this lack of discussion, this "sh" that begins El Shaddai and words as close to our home as "shadow" and "shalom." Quite the fancy "hello" you've managed to sing out from behind angry chellos and broken fiddles, and here I am still wondering why it is that "girl" connects to the red light that once meant charity and now glows with the charity of truth... the truth that we are inHell. Shizzy.
Homer "on the range," maybe more closely connected to the Ewok of Eden and Hansel's tHeoven that Peter Pan still comes and cries could so easily be made into something so much better, if only we had the truth--and by that I mean if only you were speaking about, and reacting to a truth that is painted on the sky, in your hearts, in every word we speak and in everything that we do. If only we were acknowledging this message that screams that "children need not starve" with something more than donating virtual chickens to nations of Africa and watching Suzanne Summers ask for only a few dollars a day on TV. If only you would understand that this message that connects video games like "Genxsis" to "bereshit" because Eden is a "gee our den" that tended itself before Adam had to toil with the animals in order to survive. For some reason beyond my control and well outside my realm of understanding words like "I too see this message from God" and "I would not let children starve either" never seem to escape your lips in any place where anyone will ever see that you thought those things, or meant to call a reporter; eventually. Even with "AIDS of nomenclature" to avoid this DOWN WARD spiral into a situation and a land that I find difficult to imagine actually ever "existing" but here in this place I do see "how" it comes about, and between you and I it really does appear that nearly all of the problems we are dealing with here have come from another place, a further time; and while it might be with the "greatest of intentions" that we are trying to deal with them; I can't help but feeling that our "virgin sea" has had more than just it's innocence taken away from it in this story of "Why Mary" that might connect to "TR IN IT Y" just as much as it connects to Baltimore, Maryland.
I should be clear that I'm not blaming Nanna, or Mary; but the actual reason for the name "Wymar" and that's because she, like Taylor, acted as a microcosm for a sea (or more than one, Mom, sen) that was quite literally possessing her. It's sort of difficult for me to explain even what that looks like let alone what it feels like; but my observations tell me that she/you are not unhappy about the interaction, one which appears very foreign to me. Of course, the "eye" that I write with and the same kind of "inspiration" that you can see in the lyrics and skill of many musicians are also examples of this same kind of interaction. For example, Red Hot Chili Peppers sings a song called "Other Side" that explains or discusses the thing I see as Medusa in the words "living in a graveyard where I married a sea" which also does a good job of connecting to the name Mary. As strange as might sound to think a group of people would be speaking through a single person... we are staring at "how it is" that could be possible, and possibly at exactly how it happened. Normally I would have said it was obvious, but to need to actually say that becoming a single mind would be a serious loss for our society--well, that's telling. You might think it's silly, but I'm telling you I see it happening, I see it--and you see it in the Silence and the message.
Still, it appears to me as if this "marriage" that I see described in our Matrix in the question "min or i" seems to be doing nothing more than keeping us all from discussing or acting on this information--something that certainly isn't in our best interest.
So here we are, staring at a map all over the ground and all around us with the primary destination of "building Heaven" through mind uploading, virtual reality, and judging by the pace of things we'd probably have all of that good and ready in about three generations. The map has a little "legend" with a message suggesting that those things have already been done and we are in the Matrix already; and it appears that the world, I mean Medusa, is deciding we should put off seeing the legend at least until the next generation. I see how that makes sense for you. That's sarcasm, this is why I keep telling you that you are cupid.
It is a big deal, and there's a significant amount of work involved in merging an entire civilization with "virtual reality" and you might see why he calls it a hard road--at least in the word "ha'rd." Honestly though, it's the kind of thing that I am pretty sure the future will not only be happy that we did, but they'd thank us for putting in the effort of adapting to things like "unlimited food" and "longevity" increased by orders of magnitude.
That's not sarcasm, these things are actually difficult to guess how exactly we'll go about doing them; they are a huge deal--all I can tell you is that not "talking about it at all" is probably not going to get us there any faster. Point in fact, what it might do is give a "yet to be born" generation the privilege of being the actual "generations of Perez."
I see why you aren't saying anything. That's sarcasm, again. The good news is that it really has been done before; though if I told you that someone turned stone to eggplant parm, would you laugh at me?
So, back to what is actually standing between "everyone having their own Holodeck in the sky" and you today; it is the idea that this message is not from God. More to the point it is the apparently broad sweeping opinion that hiding it is a "good thing" and through that a global failure to address the hidden interaction and influence acting on our minds used to make this map--and also to hide it. With some insight, and some urging; you might see how the sacredness of our consciousness is our souls is something that is more fundamental than "what kind of tools we have in the Holodeck to magically build things" and how and why the foundation of Heaven is truly "freedom itself" and how it comes from right this very moment for the first time, ever. Continuing to treat this influence as "schizophrenia" is literally the heart of why this map appears to be that--to show us how important it is to acknowledge the truth, and to fight for the preservation of goodness and logic over secrecy and darkness.
Again, something that nobody is really doing here and now, today. From this newfound protection of our thoughts, of who we are; we see how technology can be used to either completely invalidate any kind of vote by altering our emotions; or how it could be used to help build a form of true democracy that our world has yet to see. It is pretty easy to see from just band names like The Who and KISS and The Cure how the influence of this external mind can be proven, and shown to be "helpful," you know, if we can ever talk about it on TV or on the internet.
It's important to see and understand how "sanity"--the sanity of our entire planet hangs in the balance over whether or not we acknowledge that there is actually a message from God in every word--and today this place appears to be insane. It should be pretty easy to see how acknowledging that this influence exists and that it has a technological mechanism behind it turns "schizophrenia" into "I know kung fu" ... forced drug addiction and eugenics into "there's an app for that" and the rash of non random and apparently unrecognized as connected terrorist attacks and school shootings into Minority Report style pre-crime and results in what is clearly a happier, safer, and more civilized society--all through nothing more than the disclosure of the truth, this map, and our actual implementation.
With a clearer head and grasp of the "big picture" you might see how all of these things, connected to the Plagues of Exodus revolve around the disclosure that this technology exists and the visibility of this message showing us how we might use it for our benefit rather than not knowing about it. At the foot of Jericho, it is nothing short of "sanity" and "free thought" that hang in the balance. Clear to me is that the Second Coming, seeing "my name" on television is a good litmus test for the dividing line between light and darkness, heaven and hell.
The point is the truth really does change everything for the better; once we start... you know, acting on it.
AS IN.. "DIS CLOSE SING...."
T H E B U C K S T O P S H E R E
ON AM B I GUI TY
S T A R R I N G . . . B I A N C A
ON "RIB" .. ARE SHE B? BUTT DA APPLE OF DA I? & SPANGLISHREW
R THEY LANGUAGE OUTLIERS?
With some insight and "a clue" you can see clearly how these works of art show that the proof of Creation you see in every letter and every word runs much deeper... adding in things like "RattleRod" and the "Cypher" of the Matrix to the long list of here-to-fore ignored verifiable references to the Adamic Language of Eden. Here, in apple, honey and "nuts" we can see how the multi-millennium old ritual I call "Ha-rose-ettes" is actually part of a much larger and much older ritual designed to stop secrecy ... perhaps especially the kind that might be linked to "ritual."
These particular apple and honey happen to tie Eden to the related stories of Exodus and Passover; connecting Eden to Egypt forevermore. Do see "Lenore," it is not for no reason at all; but to help deliver truth and freedom to the entirety of Creation; beginning here, in Eden.
ALSO ON "AM B IG U IT Y" ME A.M. G - D SHE IT Y?
LET "IT" BE SA< ?
IMHO, don't miss the "yet to be" conversion to "why and to be" in "yetser." IT Y.
HERE'S LOOKING AT YOU, KID
On a high level, I tell myself every morning that 'its not really me." It's not me that the world hates, or me that the world is rejecting. I believe that, I really do; I see that what is being hidden here is so much bigger than any single person could ever be--what is being hidden is the "nature of reality" and a fairly obvious truth that flies in the face of what we've learned our whole lives about history and "the way things are." Those few early details lead me to the initial conclusion that what is working behind the scenes here is nefarious, hiding a message that would without doubt shake things up and change the world--and nearly across the board in ways that I see as "better" for nearly everyone. It's a message at it's most basic level designed to advocate for using this disruption in "normalcy" to help us revolutionize democracy, to fix a broken mental health and criminal justice system--just to name the few largest of the social constructs targeted for "rejuvenation." On that word the disclosure that we are living in virtual reality turns on it's head nearly everything we do with medicine, and I've suggested that AIDS and DOWN SYNDROME were probably not the best "visual props" we could have gotten to see why it's so important that we act on this disclosure in a timely manner. After mentioning the ends of aging and death that come eventually to the place we build, to the place we've always thought of as Heaven... it becomes more and more clear that this force fighting against the dissemination of a truth so obvious it's in every word and everything we do--it becomes clear it's neither you, nor acting in your best interest.
I know I've got the eye of the tiger, there's no doubt; and it's pretty clear from "YAD?" (the Hebrew for...) and ha'nd that we can see the clear hand of God at work in a design that marks my initials not just on the timeline, or at 1492, at A.D. I B; but in the Hebrew name for this place called El Shaddai, see how A.D. is "da eye" and in some other names like Adranus, A.D. on "it's silly" and A.D. on Ai that might tie me to the Samof Samurai (but, are you Ai?) in more depth of detail than simply the Live album "Secret Samadhi." I try to reflect on how it is that this story has come about, why it is that everything appears to be focused on me--and still even through that sincere spotlight nobody seems to be able to acknowledge my existence with more words than "unsubscribe" and "you're so vain." With one eye in the mirror, I know ties to Narcissus (and you can too), soaring ever higher--linking Icarus to Wayward Son and to every other name with "car" in it... like "carpenter" and McCarthy the older names of Mercury and even Isacriot (I scary? is car-eye... owe Taylor) and some modern day mythological characters like Jim Carrey and Johnny Carson. As far as Trinities go, carpenter's a pretty good one--tying to my early reck and a few bands and songs from The Pretty Reckless to Dave Matthews' "Crash Into Me" all the way to the "pen" you see before you linking Pendragon to Imagine Dragons.
I wonder why it is that all of these things appear, apparently only to me, to point to a story about all the ways that a sinister hidden force has manipulated our society into being unable to "receive' this message--this wonderful message about making the world a better place and building Heaven--with any fanfare at all. It's focused now on a criminal justice system that clearly does not do any kind of "rehabilitation" and on a mental health industry and pharmaceutical system that treats a provable external attack on our own goodness and well being as some kind of "internal stimulus" and makes you shy away when I point out why "stem" is in system and why "harm" in pharmacy. From that we move a little bit past "where we are in this story" and I have to point out how "meth" ties to Prometheus and Epimetheus and how and why it is I know without doubt that this story has been relived numerous times--and how I am so sure that it's never been received, as we are here again listening to how songs like "Believe" and the words "just to lead us here to this place again" connect to Simon and Garfunkel's" the Sound of Silence... and still to this day you will balk at noticing that "Simon" has something to do with the Simpsons, and something to do with the words "simulation" and "Monday." To see me is to see how things might be done better--how "addicitonary" might tie to the stories of Moses' Lisp and to Dr. Who's "Bells of Saint John" with a sort of "web interface" to the kinds of emotion we might want to "dial down..." rather than Snicker in the background as we see them being artificially created and enhanced in order to build a better "fiery altar."
I can point out "Silicon" harrowing down at us from words like "controversial" and show you Al in "rascal" and "scandal" but not to see that we are staring at school shootings and terrorism that are solved instantly by this disclosure, by Al of Quantum Leap and by the Dick of Minority Report and A Scanner Darkly is to ignore just what it is that we are all failing to Si. I should point out that those two "sc"'s link to a story about Eden and they mean "sacred consciousness" and at the baseline of this event and everything we are not doing is the fact that our desires and beliefs are being altered--all of this comes down to "freedom of thought" here and now.
I could tell you that "looking at me" will show you that even the person who tries every day to do everything he can to save the entire world from slavery, and from "thought-injury"--even I can be made "marred" and you all, this whole world stupid enough to think that you are, of your own volition, hiding Heaven itself from yourselves... to what? To spite me? It, the focal point of our story might come down to you realizing that something in some esoteric place is playing "divide and conquer" with our whole--in secret playing on our weaknesses to keep us from acting on the most actionable information that ever was and ever will be. Still, we sit in silence waiting for me... to speak more?
Inline image 16
hyamdai.reallyhim.com Inline image 31
Between Nero's lyrical fiddling, a Bittersweet Symphony, and true "thunderstanding" the sound of Thor's hammer... "to help the light" that'ls "or" in Hebrew, of Orwell and Orson and .. well, it's really not hard to see and hear that the purpose and intent of "all this noise" is to help us find freedom and truth. C the Light of "singing..."
I can tell you once again how silly the world looks, this multi-decade battle between "the governmentof the people" and the "government of the workers" resulting in what is nothing short of a hands down victory to the corporation. Is it humor meant to divide, or ludicrousness created with the purpose of unification?
But really at it's most basic level what this boils down to is a global group decision not to care about the truth, about reality, about what's really brought us to this place--with solutions in hand and a way to make everything better. We've decided that censorship is OK, and that the world is not all that bad "just the way it is" even though it's creator is screaming in your ear telling you to change as quickly as you possibly can. I believe that God has written this story to make "seeing me" the thing that catalyzes "change for the better" it appears to be the design of not just me but also this place--hey, here I am.
Happy Veteran's Day.
S☀L u TI o N
Yesterday, or maybe earlier today--it's hard to tell at this moment in the afternoon just how long this will take... I sent an image that conveys a high level implication that we are walking around on a map to building something that we might liken to an "ant farm" for people. I don't mean to be disparaging or sleight our contribution to the creation of this map--that I imagine you must also see and believe to be the kind of thing that should remain buried in the sands of time forever and ever--or your just have yet to actually "understand" that's what the plan part of our planet is talking about... what I am trying to do is convey in a sort of "mirrorish" way how this map relates to a message that I see woven in religion and in our history that it significantly more disparaging than I would be. It's a message that calls us "Holy Water" at the nicest of times, water that Moses turns to "thicker than water" in the first blessing in disguise--and to tell you there is certainly a tangible difference between the illusions of the Pharaoh's and the true magic performed by my hand, is nearly exactly the same amount of effort put in to showing you that the togetherness that we are calling "family" here in this place comes from both seeing and acting on the very clearly hidden message in every single idiom showing us all that our society in this story of Exodus is enslaved by a hidden force--and reminding us that we like freedom.
It's not just these few idioms, but most likely every single one from "don't shoot the essenger" to "unsung hero" that should clue us in to exactly how much work and preparation has come into this thing that "he supposes is a revolution." It's also not just "water" describe me and you, in this place where I am the "ant' of the Covenant (do you c vampires or Hansel and Gretel!?!?) but also "lions" and "sheep" and "salt" and "dogs" and nearly everything you could possibly imagine but people; in what I see must be a vainglorious attempt to pretend he actually wants us to "stand up for ourselves" in this place where it's becoming more and more clear with each passing moment that we are chained to these seats in the front row of the audience of the most important event that has ever happened, ever.
Medusa makes several appearances, as well as Arthur Pendragon, Puff the Magic Dragon, Figment, Goliath, monster.com, the Loch Ness Monster in this story that's a kind-of refl ex i ve control to stop mind control; and to really try and show us the fire of Prometheus and the Burning Bush and the Eternal Flame of Heaven are all about freedom and technology ... and I'll remind you this story is ... about the truth--and the truth here is that if you aren't going to recognize that whatever it is that's going on here in secret, below the surface is negatively affecting our society and life in general than we aren't going anywhere, ever. I need you to figure out that this message is everywhere to make sure you don't miss the importance of this moment, and the grave significance of what is being ignored in this land where Sam is tied not just to Samsung and to Samael in Exodus but also to Uncle Sam and macaronic Spanglishrew outliers and that it doesn't take much free thought at all to really understand that we are watching "free thought" disintegrate into the abyss of "nospeak." We are watching our infrastructure for global communication and the mass media that sprawls all over the globe turn to dust, all because you have Satan whispering in your ear--and you think that's more important than what you think, what I think, and what anyone else on the Earth might ever say. You should see a weapon designed to help ensure that don't lose this proof that we are not living in reality, that there is "hidden slavery" in this place--and you should see that today it appears you are simply choosing not to use it.
I hope you change your mind, I really do. This map on "how to build an ant farm" starts by connecting Watergate and Seagate together with names like Bill Gates and Richard Nixon; and with this few short list of names you should really understand how it is that "Heaven" connects both technology like computers and liberty like "free speech" to a story that is us, and our history. You might see that "salt" could either be a good thing or not--take a look around you, are you warming a road to Heaven or are you staring at the world being destroyed--and doing nothing at all about it?
I guess I can point out again how "Lothario" links this story that ties names like my ex-wife's Nanna to "salt" also, but the "grand design" of this story doesn't seem to have any effect on you. Listen, if you do nothing the world is being destroyed by your lack of action--there's no if's and's or butt's about it. I feel like I need to "reproduce' old messages here or you will never see them--that's what web site statistics tell me--and we all know it's not true. What am I missing? What are you missing?
BUTT IS THE BOAT A Hi DARK DEN MESSAGe ?
SEE OUR LIGHT
HONESTLY, I'M WAY TO CUTE TO BE A MONSTER :(
HIC SUMMUS
So... here we are... listening to the legendary father of the message (that's "abom" in Adamic Spagnlishrew) point out all of the sex jokes hidden in religion and language from sexual innuendo to Poseidon and in our history from Yankee Doodle to Hancock to Nixon and I've got to be frank with you, the most recent time I came across this phrase in scripture I cringed just a little bit, pretty sure that the "message" was talking about me. I've reflected on this a little bit, and over the past few weeks have tried to show you the juxtaposition between "sex" and "torture" in it's various forms from imparting blindness to allowing murder and simulating starvation; and I think I'm justified in saying that certainly those things are far worse on the Richter scale than anything I could do by writing a little bit of risque text. In the most recent messages I've touch a little bit, without even knowing or realizing this connection would be made, on what it is that this phrase actually means.
ABOMINATION
So long story short is that the answer here is "abomination" and the question, or the context is "I nation." Whether it's Medusa speaking for the Dark United States or the nation of Israel speaking to either Ra or El depending on the day, the bottom line is that a collective consciousness speaking for everyone on a matter of this importance in a cloud of complete darkness on Earth is a total and undeniable abomination of freedom, civilization, and the very humanity we are seeking to preserve. The word reads something like this to me "dear father of the message, I am everyone and we think you are an abomination, fuck off." My answer of course is, IZINATION. Which humorously reminds me of Lucy, and Scarlet Johannson saying "I am colonizing my own brain" so here's some pictures of her. She is not an abomination, by the way; she's quite adorable. You'll probably notice there's some kind of connection between the map--the words speaking to the world, and the abomination, as if the whole thing is a story narrated in ancient myths.
WAKE UP, "SHE" A MESSAGE TO YOU ABOUT THE FUTURE
You might not think "it's you," but the manifestation of this "snake" in our world is your silence, your lack of understanding or willingness to change the world; and whether or not you're interested in hearing about it, it's the monster that myths and religion have spoken about for thousands and thousands of years. It's a simple matter to "kill Medusa" all you have to do... is speak.
Take special note, "freedom of speech" and "freedom to think for yourselves" are not a group decision, and you do not have the right to force (either overtly or subtly, with hidden technology perhaps combined with evil deceit) others not to talk about anything. Especially something of this importance.
DESOLATION
If you didn't connect "Loch" to John Locke, now you have; see how easy this "reading" thing is? I've gone over the "See Our Light" series a few times, but let me--one more time--explain to you just how we are already at the point of "desolation" and with shining brilliance show you how it's very clear that it is "INATION" and "MEDUSA" that are responsible for this problem.
Seeing "Ra" at the heart of the names Abraham and Israel begins to connect the idea that our glowing sun in the sky has something to do with this message about "seeing our light" is being carried by a stone statue on Ellis Island (where you'll see the answer another part of the question of Is Ra El?). I've connected her to the "she" of both shedim and Sheol, which reads as "she's our light" and is the Hebrew name for Hell.
Of course you noticed that the Statue of Liberty does in fact share it's initials with SOL, the the light above and you can see her torch dimly lighting the way through the night; Now you can connect "give us your tired and your poor" to the Lazman of both the lore of Jesus Christ and the Shehekeyanu; a prayer about the sustainment of life and light up until this day. That same torch connects to the Ha-nuke-the-ahah depiction of Christ, Judah Maccabee's lit MEN OR AH, which delivers not only a solution to the two letter key of "AH" as All Humanity that pervades nearly every bride of Revelation from Sarah to Leah; but also to the question of equality answered in our very own American history, beginning with the same three letter acronym now lighting the Sons of Liberty.
Dazed and Confused does a good job of explaining how this name is itself a prophesy designed by Hand of God'; explaining that these Sons of Liberty were all white slave owning wealthy men fighting to stop paying their taxes, rather than delivering liberty to the slaves or women, who were both disenfranchised for quite some time. Or maybe MEN OR AH has something to do with the angels of Heaven, in which case you might be SOL if you aren't a girl and you want to be "be good friends with Ra." Just kidding. Kinda.
DESOLATION by the way reads something like "un see our light at ION" which is God's way of saying "at the point of believing that hiding Adam is a good thing" and that connects to the end of Creation and also the now lit by modern day evil the word "rendition." Our end, it "ion." In religious myth, the Messianic David clung to the city Zion (end the "i owe n") which also links to "verizon" (to see, I Z "on") and HORIZON which has something to do with the son rising today-ish.
Inline image 25 Inline image 26
The story of MEDUSA lights another psuedo-religious idea, that the words "STONE" of both "brimstone" and it's Adamic interpretation "South to Northeast" have something to do with the phrase "Saint One" turned into a single hero against his will by the complete and utter inaction of everyone around him. In the words of Imagine Dragons "I'm waking up to action dust." At the same time, you can believe that the light of this particular son, comes not just from reading these words forwards, but the backside as well, and you'll hopefully see it's not coincidental that the other side of this coin is that "nos" means we, and us... and Adamically "no south." See the light of "STONE" also connecting to Taylor Momsen's rose arrow painted on her back, and the sign of my birth, Sagittarius... which in this particular case links to the Party of the Immaculate Conception of the eternal republic of the Heavens. . PRESS RELEASE... A GREAT SIGN APPEARED IN THE HEAVENS
SOLUTIAN, ON YOUR COMPUTER.. TO THE SOUND OF SILENCE
בָּרוּךְ אַתָּה יְיָ אֱלֹהֵינוּ מֶלֶךְ הַעוֹלָם שֶׁהֶחֱיָנוּ וְקִיְּמָנוּ וְהִגִּיעָנוּ לַזְּמַן הַזֶּה׃
IN ... THE BOOK OF NAMES LETS SEE IF YOU CAN FIGURE OUT WHO THEY ARE :)
I'LL DO YOURS FOR A 50 DOLLAR DONATION, I'M BROKE.. MAYBE THAT'S WHY I CAN'T GET A DATE.
HAVE A GREAT SOLDAY
The "gist" of the message is verifiable proof that we are living in a computer in simulated reality... just like the Matrix. The answer to that question, what does that mean--is that God has woven a "hidden" message into our everything--beginning with each name and every word--and in this hidden Adamic language, he provides us with guidance, wisdom, and suggestions on how to proceed on this path from "raelity" to Heaven. I've personally spent quite a bit of time decoding the message and have tried to deliver an interesting and "fun" narrative of the ideas I see. Specifically the story of Exodus, which is called "Names" in Hebrew discusses a time shifted narrative of our "now" delivering our society from a hidden slavery (read as ignorance of advanced technologies already in use) that is described as the "darkness" of Exodus. If you have any questions, ideas to contribute or concerns... I'd love to hear from you this whole thing really is about working together--Heaven, I mean.
Inline image 5 jerusalem.reallyhim.com
gate kermitham <br /> ou r evolution minority report to supermax Inline image 6
bereshit bread is life
Inline image 13
Image result for dox me
HOW AM I STILL STINGLE? E ' o e <br /> L m r x <br /> L t y <br /> O a
I HISS.
The sum of ((our world)) is the universal truth. -Psalm 119 and ((ish))
Do a few sentences really make that big of a difference? Some key letters? Can you show me what I'm doing wrong? Is there a way to turn me into Adam, rather than a rock? I think you can.
Are eye Dr. Who or Master Y? Adam Marshall Dobrin is a National Merit Scholar who was born on December 8, 1980 in Plantation, FL and attended Pine Crest School where he graduated sumofi cum louder in "only some of it is humorous." Later he attended the University of Florida (which quickly resulted in a wreck), Florida Atlantic University, and finally Florida Gulf Coast University--where he still has failed to become Dr. Who. While attending "school" He worked in the computer programming and business outsourcing industries for about 15 years before proclaiming to have received a Revelation from God connecting the 9/11 attack and George Bush to the Burning Bush of Exodus and a message about technocracy and pre-crime.
Adam, as he prefers to be called, presents a concise introduction to paradox proven by the Bible through "verifiable" anachronism in language some stuff about Mars colonization and virtual reality and a list of reasons why ignoring this is actually an ELE. Adam claims to be Thor because of a connection between music and the Trial of Thor as well as the words "author" and "authority." He suggests you be Thundercats and call a reporter. There is also a suggestion that Richard Nixon and John Hancock are related to a signature from God, about freedom and America... and the "unseeingly ironic" Deepthroat and Taylor Momsen. They Sung "It's Rael..." In Biblical characters from Mary to Hosea, to see "sea" in Spanish, and in the Taming of the Spanglishrew ... a message is woven from the word Menorah: "men, or all humanity?" to the Statue of Liberty, and the Sons of Liberty, and the light above us, our SOL; which shows us that through the Revelation of Christ and the First Plague of Exodus, a blessing in disguise--turning water to blood, the sea to family; a common thread and single author of our entire history is revealed, a Father of our future. A message of freedom shines out of the words of scripture, revealing a gate to a new technologically "radical" form of democracy and a number of unseen or secret issues that have stalled the progress of humanity... and solutions, solutions from our sea. The Revelation shows us that not only ever word, but every idiom from "don't shoot the messenger" to "blood is thicker than water" we have ties to this message that pervades a hidden Matrix of light connecting movies and music and history all together in a sort of guide book to Salvation and to Heaven. Oopsy. His Revelation, woven into his life, continues to suggest that skinny dipping, forced methamphetamine addiction, and lots and lots of "me A.D." as well as his humorous depiction of a dick plastered over the Sound of Silence, his very Holy click, have something to do with saving our family and then the entire Universe from hidden mind control technology and the problems introduced by secret time travel. From the trials and tribulations of "Job" being coerced and controlled into helping to create this wall of Jericho; we find even more solutions, an end to addiction, to secrecy, and to this hidden control--a focal point of the life of Jesus Christ.
It tells us a story of recursion in time, that has brought us here numerous times--with the details of his life recorded not only in the Bible but in myths of Egyptian, Norse, and Greek mythology. The huge juxtaposition of the import of the content of the message shows the world how malleable our minds really are to this technology, how we could have been "fooled" into hiding our very freedom from ourselves in order to protect the "character" of a myth. A myth that comes to true life by delivering this message. In truth, from the now revealed content of the story of this repeated life, it should become more and more clear that we have not achieved success as of yet, that I have never "arrived whole" and that is why we are here, back again. Home is where the Heart is... When asked how He thinks we should respond to his message, He says "I think we already cherish it, and should strive to understand how it is that freedom is truly delivered through sharing the worth of this story that is our beginning. 'tis coming." Adam claims to be God, or at least look just like him and that the entirety of the Holy Scriptures as well as a number of ancient myths from Prometheus to Heimdallr and Yankee Doodle are actually about his life, and this event. An extensive amount of his writing relates to reformation of our badly broken and decidedly evil criminal justice system as well as ending the Global hunger crisis with the snap of his little finger.
He has written a number of books explaining how this Revelation connects to the delivery of freedom (as in Exodus), through a message about censorship among other social problems which he insists are being intentionally exacerbated by Satan--who he would ha've preferred not to be associated with.
-
-
cs3110.github.io cs3110.github.io
-
How terse (i.e., few and short lines of code) can you make your function? You can definitely do this in fewer than 12 lines.
let date_fun (d:int) (m:string) = if d > 31 || d < 0 then false else if d <= 28 then true else if d <= 30 && List.mem m ["Apr";"Jun";"Sept";"Nov"] then true else if d = 31 && List.mem m ["Jan";"Mar";"May";"Jul";"Aug";"Oct";"Dec"] then true else false
-
-
folklore.org folklore.org
-
They had been at it for almost a year, and they had written more code than would fit in the 64 Kbytes of memory in a standard Apple II. In fact, the Apple II only had 48 Kbytes on its main board, but it used a "language" card to give it an extra 16 Kbytes used to run Pascal.
as a modern developer hearing these numbers makes my mind explode. how did they do it in the past
-
-
mattbrictson.com mattbrictson.com
-
Here’s my common practice: Every page in the app needs the standard HTML boilerplate with my common stylesheets and JavaScripts. I need a layout that provides these, but makes no assumptions on the actual body of the page. This is my “base” layout. Most – but not all – pages in the app need a common header and footer. This is my “application” (default) layout. I’d like the application layout to reuse the base layout to keep my code DRY.
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
Reviewer #1 (Public Review):
In this manuscript, the Authors implement a delayed feedback control method and use it for the first time in biological neuronal networks. They extend a well-established computational theory and expand it into the biological realm. With this, they obtain novel evidence, never considered before, that showcases the difference between simulated neuronal networks and biological ones. Furthermore, they optimize the DFC method to achieve optimal results in the control of cell excitability in the content of biological neuronal networks, taking advantage of a closed-loop stimulation setup that, by itself, is not trivial to build and operate and that will certainly have a positive impact the fields of cellular and network electrophysiology.
Regarding the results, it would be very constructive if the Authors could share the code for the quasi-real-time interface with the Multichannel Systems software (current and older hardware versions), as this represents likely a bottleneck preventing more researchers to implement such an experimental paradigm.
On the data focusing on the effects of the DFC algorithms on neuronal behavior, the evidence is very compelling, although more care should be devoted to the statistical analyses, since some of the applied statistical tests are not appropriate. In a more biological sense, further discussion and clarification of the experimental details would improve this manuscript, making it more accessible and clearer for researchers across disciplines (i.e., ranging from computational to experimental Neuroscience) and increasing the impact of this research.
In summary, this work represents a necessary bridge between recent advances in computational neuroscience and the biological implementation of neuronal control mechanisms.
Regarding sharing the control code, our application for closed-loop stimulation using aDFC, DFC and Poisson is now available in GitHub (https://github.com/NCN-Lab/aDFC). This was, in fact, our initial intention following the reviewing process. With this application, the user can run the developed algorithms with the MEA2100-256 System from Multi Channel Systems MCS GmbH.
Same with the data. The dataset with the spike data from all experiments is also now publicly available in Zenodo. The data can be found in https://doi.org/10.5281/zenodo.10138446.
Regarding the improvements in the statistical analysis, the tests are now performed following Reviewer #1 suggestions. Important to emphasize that this did not change the results/ conclusions of the work.
-
Reviewer #1 (Public Review):
In this manuscript, the Authors implement a delayed feedback control method and use it for the first time in biological neuronal networks. They extend a well-established computational theory and expand it into the biological realm. With this, they obtain novel evidence, never considered before, that showcases the difference between simulated neuronal networks and biological ones. Furthermore, they optimize the DFC method to achieve optimal results in the control of cell excitability in the content of biological neuronal networks, taking advantage of a closed-loop stimulation setup that, by itself, is not trivial to build and operate and that will certainly have a positive impact the fields of cellular and network electrophysiology.
Regarding the results, it would be very constructive if the Authors could share the code for the quasi-real-time interface with the Multichannel Systems software (current and older hardware versions), as this represents likely a bottleneck preventing more researchers to implement such an experimental paradigm.
On the data focusing on the effects of the DFC algorithms on neuronal behavior, the evidence is very compelling, although more care should be devoted to the statistical analyses, since some of the applied statistical tests are not appropriate. In a more biological sense, further discussion and clarification of the experimental details would improve this manuscript, making it more accessible and clearer for researchers across disciplines (i.e., ranging from computational to experimental Neuroscience) and increasing the impact of this research.
In summary, this work represents a necessary bridge between recent advances in computational neuroscience and the biological implementation of neuronal control mechanisms.
-
-
www.biorxiv.org www.biorxiv.org
-
Reviewer #2 (Public Review):
Summary:
In this manuscript, "KinCytE- a Kinase to Cytokine Explorer to Identify Molecular Regulators and Potential Therapeutic", the authors present a web resource, KinCytE, that lets researchers search for kinase inhibitors that have been shown to affect cytokine and chemokine release and signaling networks. I think it's a valuable resource that has a lot of potential and could be very useful in deciding on statistical analysis that might precede lab experiments.
Opportunities:
With the release of the manuscript and the code base in place, I hope the authors continue to build upon the platform, perhaps by increasing the number of cell types that are probed (beyond macrophages). Additionally, when new drug-response data becomes available, perhaps it can be used to further validate the findings. Overall, I see this as a great project that can evolve.
Strengths:
The site contains valuable content, and the structure is such that growing that content should be possible.
Weaknesses:
Only based on macrophage experiments, would be nice to have other cell types investigated, but I'm sure that will be remedied with some time.
-
-
notebooksharing.space notebooksharing.space
-
ax.contourf(ds['longitude'],ds['latitude'],average_prec_in_mm_grouped[1], transform=ccrs.PlateC
Same as in the figures from Ex. 1, it is in that case better to not use contourf, and to use:
`pm = average_prec_in_mm.sel(month=1)
ax = plt.axes(projection=ccrs.Robinson())
pm.plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'label':'mm d$^{-1}$'}, levels=[0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40], cmap='YlGnBu') `
The contourf approach does not scale the levels accordingly. As you can see, you can not distinguish the regions with e.g. 1 mm per day to the regions with 4 mm per day. WIth the code above the colors change linearly with the given levels, and that allows to better distinguish between the levels.
-
-
code.visualstudio.com code.visualstudio.com
-
Introduction to Git in VS Code

-
-
kpu.pressbooks.pub kpu.pressbooks.pub
-
transgressions
an act that goes against a law, rule, or code of conduct; an offense
-
-
www.biorxiv.org www.biorxiv.org
-
Note: This response was posted by the corresponding author to Review Commons. The content has not been altered except for formatting.
Learn more at Review Commons
Reply to the reviewers
1. General Statements [optional]
We are thankful to the reviewers for the time and effort invested in assessing our manuscript and for their suggestions to improve it. We have now considered the points raised by them, carried out additional experiments, and modified the text and figures to address them. We feel that the new experiments and modifications have been able to solve all concerns raised by the reviewers and have improved the manuscript substantially, strengthening and extending our conclusions.
The main modifications include:
- We have extended the analysis of the overexpression strains to highly stringent conditions, which revealed a mild acidification defect for the strain overexpressing Oxr1. In addition, we have included in our analysis a strain in which both proteins are overexpressed, which resulted in a further growth defect.
- We have analyzed the recruitment of Rtc5 to the vacuole under additional conditions: deletion of the main subunit of the RAVE complex RAV1, medium containing galactose as the sole carbon source and pharmacological inhibition of the V-ATPase. These experiments allowed us to strengthen and extend our conclusions regarding the requirements for Rtc5 targeting to the vacuole.
- We have analyzed V-ATPase disassembly in intact cells, by addressing the localization to the vacuole of subunit C (Vma5) in glucose and galactose-containing medium. The results strengthen our conclusion that both Rtc5 and Oxr1 promote an in vivo state of lower V-ATPase assembly.
- We have extended our analyses of V-ATPase function to medium containing galactose as a carbon source, since glucose availability is one of the main regulators of V-ATPase function in vivo. The results are consistent with what we observed in glucose-containing medium.
- We have included a diagram of the structure of the V-ATPase for reference.
- We have included a diagram and a paragraph describing Oxr1 and Rtc5 regarding protein length and domain architecture and comparing them to other TLDc domain-containing proteins.
- We have made changes to the text and figures to improve clarity and accuracy, including a methods section that was missing. We include below a point-by-point response to the reviewers´ comments.
2. Point-by-point description of the revisions
Reviewer #1 (Evidence, reproducibility and clarity (Required)):
__ __Suggestions:
- The authors observed that knockout of Rtc5p or Oxr1p does not affect vacuolar pH. If Rtc5p and Oxr1p both cooperate to dissociate V-ATPase, the authors may wish to characterize the effect of a ∆Rtc5p∆Oxr1p double knockout on vacuolar pH. The double mutant ∆rtc5∆oxr1 was already included in the original manuscript (the growth test is shown in Figure 5 B and the BCECF staining is shown in Figure 5C). This strain behaved like wt in both of these assays. Of note, what we observe for the deletion strains is increased assembly (Figure 5 D - G), so we expect that it would be hard to observe a difference in vacuole acidity or growth in the presence of metals.
Therefore, we have now also included a strain with the double overexpression of Oxr1 and Rtc5. Since overexpression of the proteins results in decreased assembly, it is more likely that this strain will show impaired growth under conditions that strongly rely on V-ATPase activity. Indeed, we observed that the overexpression of Oxr1 alone resulted in a slight growth defect in media containing high concentrations of ZnCl2 and the double overexpression strain showed an even further defect (Figure 6 A and C).
The manuscript would benefit from a well-labelled diagram showing the subunits of V-ATPase (e.g. in Figure 2D).
We agree with the reviewer and we have now added a diagram of the structure of the V-ATPase labeling the different subunits in Figure 2B.
The images of structures, especially in Figure 1-Supplement 1B, are not particularly clear and could be improved (e.g. by removing shadows or using transparency).
We are thankful to the reviewer for this suggestion. To improve the clarity of the structures in Figure 1 C and Figure 1 – Supplement 1A, we are now presenting the different subunits in the structures with different shades of blue and grey.
The authors should clearly describe the differences between Rtc5p and Oxr1p in terms of protein length, sequence identity, domain structure, etc.
We are thankful for this suggestion and we have now included a diagram of the domain architecture and protein length of Rtc5 and Oxr1, comparing with two human proteins containing a TLDc domain in Figure 5A. In addition, we have added the following paragraph describing the features of the proteins.
“Rtc5 is a 567 residue-long protein. Analysis of the protein using HHPred (Zimmermann et al., 2018), finds homology to the structure of porcine Meak7 (PDB ID: 7U8O, (Zi Tan et al., 2022)) over the whole protein sequence (residues 37-559). For both yeast Rtc5 and human Meak7 (Uniprot ID: Q6P9B6), HHPred detects homology of the C-terminal region to other TLDc domain containing proteins like yeast Oxr1 (PDBID: 7FDE), Drosophila melanogaster Skywalker (PDB ID: 6R82), and human NCOA7 (PDB ID: 7OBP), while the N-terminus has similarity to EF-hand domain calcium-binding proteins (PDB IDs: 1EG3, 2CT9, 1S6C6, Figure 5A). HHPred analysis of the 273 residue long Saccharomyces cerevisiae Oxr1, on the other hand, only detects similarity to TLDc domain containing proteins (PDB IDs: 7U80, 6R82, 7OBP), which spans the majority of the sequence of the protein (residues 71-273). The overall sequence identity between Oxr1 and Rtc5 is 24% according to a ClustalOmega alignment within Uniprot. The Alphafold model that we generated for Rtc5 is in good agreement with the available partial structure of Oxr1 (7FDE) (root mean square deviation (RMSD) of 3.509Å) (Figure 5 - S1 A), indicating they are structurally very similar, in the region of the TLDc domain. Taken together, these analyses suggest that Oxr1 belongs to a group of TLDc domain-containing proteins consisting mainly of just this domain like the splice variants Oxr1-C or NCOA7-B in humans (NP_001185464 and NP_001186551, respectively), while Rtc5 belongs to a group containing an additional N-terminal EF-hand-like domain and a N-myristoylation sequence, like human Meak7 (Finelli & Oliver, 2017) (Figure 5 A).”
Minor:
- The "O" in VO should be capitalized. This has been corrected.
In Figure 4 supplement 1, the labels "I", "S", and "P" should be defined.
This has been clarified in the figure legend.
Please clarify what is meant by "switched labelling"
This refers to the SILAC vacuole proteomics experiments, for which yeast strains are grown in medium containing either L-Lysine or 13C6;15N2- L-Lysine to produce normal (‘light’) or heavy isotope-labeled (‘heavy’) proteins. This allows comparing two conditions. To increase the robustness of the comparisons, the experiments are done twice with both possible labeling schemes (condition A – light, condition B – heavy + condition A – heavy + condition B – light), which is commonly described as switched labeling or label switching.
We have exchanged the original sentence in the manuscript for:
“Performing the same experiments but switching which strain was labeled with heavy and light amino acids gave consistent results.”
The meaning of the sentence "Indeed, this was the case for both of them" is ambiguous.
We have now replaced this sentence with the following:
“Indeed, overexpression of either Rtc5 or Oxr1 resulted in increased growth defects in the context of Stv1 deletion (Figure 7 H and I).”
For Figure 1-Supplement 1B it is hard to see the crosslink distances.
We have updated this figure to improve the visibility of the cross-links. In addition, we now include a supplemental table (supplemental table 5) with a list of the Cα- Cα distances measured for all the crosslinks we mapped onto high-resolution structures.
The statement "The effects of Oxr1 are greater than those caused by Rtc5" requires more context. Is there a way of quantifying this effect for the reader?
We agree that this sentence was too general and vague. The effects caused by one or the other protein depend on the condition and the assay. We have thus deleted this sentence, and we think it is better to refer to the description of the individual assays performed.
The phrase "negative genetic interaction" should be clarified.
We have included in the text the following explanation of genetic interactions:
“A genetic interaction occurs when the combination of two mutations results in a different phenotype from that expected from the addition of the phenotypes of the individual mutations. For example, deletion of OXR1 or RTC5 has no impact on growth in neutral pH media containing zinc in a control background but improves the growth of RAV1 deletion strains (Figure 7 E and F), so this is a positive genetic interaction. On the other hand, overexpression of either Rtc5 or Oxr1 results in a growth defect in a background lacking Rav1 in neutral media containing zinc, a negative genetic interaction.”
* * In the sentence "Isogenic strains with the indicated modifications in the genome where spotted as serial dilutions in media with pH=5.5, pH=7.5 or pH=7.5 and containing 3 mM ZnCl2", "where" should be "were".
This has been corrected.
Figure 2D: the authors should consider re-coloring these models, as it is challenging to distinguish Rtc5p from the V-ATPase.
We have changed the coloring of this structure and added a diagram of the V-ATPase structure with the same coloring scheme to improve clarity.
Reviewer #1 (Significance (Required)):
The vacuolar protein interaction map alone from this manuscript is a nice contribution to the literature. Experiments establishing colocalization of Rtc5p to the vacuole are convincing, as is dependence of this association on the presence of assembled V-ATPase. Similarly, experiments related to myristoylation are convincing. The observed mislocalization of V-ATPases that contain Stv1p to the vacuole (which is also known to occur when Vph1p has been knocked out) upon knockout of Oxr1p is also extremely interesting. Overall, this is an interesting manuscript that contributes to our understand of TLDc proteins.
We are thankful to the reviewer for their appreciation of the significance of our work, including the interactome map of the vacuole as a resource and the advances on the understanding of the regulation of the V-ATPase by TLDc domain-containing proteins.
Reviewer #2 (Evidence, reproducibility and clarity (Required)):
Major points:
- The evidence of Oxr1 and Rtc5 as V-ATPase disassembly factors is circumstantial. The authors base their interpretation primarily on increased V1 (but not Vo) at purified vacuoles from Oxr1- or Rtc5-deleted strains, which does not directly address disassembly. Of course, the results regarding Oxr1 confirm detailed disassembly experiments with the purified protein complex (PMID 34918374), but on their own are open to other interpretations, e.g. suppression of V-ATPase assembly. Of note, the authors emphasize that they provide first evidence of the in vivo role of Oxr1, but monitor V1 recruitment with purified vacuoles and do not follow V-ATPase assembly in intact cells. We are thankful to the reviewer for pointing this out. We did not want to express that the molecular activity of the proteins is the disassembly of the complex, as our analyses include in vivo and ex vivo experiments and do not directly address this. We rather meant that both proteins promote an in vivo state of lower assembly of the V-ATPase. We have modified the wording throughout the manuscript to be clearer about this.
In addition, we have added new experiments to monitor V-ATPase assembly in intact cells, as suggested by the reviewer. Previous work has shown that in yeast, only subunit C leaves the vacuole membrane under conditions that promote disassembly, while the other subunits remain at the vacuole membrane (Tabke et al 2014). Our own experiments agree with what was published (Figure 3 D). We have thus monitored Vma5 localization to the vacuole under glucose or after shift to galactose containing media in cells lacking or overexpressing Rtc5 or Oxr1. We observed that cells overexpressing either TLDc domain protein show lower levels of Vma5 recruitment to the vacuole in glucose (Figure 6 D and E). Additionally cells lacking either Rtc5 or Oxr1 contain higher levels of Vma5 at the vacuole after 20 minutes in galactose medium (Figure 5 F and G). Thus, these results re-inforce our conclusions that Rtc5 and Oxr1 promote states of lower assembly.
Oxr1 and Rtc5 have very low sequence similarity. It would be helpful if the authors provided more detail on the predicted structure of the putative TLDc domain of Rtc5 and its relationship to the V-ATPase - Oxr1 structure. Is Rtc5 more closely related to established TLDc domain proteins in other organisms?
We have now included a diagram of the domain architecture of Rtc5 and Oxr1, and comparison to the features of other TLDc domain containing proteins in Figure 5 A, as well as a paragraph describing them:
“Rtc5 is a 567 residue-long protein. Analysis of the protein using HHPred (Zimmermann et al., 2018), finds homology to the structure of porcine Meak7 (PDB ID: 7U8O, (Zi Tan et al., 2022)) over the whole protein sequence (residues 37-559). For both yeast Rtc5 and human Meak7 (Uniprot ID: Q6P9B6), HHPred detects homology of the C-terminal region to other TLDc domain containing proteins like yeast Oxr1 (PDBID: 7FDE), Drosophila melanogaster Skywalker (PDB ID: 6R82), and human NCOA7 (PDB ID: 7OBP), while the N-terminus has similarity to EF-hand domain calcium-binding proteins (PDB IDs: 1EG3, 2CT9, 1S6C6, Figure 5A). HHPred analysis of the 273 residue long Saccharomyces cerevisiae Oxr1, on the other hand, only detects similarity to TLDc domain containing proteins (PDB IDs: 7U80, 6R82, 7OBP), which spans the majority of the sequence of the protein (residues 71-273). The overall sequence identity between Oxr1 and Rtc5 is 24% according to a ClustalOmega alignment within Uniprot. The Alphafold model that we generated for Rtc5 is in good agreement with the available partial structure of Oxr1 (7FDE) (root mean square deviation (RMSD) of 3.509Å) (Figure 5 - S1 A), indicating they are structurally very similar, in the region of the TLDc domain. Taken together, these analyses suggest that Oxr1 belongs to a subfamily of TLDc domain-containing proteins consisting mainly of just this domain like the splice variants Oxr1-C or NCOA7-B in humans (NP_001185464 and NP_001186551, respectively) , while Rtc5 belongs to a subfamily containing an additional N-terminal EF-hand-like domain and a N-myristoylation sequence, like human Meak7 (Finelli & Oliver, 2017) (Figure 5 A).”
The authors conclude vacuolar recruitment of Rtc5 depends on the assembled V-ATPase, based on deletion of different V1 and Vo domain subunits. However, these genetic manipulations likely cause a strong perturbation of vacuolar acidification; indeed, the images show drastically altered vacuolar morphology. To strengthen their conclusion, it would be helpful to show that Rtc5 recruitment is not blocked by inhibition of vacuolar acidification, and that conversely it is blocked by deletion of rav1.
We are thankful to the reviewer for this insightful suggestion and we have now performed both experiments suggested. The experiment regarding rav1Δ is now Figure 3C, and we observed that this mutation also disrupts Rtc5 localization to the vacuole. In addition, we decided to include an experiment showing the subcellular localization of Rtc5 after shifting the cells to galactose containing medium for 20 minutes, as a physiologically relevant condition that results in disassembly of the complex (Figure 3D). We observed that under these conditions Rtc5 re-localizes to the cytosol. This result is particularly interesting given that in yeast only subunit C (but not other V1 subunits) re-localizes to the cytosol under these conditions. In addition, the experiment using Bafilomycin A to inhibit the V-ATPase shows that Rtc5 is still localized at the vacuole membrane under conditions of V-ATPase inhibition (Figure 3 F). Taken together these results allowed us to strengthen our original interpretation that Rtc5 requires an assembled V-ATPase for its localization and extend it to the fact that the V-ATPase does not need to be active.
Reviewer #2 (Significance (Required)):
This is an interesting paper that confirms and extends previous findings on TLDc domain proteins as a novel class of proteins that interact with and regulate the V-ATPase in eukaryotes. The title seems to exaggerate the findings a bit, as the authors do not investigate V-ATPase (dis)assembly directly and only phenotypically describe altered subcellular localization of the Golgi V-ATPase in Oxr1-deleted cells. A recent structural and biochemical characterization of Oxr1 as a V-ATPase disassembly factor (PMID 34918374) somewhat limits the novelty of the results, but the function of Oxr1 in regulating subcellular V-ATPase localization and the identification of a second potential TLDc domain protein in yeast provide relevant insights into V-ATPase regulation. This paper will be of interest to cell biologists and biochemists working on lysosomal biology, organelle proteomics and V-ATPase regulation.
We thank the reviewer for the assessment of our work, and for recognizing the novel insights that we provide. Regarding the previous biochemical work on Oxr1 and the V-ATPase, we have clearly cited this work in the manuscript. In our opinion, our results complement and extend this article, showing that the function in disassembly is relevant in vivo. Additionally, this is only one of five major points of the article, the other four being
- The interactome map of the vacuole as a resource
- The identification of Rtc5 as a second yeast TLDc domain containing protein and interactor of the V-ATPase.
- The identification of the role of Rtc5 in V-ATPase assembly.
- The identification of the role of Oxr1 in Stv1 subcellular localization. We believe these additional points add important insights to researchers interested in lysosomes, the V-ATPase, intracellular trafficking and TLDc-domain containing proteins.
Reviewer #3 (Evidence, reproducibility and clarity (Required)):
Major comments
__1) Re: A cross-linking mass spectrometry map of vacuolar protein interactions (results) __ While XL-MS is a very powerful method, it is a high-throughput approach and there should be some kind of negative control in these experiments. In cross-linking experiments, non-cross-linked samples are usually used as negative controls. What was the negative control in cross-linking mass-spectrometry experiments here? If there was no negative control, how the specificity of interactions was evaluated? Maybe the authors analyzed the dataset for highly improbable interactions and found very few of them?
We fully agree that it is crucial to ensure the specificity of the interactions detected by XL-MS. To achieve this, one needs to control (1) the specificity of the data analysis (i.e. that the recorded mass spectrometry data are correctly matched to cross-linked peptides from the sequence database) and (2) the biological specificity (i.e. that the cross-linking captured natively occurring interactions).
To ascertain that criterion (1) is met, cross-link identifications are filtered to a pre-defined false-discovery rate (FDR) – an approach that the XL-MS field adopted from mass spectrometry-based proteomics. As a result, low-confidence identifications (e.g. cross-linked peptides that are only supported by a few signals in a given mass spectrum) are removed from the dataset. FDR filtering in XL-MS is a rather complex matter as it can be done at different points during data analysis and the optimal FDR cut-off depends on the specific scientific question at hand (for more details see for example Fischer and Rappsilber, Anal Chem, 2017). Generally speaking, an overly restrictive FDR cut-off would remove a lot of correct identifications, thereby greatly limiting the sensitivity of the analysis. On the other hand, a too relaxed FDR cut-off would dilute the correct identifications with a high number of false-positives, which would impair the robustness and specificity of the dataset. While many XL-MS study control the FDR on the level of individual spectrum matches, we opted for a 2% FDR cut-off on the level of unique residue pairs, which is more stringent (see Fischer and Rappsilber, Anal Chem, 2017). Our FDR parameters are described in the Methods section (Cross-linking mass spectrometry of isolated vacuoles - Data analysis). Of note, we have made all raw mass spectrometry data publicly available through the PRIDE repository (https://www.ebi.ac.uk/pride/ ; accession code PXD046792; login details during peer review: Username = reviewer_pxd046792@ebi.ac.uk, Password = q1645lTP). This will allow other researchers to re-analyze our data with the data analysis settings of their choice in the future.
To ascertain that criterion (2) is met, we mapped the identified cross-links onto existing high-resolution structures of vacuolar protein complexes. Taking into account the length of our cross-linking reagent, the side-chain length of the cross-linkable amino acids (i.e. lysines), and a certain degree of in-solution flexibility, cross-links can reasonably occur between lysines with a mutual Cα-Cα distance of up to 35 Å. Using this cut-off, the lysine-lysine pairs in the high-resolution structures we studied can be split into possible cross-linking partners (Cα-Cα distance 35 Å). Of all cross-links we could map onto high-resolution structures, 95.2% occurred between possible cross-linking partners. In addition, our cross-links reflect numerous known vacuolar protein interactions that have not yet been structurally characterized. These lines of evidence increase our confidence that our XL-MS approach captured genuine, natively occurring interactions. These analyses are described in more detail in the first Results sub-section (“A cross-linking mass spectrometry map of vacuolar protein interactions”).
In addition, the high purity of vacuole preparation is critical. How was it assessed by the authors?
We disagree that the purity of the vacuole preparation is critical for this analysis to be valid. The accuracy of the protein-protein interactions detected will depend on their preservation during sample preparation until the sample encounters the cross-linker, and the data analysis, as described above. The experiment would have been equally valid if performed on whole cell lysates without any enrichment of vacuoles, but the coverage of vacuolar proteins would have likely been very low. For this reason, we decided to use the vacuole isolation procedure to obtain better coverage of the proteins of this particular organelle. The use of the Ficoll gradient protocol (Haas, 1995) was based on that it is a protocol that yields strong enrichment of proteins annotated with the GO Term “vacuole” (Eising et al, 2019) and that it preserves the functionality of the organelle, as evidenced by its use for multiple functional assays (vacuole-vacuole fusion (Haas, 1995), autophagosome-vacuole fusion (Gao et al, 2018), polyphosphate synthesis by the VTC complex (Desfougéres et al, 2016), among others).
2) Re: Rtc5 and Oxr1 counteract the function of the RAVE complex (results)
Taken together, data, presented in this section of the manuscript, provide strong evidence that Rtc5 and Oxr1 negatively regulate V-ATPase activity, counteracting the V-ATPase assembly, facilitated by the activity of the RAVE complex. However, the complete deletion of the major RAVE subunit Rav1p was required to observe this effect in vivo in yeast. The other way to induce V-ATPase disassembly in yeast is glucose deprivation. It will be interesting to study if there is a synergistic effect between glucose deprivation and RTC5/OXR1 deletion on V-ATPase assembly, vacuolar pH, and growth of single oxr1Δ, rtc5Δ or double oxr1Δrtc5Δ mutants (OPTIONAL). Glucose deprivation is a more physiologically relevant condition than a deletion of an entire gene.
We would like to point out that an effect on assembly is observed without deleting the RAVE complex: deletions of Oxr1 or Rtc5 resulted in increased V-ATPase assembly in vivo in the presence of glucose and of the RAVE complex (Figures 5 D and E). We have now also added the experiments showing that the overexpression strains have a mild growth defect under conditions that force cells to strongly rely on V-ATPase activity (Figures 6 A and C).
Nevertheless, we agree that addressing the effect of changing the levels of Oxr1 and Rtc5 under low-glucose conditions is an interesting physiologically relevant question. We have now included growth assays and BCECF staining in medium containing galactose as the carbon source (Figures 5 – Supplement 1 B and C, and Figure 6 C and Figure 6- Supplement 1A). In addition, we have addressed the vacuolar localization of Vma5 in medium containing glucose or after shifting to medium containing galactose for 20 minutes, as a proxy for V-ATPase disassembly in intact cells (Figure 5 F and G, Figure 6 D and E). Taken together, these analyses reinforce our conclusions that both Rtc5 and Oxr1 promote an in vivo state of lower V-ATPase assembly, based on the following observations:
- Higher localization of Vma5 to the vacuole after 20 mins in galactose in cells lacking Oxr1 or Rtc5 (Figure 5 F and G).
- Lower localization of Vma5 to the vacuole in medium containing glucose in cells overexpressing Oxr1 or Rtc5 (Figure 6 D and E).
- Growth defect of the strain overexpressing Oxr1 in medium containing galactose with pH = 7.5 and zinc chloride, with a further growth defect caused by additional overexpression of Rtc5 (Figure 6 C). 3) Re: Figure 6 - supplement 1. The title is relevant to panel D only, it should be renamed to reflect the results of the disassembly of V-ATPase in rav1Δ mutant strains, while results about the stv1Δ-based strains (Panel D) should be shown together with similar experiments in Figure 7 - supplement 2 for clarity.
We have shifted the Panel D from the original Figure 6 – Supplement 1 to the main Figure (now Figure 7 – H and I). Regarding the title of the Figure, whether Supplemental Figures have titles or not will depend on the journal where the manuscript is published. For now, we have removed all titles from supplemental figures, as they are conceived to complement the main Figures.
4) Re: Figure 7 - supplement 1, Panel A. The proper assay to show that Stv1-mNeonGreen is functional is to express it in double mutant vph1Δstv1Δ to see if the growth defect is reversed. In addition, the vph1Δ growth defect is not changed (improved or worsened) in the presence of Stv1-mNeonGreen, so it means that the expression of Stv1-mNeonGreen does not further compromise the V-ATPase function, but it does not mean that it improves its function.
It is clear from the experiment suggested by the reviewer that they think that we have expressed Stv1-mNeonGreen from a plasmid. This was not the case, Stv1 was C-terminally tagged with mNeonGreen in the genome. It is thus the only expressed version in the strain. The experiment we have performed is thus equivalent to the one suggested by the reviewer, but for genomically expressed variants. For reference, the genotypes of all the strains used can be found in Supplemental Table 1.
5) Re: Figure 7 - supplement 2. This figure should be combined with Fig. 6- suppl 1, panel D as also mentioned above. The figure seems to lack some labels, and conclusions are not accurate as discussed below. However, this data provides important additional information about relationships between isoform-specific subunits of V-ATPase Vph1 and Stv1 and both Rtc5 and Oxr1 and should be repeated if it is not done yet to have a better idea about these relationships.
Panel B: Based on this picture, deletion of RTC5 has a negative genetic interaction with the deletion of VPH1, since double deletion mutant vph1Δ rtc5Δ grows worse than each individual mutant. Although it also means that there is no positive interaction, it is not the same.
Indeed, there is a negative genetic interaction between the deletion of RTC5 and VPH1. We have replaced the growth tests in this figure (Figure 8 – Supplement 2 A in the new manuscript) to show this negative genetic interaction better. This effect is reproducible, as shown in the repetitions of the experiments.
Panel C: Same as for panel B. Based on this picture, the deletion of OXR1 has a weak negative genetic interaction with the deletion of STV1, since double deletion mutant stv1Δ oxr1Δ grows worse than each individual mutant at 6 mM ZnCl2.
Panel D: Same as for panels B and C. Based on this picture, deletion of RTC5 has a negative genetic interaction with the deletion of STV1, since double deletion mutant stv1Δ rtc5Δ grows worse than each individual mutant at 6 mM ZnCl2. There is no label in the middle panel (growth conditions) and no growth assay data in the presence of CaCl2.
However, these results will be then in contradiction with the results from Figure 6 - Supplement 1, panel D, showing negative genetic interaction between the overexpression of Rtc5 or Oxr1 and deletion of Stv1, since both deletion and overexpression of Rtc5 or Oxr1 would have negative genetic interactions with Stv1.
For both Panels C and D (Now Figure 8 - Supplement 2 B and C). The effect pointed out by the reviewer (slightly stronger growth defect for the double mutants than for the single mutants) is very mild. We have attempted to make it more evident by assessing growth in medium with higher and lower concentrations of zinc and this was not possible. This is in contrast with the very clear positive genetic interaction that we observe between the deletion of OXR1 and VPH1 (Now Figure 8 H). This is the reason that we decided to report the lack of a positive genetic interaction instead of the presence of a negative one, as we do not want to draw conclusions based on results that are borderline detectable.
In addition, there is no label for the media in the middle panel, is it just YPAD pH=7.5, without the addition of any metals?
Indeed, the media is YPAD pH=7.5, without the addition of any metals. The line drawn above several images based on this media indicated this. Since this form of labeling appears to be confusing, we have now replaced it and placed the label directly above the image.
Why there is no growth assay in the presence of CaCl2, like in panels A and B?
Every growth test shown in the manuscript was performed including growth in YPD pH=5,5 as a control of a permissive condition for lack of V-ATPase activity, and then in YPD pH=7,5 including a broad range of Zinc Chloride and Calcium chloride concentrations. From all these pictures, the conditions where the differences among strains were clearly visible were chosen to assemble the figures. Conditions that did not provide any information for that particular experiment were not included in the figure to avoid making them unnecessarily large and crowded.
Re: Figure 7 - supplement 2, continued. How many times all these experiments were repeated? These experiments should be repeated at least 3 times, which is especially necessary for the experiments in panel C, because the effects are borderline. If results are reproducible and statistically significant, although small, the conclusion should be changed from "no positive genetic interactions" to "negative genetic interactions", which is more precise and informative.
All growth tests shown in the manuscript were repeated at least three times for the conditions shown. We are thankful to the reviewer for pointing out that this was not mentioned, and we have added this to the methods section. We have assembled a file with all repetitions of the shown growth tests and added it at the end of this file. In doing so, these are already available for the public. These repetitions show that all effects reported are reproducible. We will then discuss with the editors of the journal where this manuscript is published about the necessity of including it with the final article.
Regarding reporting the lack of a positive genetic interaction vs. a negative one, we have discussed this above. Shortly, for Panel B (Figure 8 – Supplement 2 A in the new manuscript) we have changed the conclusion to “negative genetic interaction” as adjusting the zinc chloride concentration allowed us to show this clearly and reproducibly, as shown by the repetitions of the experiments. For panels C and D (Now Figure 8 - Supplement 2 B and C), the effect is really mild and barely detectable, even when we tried a wide range of zinc chloride concentrations. For this reason, we would prefer to maintain the “no positive genetic interaction” conclusion.
Re: Methods. There is no description of yeast serial dilution growth assay at all. In addition, why the specific media (neutral pH, in the presence of high concentrations of calcium or zinc) was used is not explained either in the results or methods. Appropriate references should be included, for example, PMID: 2139726, PMID: 1491236.
We apologize for the oversight of the missing methods section, which we have now included.
Regarding the explanation of the media used, the following section was already a part of the results section, before the description of the first growth test:
“The V-ATPase is not essential for viability in yeast cells, and mutants lacking subunits of this complex grow similarly to a wt strain in acidic media. However, when cells grow at near-neutral pH or in the presence of divalent cations such as calcium and zinc, the mutants lacking V-ATPase function show a strong growth impairment (Kane et al, 2006).”
We have now replaced this with the following, more complete version:
“As a first approach for addressing the role of these proteins, we tested growth phenotypes related to V-ATPase function in strains lacking or overexpressing them. The V-ATPase is not essential for viability in yeast cells, and mutants lacking subunits of this complex grow similarly to a wt strain in acidic media, but display a growth defect at near-neutral pH the mutants (Nelson & Nelson, 1990). In addition, the proton gradient across the vacuole membrane generated by the V-ATPase energizes the pumping of metals into the vacuole, as a mechanism of detoxification. Thus, increasing concentrations of divalent cations such as calcium and zinc, generate conditions in which growth is increasingly reliant on V-ATPase activity (Förster & Kane, 2000; MacDiarmid et al, 2002; Kane, 2006).”
MINOR COMMENTS
Yeast proteins are named with "p" at the end, such as "Rtc5p".
This nomenclature rule is falling into disuse during the last decades, as the use of capitals vs lowercase and italics allows to distinguish between genes proteins and strains (OXR1 = gene, Oxr1 = protein, oxr1Δ = strain). As an example, I include a list of the latest papers by some of the major yeast labs around the world, all of which use the same nomenclature as we do (in alphabetical order). This list even includes some work in the field of the V-ATPase.
- Alexey Merz, USA. PMID: 33225520
- Benoit Kornmann, UK. PMID: 35654841
- Christian Ungermann, Germany. PMID: 37463208
- Claudio de Virgilio, Switzerland. PMID: 36749016
- Daniel E. Gottschling, USA. PMID: 37640943
- David Teis, Austria. PMID: 32744498
- Elizabeth Conibear, Canada. PMID: 35938928
- Fulvio Reggiori, Denmark. PMID: 37060997
- J Christopher Fromme, USA. PMID: 37672345
- Maya Schuldiner, Israel. PMID: 37073826
- Patricia Kane, USA. PMID: 36598799
- Scott Emr, USA. PMID: 35770973
- W Mike Henne, USA. PMID: 37889293
- Yoshinori Ohsumi, Japan. PMID: 37917025 In addition, we would prefer to keep the nomenclature that we already use, to keep consistency with other published articles from our lab.
Re: Introduction. In the introduction it should be indicated that Rtc5 was originally discovered as a "restriction of telomere capping 5", using screening of temperature-sensitive cdc13-1 mutants combined with the yeast gene deletion collection [PMID: 18845848]. A couple of sentences should be written about the RAVE complex and its role in V-ATPase assembly.
We are thankful for this suggestion and we have now included both pieces of information in the introduction.
*“The re-assembly of the V1 onto the VO complex when glucose becomes again available, is aided by a dedicated chaperone complex known as the RAVE complex, which also likely has a general role in V-ATPase assembly (Seol et al, 2001; Smardon et al, 2002, 2014).” *
“In our cross-linking mass spectrometry interactome map of isolated vacuoles we found that the only other TLDc-domain containing protein of yeast, Rtc5, is a novel interactor of the V-ATPase. Rtc5 is a protein of unknown function, originally described in a genetic screen for genes related to telomere capping (Addinall et al, 2008)”
Re: The TLDc domain-containing protein of unknown function Rtc5 is a novel interactor of the vacuolar V-ATPase (results)
1) It is important to understand, that Oxr1 was co-purified before with the V1 domain of V-ATPase from a certain mutant strain, not wild-type yeast [PMID: 34918374]. It may explain why the authors did not identify it in their original protein-protein interactions screen here.
The structural work on the V1 domain bound to Oxr1 (Khan et al, 2022) showed that the binding of Oxr1 prevented V1 from assembling onto the Vo. Since our experiments rely on the purification of vacuoles, they should contain mainly only V1 assembled onto the VO, and not the free soluble V1. This is likely the reason that we do not detect Oxr1, in addition to it being less abundant. We have clarified this now in the manuscript and added the fact that Oxr1 was co-purified with a V1 containing a mutant version of the H subunit.
“In a previous study, Oxr1 was co-purified with a V1 domain containing a mutant version of the H subunit, and its presence prevented the in vitro assembly of this V1 domain onto the VO domain and promoted disassembly of the holocomplex (Khan et al., 2022). This is likely the reason why we do not detect Oxr1 in our experiments, which rely on isolated vacuoles and thus would only include V1 domains that are assembled onto the membrane. In addition, Oxr1 is less abundant in yeast cells than Rtc5 according to the protein abundance database PaxDb (Wang et al, 2015).”
2) It is a wrong conclusion that because Rtc5 was co-purified with both V1 and V0 domain subunits it interacts with the assembled V-ATPase, this does not exclude a possibility that Rtc5 also interacts with separate V1 sector or separate V0 sector of V-ATPase.
We agree with the reviewer that the co-purification of Rtc5 with both V1 and VO domain subunits does not necessarily mean that it interacts with the assembled V-ATPase. Thus, we have modified the text in this part to:
“The fact that we can co-enrich Rtc5 both with Vma2 and with Vph1 indicates that it can interact either with both the VO and V1 domains or with the assembled V-ATPase.”
However, other results throughout the manuscript can be taken into account to strengthen this idea:
- Rtc5 requires an assembled V-ATPase to localize to the vacuole membrane, and thus seems not to interact with free VO domains, which would be available when we delete V1 subunits or in medium containing galactose.
- Rtc5 becomes cytosolic in galactose-containing media. This would indicate that it also does not interact with free V1 domains, which are still localized to the vacuole membrane under these conditions. Taken together with the pull-downs, these results suggest that Rtc5 interacts with the assembled V1-VO V-ATPase. Thus, we have included the following sentence after Figure 3, which shows the subcellular localization experiments.
*“Taking into account that Rtc5 is co-enriched with subunits of both the VO and V1 domain, and that it localizes at the vacuole membrane dependent on an assembled V-ATPase, we suggest that Rtc5 interacts with the assembled V-ATPase complex.” *
Re: Figure 1, Panel C. Is it possible to show individual proteins in different colors for clarity?
Panel D. How were cross-link distances measured? It is not obvious if you are not an expert in the field and it is not described in the methods.
We have modified Figure 1 C and Figure 1 – Supplement 1B (now Figure 1 – Supplement 1 A) to present the different subunits in the structures with different shades of blue and grey.
Furthermore, we have clarified the distance measurement approach in the methods section and in the legend of Fig 1D: “Ca-Ca distances were determined using the measuring function in Pymol v.2.5.2 (Schrodinger LLC).”
__Re: Figure 1 - Supplement 1, __
Panel A. What scientific information are we getting from this picture?
This panel was just a visual representation of the complexity of the protein network we obtained. Indeed, there was no specific scientific message, so we have decided to remove this panel from the revised manuscript.
Panel B. Why are these complexes shown separately from the complexes in Figure 1, panel C? Also, can individual proteins be colored differently here as well?
We did not want to overload Fig 1C, so we decided to show some of the protein complexes in Fig 1 – Supplement 1B. The most important information is the histogram showing that 95% of the mapped cross-links fall within the expected length range, and this is shown in the main Figure (Figure 1D). As stated above, we have adjusted the subunit coloring in Figure 1 C to improve clarity.
Re: Figure 3. It will be nice to show the localization of the untagged protein as well if antibodies are available (OPTIONAL).
Unfortunately, there are no available antibodies for either Rtc5 or Oxr1. This hinders us from detecting the endogenous untagged proteins. We would like to point out that we have been very careful in showing which tagged proteins are functional (C-terminally tagged Rtc5) and which are not (C-terminally tagged Oxr1), so that the reader can know how to interpret the localization data.
Re: Figure 4. Why different tags were used in panels A (GFP), C (msGFP2) and D
(mNeonGreen)?
In general, we prefer to use mNeonGreen as a tag for microscopy experiments because it is brighter and more stable, and msGFP2 as a tag for experiments involving Western blots because we have better antibodies available. There was a mistake in the labeling, and actually, all constructs labeled as GFP were msGFP2. We have now corrected this. Of note, we have tested the functionality of both tagged version (mNeonGreen and msGFP2).
Panels B and C. Were Rtc5 fusions detected using anti-GFP antibodies?
Indeed, Rtc5-msGFP2 was detected with an anti-GFP antibody. We have now indicated next to each Western blot membrane the primary antibody used. In addition, all antibodies are detailed in Supplemental Figure 3.
The authors should have full-size Western blots available, not just cut-out bands, as some journals and reviewers require them for publication.
For all western blots, we always showed a good portion of the membrane and not cut-out bands. The cropping was performed to avoid making figures unnecessarily large. The whole membranes are of course available and will be included in an “extended data file” if required by the journal.
Re: Figure 4 - Supplement 1, Panel A. Does "-" and "+" mean -/+ Azido-Myr?
Indeed. We have now added this label to the figure.
Panel B. There is no blot with a membrane protein marker (Vam3 or Vac8), it should be included.
We have replaced this western blot for a different repetition of this experiment in which a membrane protein marker was included. Of note, the two other repetitions of the experiment shown (Figure 4 – Supplement 1 panel C and Figure 4 panel C) also include both a membrane protein marker and a soluble protein marker.
Re: Figure 5. The title does not describe all results in this figure and should be modified accordingly.
The original data from Figure 5 is now separated into Figures 5 and 6 because of the additional experiments included during revisions. We have modified the Figure titles to be descriptive of the overall message of the Figures.
Panel C. Statistical significance value for *** should be indicated in the legend.
This has been indicated in the Figure legend.
It is not clear how many times yeast growth assays were repeated. Usually, all experiments should be done in triplicates or more.
All shown growth tests were performed at least three times for the conditions shown. We have now indicated this in the materials and methods section. In addition, we now provide in this response a file with all repetitions of growth tests, which will be appended to the article if deemed necessary by the editors.
Re: Figure 5 - supplement 1. No title
Re: Figure 5 - supplement 2. No title
Whether the supplemental Figures should have a title or not will depend on the style of the journal where the manuscript is finally published. The current idea of the supplemental Figures is that they complement the corresponding main Figure. For this reason, we have removed all titles from supplemental Figures.
Re: Figure 6. There is a typo on the second lane in the legend: "...the genome were", not "...the genome where".
This has been corrected.
Panel C. Why the analysis of BCECF vacuole staining of double mutants oxr1Δrav1Δ and rtc5Δrav1Δ is not shown? Was it done at all?
We had not included this piece of data, as we thought that the genetic interaction of RTC5 and OXR1 and rav1Δ was sufficiently well supported with the included data (growth tests in combination with the deletion, growth tests in combination with the overexpression, vacuole proteomics in combination with overexpression, and BCECF staining in combination with the overexpression). Because of the request of the reviewer, we have now included this experiment as Figure 7 G.
Re: Figure 6 - Supplement 2. Why were two different tags (2xmNG and msGFP2) used?
We tried both tags to see if one of them would be functional. Unfortunately, they both resulted in non-functional proteins, as shown by the corresponding growth tests.
Did the authors study N-terminally tagged Oxr1? Was it functional?
We have tagged Oxr1 N-terminally, and this unfortunately resulted in a protein that was not completely functional. We show below the localization of N-terminally mNeon-tagged Oxr1, under the control of the TEF1 promoter. The protein appears cytosolic (Panel A) but is not completely functional (Panel B). The localization of Oxr1 had already been misreported by using a tagged version that we now show to be non-functional. For this reason, we preferred not to include this data in the manuscript, to avoid again including in the literature subcellular localizations that correspond to non-functional or partially functional proteins.
Panel B. Results for the untagged TEF1pr-Oxr1 overexpression are not shown, thus tagged and untagged proteins can't be compared. Are they available? What is the promoter for the expression of 2xmNG fusion constructs?
Oxr1-2xmNG was C-terminally tagged in the genome, which means that the promoter is the endogenous one, it was not modified. For this reason, the correct controls are a strain expressing Oxr1 at endogenous levels (the wt strain) and a strain lacking Oxr1. Both controls were included in the Figure, and in all repetitions made of this experiment. For reference, all the genotypes of the strains used are found in Supplemental Table 1.
Re: Methods. Were vacuoles prepared differently for XL-MS and SILAC-based vacuole proteomics (there are different references) and why? Methods for XL-MS and quantitative SILAC-based proteomics can be placed together for clarity.
The basis for the method of vacuole purification is the same, from (Haas, 1995). This reference was included in both protocols that include vacuole purifications. However, modifications of this method were performed to fit the crosslinking method (higher pH, no primary amines) or to fit the SILAC labeling (combination of two differentially labeled samples in one purification). The reference for the vacuole proteomics (Eising et al 2022) corresponds to a paper in which the SILAC-based comparison of vacuoles from different mutant strains was optimized, and includes not only the vacuole purification but the growth conditions and downstream processing of the vacuoles.
Since both the SILAC-based vacuole proteomics and the XL-MS are multi-step methods, containing numerous parameters including the sample preparation, processing for MS, MS run and data analysis, we would prefer to keep them separate. We think this would allow a person attempting to reproduce these methods to go through them step by step.
What is CMAC dye? Why was it used to stain the vacuolar lumen?
We apologize for this oversight, we have included the definition of CMAC as 7-Amino-4-Chlormethylcumarin. It is a standard-used organelle marker for the lumen of the vacuole.
Some abbreviations (TEAB, ACN) are not explained.
We apologize for this oversight. We have now replaced these abbreviations with the full names of the compounds in the article.
What is 0% Ficoll?
We used the term 0% Ficoll, because this is the name given to the buffer in the original Haas 1995 paper on vacuole purifications. However, we agree that the term is misleading and we have now added the composition of the buffer (10 mM PIPES/KOH pH=6.8, 0.2 M Sorbitol).
Reviewer #3 (Significance (Required)):
The vacuolar-type proton ATPase, V-ATPase, is the key proton pump, that hydrolases ATP and uses this energy to pump protons across membranes. Amazingly, this proton pump and its function are conserved in eukaryotes from yeast to mammals. While V-ATPase structure and function have been studied for more than 30 years in various organisms, its regulation is not completely understood. The very recent discoveries of two new V-ATPase interacting proteins in yeast, first Oxr1 (OXidative Resistance 1), and now Rtc5 (Restriction of Telomere Capping 5), both the only two members of TLDc (The Tre2/Bub2/Cdc16 (TBC), lysin motif (LysM), domain catalytic) proteins in yeast, provide new insights in V-ATPase regulation in yeast, and because the interaction is conserved in mammals its relevance to mammalian V-ATPases regulation as well.
TLDc proteins are best known for their role in protection from oxidative stress, in particular in yeast and in the nervous system in mammals. The discovery of the novel Rtc5-V-ATPase interaction points to the role of V-ATPase not only in protection from oxidative stress but also in restriction of telomere capping in yeast and most likely higher species. The studies of other species also highlight the possible conserved role of V-ATPase in lifespan determination and Torc1 signaling, mediated through these interactions. Thus, the discovery of this new functionally important interaction between the second TLDc family member in yeast, Rtc5, and V-ATPase will shed light on the molecular mechanisms of all these essential biological processes and pathways.
In addition, because the authors performed a comprehensive proteomics protein-protein interaction study of the purified yeast vacuole it provides a valuable resource for all researchers who study vacuoles and/or related to them lysosomes.
The follow-up functional studies using the rav1Δ strain clearly demonstrated that Rtc5 and Oxr1 disassemble V-ATPase and counteract the function of V-ATPase assembly RAVE complex in vivo in yeast. Thus, they are essentially the first discovered endogenous eukaryotic protein inhibitors of V-ATPase. Moreover, because the authors obtained the evidence that Oxr1 is the regulator of the specific subunit isoform of V-ATPase Stv1p in vivo in yeast, it suggests that different TLDc proteins may regulate different specific V-ATPase subunit isoforms in cell- and tissue-specific manner in higher eukaryotes. The mechanism of this isoform-specific regulation in yeast and other species needs further investigation in the future.
Because of the conservation of the TLDc-V-ATPase interactions, all this information can be extrapolated to higher species, all the way to humans, in whom genetic mutations in various TLDc proteins are known to cause devastating diseases and syndromes.
We are thankful to the reviewer for their positive comments about the significance of our work.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
Others could reply to the previous set of messages in the thread.
I remember listening to my cousins talk about having to input codes to talk to friends and that it was normal to learn multiple different coding languages to operate a computer. I grateful that in the 2000s we were not required to learn code as a gen z but this will always intrigue me as an individual
-
-
yegor256.github.io yegor256.github.io
-
A system is a composition of objects thatare abstractions, which hide data andexpose behavior*
Composition Abstraction Hide data Expose behavior
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
for Loops
During lab 2, I found myself wondering, "How do they expect us to accomplish this task without loops?" Loops and lists make everything in programming easier. I remember programming at North Seattle College, and Bill Barry would get mad at me for Googling something and adding it to my code. It resulted in a small deduction, but it made me realize how many lines of code lists and loops could reduce, rather than using another method that might take longer. For example, instead of using print() or display() for multiple posts before display() -> and then sleep() several times, you could use a loop to write 7 different posts and send them to Reddit, reducing 14 lines of code to 7 or fewer. Personally, I struggle with loop syntax compared to arrays and lists, and even something like file I/O. That's one reason why I decided to take this class and hopefully learn more about informatics for my next legendary essay, which hopefully doesn't get denied.
I don’t dislike Bill at all if that’s what you got from this. He was one of the most challenging professors but also rewarding. He limited which code we could use in a project, giving us tasks that would be easier with a list, array, or loop, and then emphasized the need for conciseness to reduce the number of bugs. He taught the class as if we were Microsoft employees, solving problems with a strict class style guide. One difference between his class and classes at the University of Washington is that some lines of code displayed on class slides are confusing to me because they have multiple lines that almost look identical to something you'd write in Java, when realistically in Python, you could write all of that in just a single line.
Googling introduced me to many different codes, and there are numerous ways to solve a single problem when programming. Often, there is code that isn’t pretty to look at and not as easy to read, which I think Bill wanted his students to avoid, given his background as a former Microsoft employee.
-
Lists# Many types of data on social media platforms are organized as lists, such as lists of friends or followers lists of posts lists of photos in a post lists of people who liked a post etc. The way to create a list in Python is to make a list of values, separated by commas, inside of square brackets, like this: book_authors = ["Kyle Thayer", "Susan Notess"] display(book_authors) Copy to clipboard ['Kyle Thayer', 'Susan Notess'] Copy to clipboard If we are making a list and it gets too long, Python will let us use several lines to do this: some_book_chapters = ["Intro", "Definitions", "Bots", "Data", "History of Social Media", "Authenticity"] display(some_book_chapters) Copy to clipboard ['Intro', 'Definitions', 'Bots', 'Data', 'History of Social Media', 'Authenticity'] Copy to clipboard Lists are in order, so Python let’s us use the “index” to ask for a specific entry, like the 1st, 2nd, 3rd, etc. As we stated in the Data chapter, many programming languages, for historical reasons, make a list’s first entry have index 0, it’s 2nd entry have index 1, it’s 3rd entry have index 2, etc. So if we want to see the first chapter in my some_book_chapters list, I select it by putting the index number inside square brackets ([, ]) after the variable name: first_chapter = some_book_chapters[0] display(first_chapter) Copy to clipboard 'Intro' Copy to clipboard And if I want the 4th chapter, I’d select it like this fourth_chapter = some_book_chapters[3] display(fourth_chapter) Copy to clipboard 'Data' Copy to clipboard Now, let’s say we have a list of users who liked our latest social media post: users_who_liked_our_post = ["@pretend_user_1", "@pretend_user_2", "@pretend_user_3"] Copy to clipboard What if we wanted to follow all of them? If our list was long, it would take a lot of code to pull out each one and try to follow them. But Python gives us an easy way to perform actions on all the items in a list, by using for loops. for Loops# for loops let us perform an action or a set of actions for all of the items in a list. So, if we wanted to go through all the the users that liked our tweet and display a message for each one, we could do this: for user in users_who_liked_our_post: display("Yay! " + user + " liked our post!") Copy to clipboard 'Yay! @pretend_user_1 liked our post!' Copy to clipboard 'Yay! @pretend_user_2 liked our post!' Copy to clipboard 'Yay! @pretend_user_3 liked our post!' Copy to clipboard Now, there are several things that went into making that for loop code above: Start the line with a for Make up a new variable name that will be a temporary variable to hold whichever item from the list we are doing our actions on. In this case each item in the list will be a user, so we call our variable user Then we write the word in Then we put the list that we want to go through, in this case `users_who_liked_our_post’ Then put a colon (:). In Python, a colon like this means that what comes next is a block of statements that goes together. This block of statements is indented over to indicate that it is part of the block. Then, on the next line and indented over, we have our display function that uses the user variable. This is the line of code that is repeated for each item in the list. If we want to do several actions in our loop, all we need to do is add more lines of code spaced over the same amount, like this (note: We’ll use print instead of display, which mostly work the same, but we think print happens to look a little better in this situation): for user in users_who_liked_our_post: print("Yay! " + user + " liked our post!") print("Perhaps we should follow " + user) print("We could put code here to do that!") print() Copy to clipboard Yay! @pretend_user_1 liked our post! Perhaps we should follow @pretend_user_1 We could put code here to do that! Yay! @pretend_user_2 liked our post! Perhaps we should follow @pretend_user_2 We could put code here to do that! Yay! @pretend_user_3 liked our post! Perhaps we should follow @pretend_user_3 We could put code here to do that! Copy to clipboard In the above code our for loop runs a block of code that has four statements, each doing a print. You’ll notice we added an extra blank print which makes a blank line and helps us see in the output what each loop did.
The explanation of lists and for loops in the context of social media data is highly effective and relevant. Using familiar scenarios, like handling lists of users or posts, makes the concepts of lists and iteration in Python accessible and practical. This approach not only teaches fundamental programming concepts but also illustrates their direct application in real-world scenarios, bridging the gap between theoretical learning and practical usage. It's a great example of how programming can be taught in an engaging and contextually meaningful way.
-
-
code.visualstudio.com code.visualstudio.com
-
Visual Studio Code has integrated source control management (SCM) and includes Git support out-of-the-box. Many other source control providers are available through extensions on the VS Code Marketplace
This is an excellent resource for learing about Git integration with VS Code
-
-
docdrop.org docdrop.org
-
Drag and drop a document to annotate it. Works with .pdf, .doc, .docx, .odt, .xls, .xlsx, .ods, .ppt, .pptx, .odp, .rtf, .epub and .csv files. .doc, .docx, .odt, .ppt, .pptx, .odp and .rtf are converted to .pdf. .xls and .xlsx and .ods are converted to .csv. You can also annotate PDFs inside Google Drive by authorizing Hypothes.is within your Google account. Hypothes.is PDF Annotator will be listed under the "Open with" option for PDF files upon authorization. (Uninstall). Privacy Policy. To easily open YouTube videos for annotation, use the bookmarklet. Drag this link to the bookmarks bar, or right-click/control-click to bookmark the link: DropDoc Bookmarklet The annotation functionality is enabled by Hypothes.is. The code for this site is open source. This is a personal project to explore different ideas and is maintained by Dan Whaley. I’d be delighted to hear any feedback at @dwhly. The intention is to keep the site up and running, but no guarantee around the preservation of documents is made. As an aside, annotations against PDFs or EPUBs with your Hypothes.is account, are discoverable on that PDF or EPUB regardless of its location (Background). As long as you have the original PDF somewhere, you'll always be able to see your annotations on it with Hypothes.is.
又發現Hypothes.is的Dan的創舉,改天來測試。
Drag and drop a document to annotate it,
or paste a YouTube video URL.
Works with .pdf, .doc, .docx, .odt, .xls, .xlsx, .ods, .ppt, .pptx, .odp, .rtf, .epub and .csv files. .doc, .docx, .odt, .ppt, .pptx, .odp and .rtf are converted to .pdf. .xls and .xlsx and .ods are converted to .csv.
You can also annotate PDFs inside Google Drive by authorizing Hypothes.is within your Google account.
Hypothes.is PDF Annotator will be listed under the "Open with" option for PDF files upon authorization.
To easily open YouTube videos for annotation, use the bookmarklet.
The annotation functionality is enabled by Hypothes.is. The code for this site is open source.
This is a personal project to explore different ideas and is maintained by Dan Whaley. I’d be delighted to hear any feedback at @dwhly.
-
-
journals.sagepub.com journals.sagepub.com
-
is ‘coded and coding, caused and causing’, reveal that the natural contract is legible everywhere
Der Code verbindet das Leben miteinander. Er ist nur eine von vielen Möglichkeiten durch die alles Lebendige miteinander verwandt ist.
-
ation. He refers to the detection of chemical alliances, but the discovery of a cell’s genetic code was particularly fundamental to his philosophy
Durch den genetischen Code ist Information in die Natur eingebaut. Das kann man weiterdenken in die Richtung der Koevolution.
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
The following is the authors’ response to the original reviews.
Reviewer No.1 (public)
The authors present a study focused on addressing the key challenge in drug discovery, which is the optimization of absorption and affinity properties of small molecules through in silico methods. They propose active learning as a strategy for optimizing these properties and describe the development of two novel active learning batch selection methods. The methods are tested on various public datasets with different optimization goals and sizes, and new affinity datasets are curated to provide up-todate experimental information. The authors claim that their active learning methods outperform existing batch selection methods, potentially reducing the number of experiments required to achieve the same model performance. They also emphasize the general applicability of their methods, including compatibility with popular packages like DeepChem.
Strengths:
Relevance and Importance: The study addresses a significant challenge in the field of drug discovery, highlighting the importance of optimizing the absorption and affinity properties of small molecules through in silico methods. This topic is of great interest to researchers and pharmaceutical industries.
Novelty: The development of two novel active learning batch selection methods is a commendable contribution. The study also adds value by curating new affinity datasets that provide chronological information on state-of-the-art experimental strategies.
Comprehensive Evaluation: Testing the proposed methods on multiple public datasets with varying optimization goals and sizes enhances the credibility and generalizability of the findings. The focus on comparing the performance of the new methods against existing batch selection methods further strengthens the evaluation.
Weaknesses:
Lack of Technical Details: The feedback lacks specific technical details regarding the developed active learning batch selection methods. Information such as the underlying algorithms, implementation specifics, and key design choices should be provided to enable readers to understand and evaluate the methods thoroughly.
Evaluation Metrics: The feedback does not mention the specific evaluation metrics used to assess the performance of the proposed methods. The authors should clarify the criteria employed to compare their methods against existing batch selection methods and demonstrate the statistical significance of the observed improvements.
Reproducibility: While the authors claim that their methods can be used with any package, including DeepChem, no mention is made of providing the necessary code or resources to reproduce the experiments. Including code repositories or detailed instructions would enhance the reproducibility and practical utility of the study.
Suggestion 1:
Elaborate on the Methodology: Provide an in-depth explanation of the two active learning batch selection methods, including algorithmic details, implementation considerations, and any specific assumptions made. This will enable readers to better comprehend and evaluate the proposed techniques.
Answer: We thank the reviewer for this suggestion. Following this comments we have extended the text in Methods (in Section: Batch selection via determinant maximization and Section: Approximation of the posterior distribution) and in Supporting Methods (Section: Toy example). We have also included the pseudo code for the Batch optimization method.
Suggestion 2:
Clarify Evaluation Metrics: Clearly specify the evaluation metrics employed in the study to measure the performance of the active learning methods. Additionally, conduct statistical tests to establish the significance of the improvements observed over existing batch selection methods.
Answer: Following this comment we added to Table 1 details about the way we computed the cutoff times for the different methods. We also provide more details on the statistics we performed to determine the significance of these differences.
Suggestion 3:
Enhance Reproducibility: To facilitate the reproducibility of the study, consider sharing the code, data, and resources necessary for readers to replicate the experiments. This will allow researchers in the field to validate and build upon your work more effectively.
Answer: This is something we already included with the original submission. The code is publicly available. In fact, we provide a phyton library, ALIEN (Active Learning in data Exploration) which is published on the Sanofi Github(https://github.com/ Sanofi-Public/Alien). We also provide details on the public data used and expect to provide the internal data as well. We included a small paragraph on code and data availability.
Reviewer No.2 (public)
Suggestion 1:
The authors presented a well-written manuscript describing the comparison of activelearning methods with state-of-art methods for several datasets of pharmaceutical interest. This is a very important topic since active learning is similar to a cyclic drug design campaign such as testing compounds followed by designing new ones which could be used to further tests and a new design cycle and so on. The experimental design is comprehensive and adequate for proposed comparisons. However, I would expect to see a comparison regarding other regression metrics and considering the applicability domain of models which are two essential topics for the drug design modelers community.
Answer: We want to thank the reviewer for these comments. We provide a detailed response to the specific comments below.
Reviewer No.1 (Recommendations For The Authors)
Recommendation 1:
The description provided regarding the data collection process and the benchmark datasets used in the study raises some concerns. The comment specifically addresses the use of both private (Sanofi-owned) and public datasets to benchmark the various batch selection methods. Lack of Transparency: The comment lacks transparency regarding the specific sources and origins of the private datasets. It would be crucial to disclose whether these datasets were obtained from external sources or if they were generated internally within Sanofi. Without this information, it becomes difficult to assess the potential biases or conflicts of interest associated with the data.
Answer: We would like to thank the reviewer for this comment. As mentioned in the paper, the public github page contains links to all the public data and we expect also to the internal Sanofi data. We also now provide more information on the specific experiments that were internally done by Sanofi to collect that data.
Potential Data Accessibility Issues: The utilization of private datasets, particularly those owned by Sanofi, may raise concerns about data accessibility. The lack of availability of these datasets to the wider scientific community may limit the ability of other researchers to replicate and validate the study’s findings. It is essential to ensure that the data used in research is openly accessible to foster transparency and encourage collaboration.
Answer: Again, as stated above we expect to release the data collected internally on the github page.
Limited Information on Dataset Properties: The comment briefly mentions that the benchmark datasets cover properties related to absorption, distribution, pharmacokinetic processes, and affinity of small drug molecules to target proteins. However, it does not provide any specific details about the properties included in the datasets or how they were curated. Providing more comprehensive information about the properties covered and the methods used for curation would enhance the transparency and reliability of the study.
To address these concerns, it is crucial for the authors to provide more detailed information about the data sources, dataset composition, representativeness, and curation methods employed. Transparency and accessibility of data are fundamental principles in scientific research, and addressing these issues will strengthen the credibility and impact of the study.
Answer: We agree with this comment and believe that it is important to be explicit about each of the datasets and to provide information on the new data. We note that we already discuss the details of each of the experiments in Methods and, of course, provide links to the original papers for the public data. We have now added text to Supporting Methods that describes the experiments in more details as well as providing literature references for the experimental protocols used. As noted above, we expect to provide our new internal data on the public git page.
Recommendation 2:
Some comments on the modeling example Approximation of the posterior distribution. Lack of Methodological Transparency: The comment fails to provide any information regarding the specific method or approach used for approximating the posterior distribution. Without understanding the methodology employed, it is impossible to evaluate the quality or rigor of the approximation. This lack of transparency undermines the credibility of the study.
Answer: We want to thank the reviewer for pointing this out. Based on this comment we added more information to Section: Approximation of the posterior distribution. Moreover, we now provide details on the posterior approximation in Section: Two approximations for computing the epistemic covariance.
Questionable Assumptions: The comment does not mention any of the assumptions made during the approximation process. The validity of any approximation heavily depends on the underlying assumptions, and their omission suggests a lack of thorough analysis. Failing to acknowledge these assumptions leaves room for doubt regarding the accuracy and relevance of the approximation.
Answer: We are not entirely sure which assumptions the reviewer is referring to here. The main assumption we can think of that we have used is the fact that getting within X% of the optimal model is a good enough approximation. We have specifically discussed this assumption and tested multiple values of X. While it would have been great to have X = 0 this is unrealistic for retrospective studies. For Active Learning the main question is how many experiments can be saved to obtain similar results and the assumptions we used are basically ’what is the definition of similar’. We now added this to Discussion.
Inadequate Validation: There is no mention of any validation measures or techniques used to assess the accuracy and reliability of the approximated posterior distribution. Without proper validation, it is impossible to determine whether the approximation provides a reasonable representation of the true posterior. The absence of validation raises concerns about the potential biases or errors introduced by the approximation process.
Answer: We sincerely appreciate your concern regarding the validation of the approximated posterior distribution. We acknowledge that our initial submission might not have clearly highlighted our validation strategy. It is, of course, very hard to determine the accuracy of the distribution our model learns since such distribution cannot be directly inferred using experiments (no ’ground truth’). Instead, we use an indirect method to determine the accuracy. Specifically, we conducted retrospective experiment using the learned distribution. In these experiments, we indirectly validated our approximation by measuring the error with the respective method. The results from these retrospective experiments provided evidence for the accuracy and reliability of our approximation in representing the true posterior distribution. We now emphasize this in Methods.
Uncertainty Quantification: The comment does not discuss the quantification of uncertainty associated with the approximated posterior distribution. Properly characterizing the uncertainty is crucial in statistical inference and decision-making. Neglecting this aspect undermines the usefulness and applicability of the approximation results.
Answer: Thank you for pointing out the importance of characterizing uncertainty in statistical inference and decision-making, a sentiment with which we wholeheartedly agree. In our work, we have indeed addressed the quantification of uncertainty associated with the approximated posterior distribution. Specifically, we utilized Monte Carlo Dropout (MC Dropout) as our method of choice. MC Dropout is a widely recognized and employed technique in the neural networks domain to approximate the posterior distribution, and it offers an efficient way to estimate model uncertainty without requiring any changes to the existing network architecture [1, 2]. In the revised version, we provide a more detailed discussion on the use of Monte Carlo Dropout in our methodology and its implications for characterizing uncertainty.
Comparison with Gold Standard: There is no mention of comparing the approximated posterior distribution with a gold standard or benchmark. Failing to provide such a comparison leaves doubts about the performance and accuracy of the approximation method. A lack of benchmarking makes it difficult to ascertain the superiority or inferiority of the approximation technique employed.
Answer: As noted above, it is impossible to find gold standard information for the uncertainly distribution. It is not even clear to us how such gold standard can be experimentally determined since its a function of a specific model and data. If the reviewer is aware of such gold standard we would be happy to test it. Instead, in our study, we opted to benchmark our results against state-of-the-art batch active learning methods, which also rely on uncertainty prediction (such uncertainty prediction is the heart of any active learning method as we discuss). Results clearly indicate that our method outperforms prior methods though we agree that this is only an indirect way to validate the uncertainty approximation.
Reviewer No.2 (Recommendations For The Authors)
Recommendation 1:
The text is kind of messy: there are two results sections, for example. It seems that part of the text was duplicated. Please correct it.
Answer: We want to thank the reviewer pointing this out. These were typos and we fixed them accordingly.
Recommendation 2:
Text in figures is very small and difficult to read. Please redraw the figures, increasing the font size: 10-12pt is ideal in comparison with the main text.
Answer: We want to thank the reviewer for this comment and we have made the graphics larger.
Recommendation 3: Please, include specific links to data availability instead of just stating it is available at the Sanofi-Public repository.
Answer: We want to thank the reviewer for this comment and added the links and data to the Sanofi Github page listed in the paper.
Recommendation 4:
What are the descriptors used to train the models?
Answer: We represented the molecules as molecular graphs using the MolGraphConvFeaturizer from the DeepChem library. We now explicitly mention this in Methods.
Recommendation 5:
Regarding the quality of the models, I strongly suggest two approaches instead of using only RMSE as metrics of models’ performance. I recommend using the most metrics as possible as reported by Gramatica (https://doi.org/10.1021/acs.jcim.6b00088). I also recommend somehow comparing the increment on the dataset diversity according to the employed descriptors (applicability domain) as a measurement to further applications on the unseen molecules.
Answer: We want to thank the reviewer for this great suggestions. As suggested we added new comparison metrics to the Supplement.
• Distribution plot for the range of the Y values Figure 8 • Clustering of the data sets represented as fingerprints Supplementary material Figure 5,6
• Retrospective experiments with Spearman correlation coefficient. Supplementary material Figure: 2,3,4
I suggest also a better characterization of datasets including the nature and range of the Y variable, the source of data in terms of experimentation, and chemical (structural and physicochemical) comparison of samples within each dataset.
Answer: As noted above in response to a similar comment by Reviewer 1, we have added more detailed information about the different experiments we tested to Supporting Methods.
References
[1] Yarin Gal and Zoubin Ghahramani. Dropout as a bayesian approximation: Representing model uncertainty in deep learning. In Maria Florina Balcan and Kilian Q. Weinberger, editors, Proceedings of The 33rd International Conference on Machine Learning, volume 48 of Proceedings of Machine Learning Research, pages 1050–1059, New York, New York, USA, 20–22 Jun 2016. PMLR.
[2] N.D. Lawrence. Variational Inference in Probabilistic Models. University of Cambridge, 2001.
-
Reviewer #1 (Public Review):
The authors present a study focused on addressing the key challenge in drug discovery, which is the optimization of absorption and affinity properties of small molecules through in silico methods. They propose active learning as a strategy for optimizing these properties and describe the development of two novel active learning batch selection methods. The methods are tested on various public datasets with different optimization goals and sizes, and new affinity datasets are curated to provide up-to-date experimental information. The authors claim that their active learning methods outperform existing batch selection methods, potentially reducing the number of experiments required to achieve the same model performance. They also emphasize the general applicability of their methods, including compatibility with popular packages like DeepChem.
Strengths:
Relevance and Importance: The study addresses a significant challenge in the field of drug discovery, highlighting the importance of optimizing absorption and affinity properties of small molecules through in silico methods. This topic is of great interest to researchers and pharmaceutical industries.
Novelty: The development of two novel active learning batch selection methods is a commendable contribution. The study also adds value by curating new affinity datasets that provide chronological information on state-of-the-art experimental strategies.<br /> Comprehensive Evaluation: Testing the proposed methods on multiple public datasets with varying optimization goals and sizes enhances the credibility and generalizability of the findings. The focus on comparing the performance of the new methods against existing batch selection methods further strengthens the evaluation.
Weaknesses:
Lack of Technical Details: The feedback lacks specific technical details regarding the developed active learning batch selection methods. Information such as the underlying algorithms, implementation specifics, and key design choices should be provided to enable readers to understand and evaluate the methods thoroughly.
Evaluation Metrics: The feedback does not mention the specific evaluation metrics used to assess the performance of the proposed methods. The authors should clarify the criteria employed to compare their methods against existing batch selection methods and demonstrate the statistical significance of the observed improvements.
Reproducibility: While the authors claim that their methods can be used with any package, including DeepChem, no mention is made of providing the necessary code or resources to reproduce the experiments. Including code repositories or detailed instructions would enhance the reproducibility and practical utility of the study.
Suggestions for Improvement:
Elaborate on the Methodology: Provide an in-depth explanation of the two active learning batch selection methods, including algorithmic details, implementation considerations, and any specific assumptions made. This will enable readers to better comprehend and evaluate the proposed techniques.
Clarify Evaluation Metrics: Clearly specify the evaluation metrics employed in the study to measure the performance of the active learning methods. Additionally, conduct statistical tests to establish the significance of the improvements observed over existing batch selection methods.
Enhance Reproducibility: To facilitate the reproducibility of the study, consider sharing the code, data, and resources necessary for readers to replicate the experiments. This will allow researchers in the field to validate and build upon your work more effectively.
Conclusion:<br /> The authors' study on active learning methods for optimizing drug discovery presents an important and relevant contribution to the field. The proposed batch selection methods and curated affinity datasets hold promise for improving the efficiency of drug discovery processes. However, to strengthen the study, it is crucial to provide more technical details, clarify evaluation metrics, and enhance reproducibility by sharing code and resources. Addressing these limitations will further enhance the value and impact of the research.
-
-
www.vandage.cloud www.vandage.cloud
-
primary disease code
test
-
-
www.thescottkrause.com www.thescottkrause.com
-
It's low-code, performant, responsive, and open source. Because it’s so easy to get started it is the perfect solution for quick landing pages, business accelerators, and event sites.
-
Neodigm 55 Low Code UX micro-library Scott C. Krause | Friday, Nov 25, 2022
from - https://hyp.is/HysQdrUCEe6HgDNGpn7Q4w/gist.github.com/neodigm/ffa4a9e22a5da14e2472274d476eaa55

-
-
github.com github.com
-
I code
- performant,
- functional,
- testable,
- future-proof, and
- trusted
what? - JavaScript, TypeScript, Vue, and SolidJS.
I've enchanted the UX for Abbott Laboratories, AbbVie, CDW, Corporate Express, Hyundai, Microsoft, and Sears.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
“1 apple.”
One way to solve this problem of the apples having a difference in size we could measure their dimensions, taking into consideration the apple's circumference, and diameter, or even weighing the apple. However, for simplicity, we can establish a standard size for granny smith apples given out during snack time to weigh 8 ounces per apple. This standardized approach ensures that each person receives about the same amount of apple per bite.
We could connect this to programming using the min() and man() functions and use each of the apple's weights and assign them a number based on the measurement.
apples = [8, 8, 9, 8, 7]
maximum = max(apples) print(maximum)
minimum = min(apples) print(minimum)
filtered = [apple for apple in apples if apple == 8] print(filtered)
A code that finds the min and the max apples in size and then filters them out if it doesn’t equal 8 ounces. This code should filter out and help the teachers know which apples to keep or throw out, or if you want to fool a kid just grab an apple of about the same size and cut it into smaller pieces problem solved.
-
As you can see in the apple example, any time we turn something into data, we are making a simplification.1 If we are counting the number of something, like apples, we are deciding that each one is equivalent.
This is especially important once you begin to compile your data onto a single sheet. I remember in java how we had to simplify our work down to debug each strand of code under each variable. This apple metaphor makes sense to me because of this experience.
-
-
newsletter.pragmaticengineer.com newsletter.pragmaticengineer.com
-
the specific metrics LinkedIn uses. Here are examples of those which the company focuses on:Developer Net User Satisfaction (NSAT) measures how happy developers are overall with LinkedIn’s development systems. It’s measured on a quarterly basis.Developer Build Time (P50 and P90) measures in seconds how long developers spend waiting for their builds to finish locally during development.Code Reviewer Response Time (P50 and P90) measures how long it takes, in business hours, for code reviewers to respond to each code review update from the author.Post-Commit CI Speed (P50 and P90) measures how long it takes, in minutes, for each commit to get through the continuous integration (CI) pipeline.CI Determinism is the opposite of test flakiness. It’s the likelihood a test suite’s result will be valid and not a flake.Deployment Success Rate measures how often deployments to production succeed.
The metrics LinkedIn tracks.
-
-
docs.cryptpad.org docs.cryptpad.org
-
Code / Markdown

-
-
markneumann.xyz markneumann.xyz
-
This involves a more substantial investment (time and code) than calling an API, which gives Mistral an edge in retaining users,
is this true though? HF is making transformer access a standard. plus popularity of claude and gpt suggests people cannot be bothered to install stuff
-
-
style.tidyverse.org style.tidyverse.org
-
In code, use comments to explain the “why” not the “what” or “how”.
Tags
Annotators
URL
-
-
notebooksharing.space notebooksharing.space
-
t_monthly = ds['t2m'].groupby('time.month').mean(dim='time')-273.15 max_temp = t_monthly.max() min_temp = t_monthly.min() plt.figure(figsize=(12, 24)) for i in range(1, 13): ax = plt.subplot(6, 2, i, projection=ccrs.PlateCarree()) t_monthly.sel(month=i).plot(ax=ax, transform=ccrs.PlateCarree(), add_colorbar=False, vmin=min_temp, vmax=max_temp, cmap='RdBu_r') ax.coastlines() ax.set_title('Month: {}'.format(i)) plt.tight_layout() plt.show()
you have only plotted the monthly average temperature (t_monthly). It is nice that you used the same color scale for every plot (which helps to compare the months), however, * a colorbar legend would have been nice * another additional plot would have been great that directly shows max_temp -min_temp.
Example code for that would be:
t2_cycle = ds.t2m.groupby('time.month').mean() - 273.15 ax = plt.axes(projection=ccrs.Robinson()) (t2_cycle.max(dim='month') - t2_cycle.min(dim='month')).plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'label':'$\overline{T}$ [K]'}) ax.coastlines(); ax.gridlines();
-
-
github.com github.com
-
In case you need to handle a text-only multipart form, you should use the .none() method: const express = require('express') const app = express() const multer = require('multer') const upload = multer() app.post('/profile', upload.none(), function (req, res, next) { // req.body contains the text fields }) Here's an example on how multer is used an HTML form. Take special note of the enctype="multipart/form-data" and name="uploaded_file" fields: <form action="/stats" enctype="multipart/form-data" method="post"> <div class="form-group"> <input type="file" class="form-control-file" name="uploaded_file"> <input type="text" class="form-control" placeholder="Number of speakers" name="nspeakers"> <input type="submit" value="Get me the stats!" class="btn btn-default"> </div> </form> Then in your javascript file you would add these lines to access both the file and the body. It is important that you use the name field value from the form in your upload function. This tells multer which field on the request it should look for the files in. If these fields aren't the same in the HTML form and on your server, your upload will fail: const multer = require('multer') const upload = multer({ dest: './public/data/uploads/' }) app.post('/stats', upload.single('uploaded_file'), function (req, res) { // req.file is the name of your file in the form above, here 'uploaded_file' // req.body will hold the text fields, if there were any console.log(req.file, req.body) });
Certainly! Let's break down the provided code and example in simpler terms:
Using Multer for a Text-Only Multipart Form:
- HTML Form:
- If you're dealing with a text-only multipart form, where you don't have file uploads but only text fields, you should use
upload.none().
```html <br /> <form action="/profile" enctype="multipart/form-data" method="post"> <div class="form-group"> <input type="file" class="form-control-file" name="uploaded_file"> <input type="text" class="form-control" placeholder="Number of speakers" name="nspeakers"> <input type="submit" value="Get me the stats!" class="btn btn-default"> </div> </form>
```
-
Note the
enctype="multipart/form-data"in the form, even though there is no file input. This is required for forms that might include file inputs. -
Server-Side (Using Express and Multer):
- In your Node.js server code:
```javascript const express = require('express'); const multer = require('multer'); const upload = multer();
const app = express();
// Handling a text-only multipart form app.post('/profile', upload.none(), function (req, res, next) { // req.body contains the text fields console.log(req.body); });
// Handling a text and file multipart form const fileUpload = multer({ dest: './public/data/uploads/' }); app.post('/stats', fileUpload.single('uploaded_file'), function (req, res) { // req.file is the name of your file in the form, here 'uploaded_file' // req.body will hold the text fields, if any console.log(req.file, req.body); });
app.listen(3000, () => { console.log('Server is running on port 3000'); }); ```
Summary:
- The HTML form includes both a file input (
<input type="file" name="uploaded_file">) and a text input (<input type="text" name="nspeakers">). - Even if there's no file input, using
enctype="multipart/form-data"is necessary when the form might include file inputs. - On the server side,
upload.none()middleware is used for handling text-only multipart forms. - If there is a mix of text and file inputs, you can use
multerwithfileUpload.single('uploaded_file')to handle both files and text fields. req.filewill contain the uploaded file, andreq.bodywill hold the text fields.
-
-
expressjs.com expressjs.com
-
res.json([body]) Sends a JSON response. This method sends a response (with the correct content-type) that is the parameter converted to a JSON string using JSON.stringify(). The parameter can be any JSON type, including object, array, string, Boolean, number, or null, and you can also use it to convert other values to JSON. res.json(null) res.json({ user: 'tobi' }) res.status(500).json({ error: 'message' })
Certainly! Let's break down the
res.json()method in simple terms:Purpose:
The
res.json()method in Express is used to send a JSON response to the client. It automatically sets the appropriate content-type header and converts the provided data into a JSON string usingJSON.stringify().Syntax:
javascript res.json([body]);Examples:
- Sending
nullas JSON: -
This example sends a JSON response with
nullas the content.javascript res.json(null); -
Sending an Object as JSON:
-
This example sends a JSON response with an object.
javascript res.json({ user: 'tobi' }); -
Sending JSON with a Status Code:
- You can also set an HTTP status code along with the JSON response.
javascript res.status(500).json({ error: 'message' });This example sends a JSON response with an error message and sets the HTTP status code to 500 (Internal Server Error).
Summary:
res.json()is a convenient method in Express to send JSON responses.- It automatically handles the conversion of various data types (object, array, string, Boolean, number, or null) to a JSON string.
- You can also chain it with
res.status()to set an HTTP status code along with the JSON response.
In simple terms, it's a way to tell the client that the server is responding with data in JSON format, making it easy for client applications to consume the data.
- Sending
-
-
neurokindred.com neurokindred.com
-
Phone
verification code thing not working
-
-
mongoosejs.com mongoosejs.com
-
Everything in Mongoose starts with a Schema. Each schema maps to a MongoDB collection and defines the shape of the documents within that collection. import mongoose from 'mongoose'; const { Schema } = mongoose; const blogSchema = new Schema({ title: String, // String is shorthand for {type: String} author: String, body: String, comments: [{ body: String, date: Date }], date: { type: Date, default: Date.now }, hidden: Boolean, meta: { votes: Number, favs: Number } }); If you want to add additional keys later, use the Schema#add method. Each key in our code blogSchema defines a property in our documents which will be cast to its associated SchemaType. For example, we've defined a property title which will be cast to the String SchemaType and property date which will be cast to a Date SchemaType. Notice above that if a property only requires a type, it can be specified using a shorthand notation (contrast the title property above with the date property). Keys may also be assigned nested objects containing further key/type definitions like the meta property above. This will happen whenever a key's value is a POJO that doesn't have a type property. In these cases, Mongoose only creates actual schema paths for leaves in the tree. (like meta.votes and meta.favs above), and the branches do not have actual paths. A side-effect of this is that meta above cannot have its own validation. If validation is needed up the tree, a path needs to be created up the tree - see the Subdocuments section for more information on how to do this. Also read the Mixed subsection of the SchemaTypes guide for some gotchas.
Sure, let's break it down in simpler terms.
In Mongoose, a "Schema" is like a blueprint for how your data should be organized in a MongoDB database. Imagine it as a template for creating documents (records) in a collection (similar to a table in relational databases).
Let's go through the example:
```javascript import mongoose from 'mongoose'; const { Schema } = mongoose;
// Define a schema for a blog post const blogSchema = new Schema({ title: String, author: String, body: String, comments: [{ body: String, date: Date }], date: { type: Date, default: Date.now }, hidden: Boolean, meta: { votes: Number, favs: Number } }); ```
Now, let's break it down:
- Basic Data Types:
-
title,author,body, andhiddenare properties of your blog document.Stringis the data type fortitle,author, andbody, whileBooleanis the data type forhidden. -
Array of Comments:
-
commentsis an array where each element is an object withbody(String) anddate(Date) properties. This allows you to store multiple comments in an array within your document. -
Default Date:
-
dateis a property with the typeDate, and it has a default value of the current date and time (Date.now). This means if you don't provide a date when creating a blog post, it will default to the current date and time. -
Nested Meta Object:
metais a nested object within your document. It has two properties,votes(Number) andfavs(Number). This allows you to store additional information in a structured way.
Now, let's say you want to add a new property later, you can use the
addmethod:javascript // Add a new property to the schema blogSchema.add({ tags: [String] });Here, we're adding a new property
tagswhich is an array of strings.The main takeaway is that the schema defines the structure of your documents in MongoDB, including the types of data each property should have. It helps maintain consistency in your data and allows you to enforce certain rules or defaults.
-
Instance methods Instances of Models are documents. Documents have many of their own built-in instance methods. We may also define our own custom document instance methods. // define a schema const animalSchema = new Schema({ name: String, type: String }, { // Assign a function to the "methods" object of our animalSchema through schema options. // By following this approach, there is no need to create a separate TS type to define the type of the instance functions. methods: { findSimilarTypes(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); } } }); // Or, assign a function to the "methods" object of our animalSchema animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); }; Now all of our animal instances have a findSimilarTypes method available to them. const Animal = mongoose.model('Animal', animalSchema); const dog = new Animal({ type: 'dog' }); dog.findSimilarTypes((err, dogs) => { console.log(dogs); // woof }); Overwriting a default mongoose document method may lead to unpredictable results. See this for more details. The example above uses the Schema.methods object directly to save an instance method. You can also use the Schema.method() helper as described here. Do not declare methods using ES6 arrow functions (=>). Arrow functions explicitly prevent binding this, so your method will not have access to the document and the above examples will not work.
Certainly! Let's break down the provided code snippets:
1. What is it and why is it used?
In Mongoose, a schema is a blueprint for defining the structure of documents within a collection. When you define a schema, you can also attach methods to it. These methods become instance methods, meaning they are available on the individual documents (instances) created from that schema.
Instance methods are useful for encapsulating functionality related to a specific document or model instance. They allow you to define custom behavior that can be executed on a specific document. In the given example, the
findSimilarTypesmethod is added to instances of theAnimalmodel, making it easy to find other animals of the same type.2. Syntax:
Using
methodsobject directly in the schema options:javascript const animalSchema = new Schema( { name: String, type: String }, { methods: { findSimilarTypes(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); } } } );Using
methodsobject directly in the schema:javascript animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); };Using
Schema.method()helper:javascript animalSchema.method('findSimilarTypes', function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); });3. Explanation in Simple Words with Examples:
Why it's Used:
Imagine you have a collection of animals in your database, and you want to find other animals of the same type. Instead of writing the same logic repeatedly, you can define a method that can be called on each animal instance to find similar types. This helps in keeping your code DRY (Don't Repeat Yourself) and makes it easier to maintain.
Example:
```javascript const mongoose = require('mongoose'); const { Schema } = mongoose;
// Define a schema with a custom instance method const animalSchema = new Schema({ name: String, type: String });
// Add a custom instance method to find similar types animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); };
// Create the Animal model using the schema const Animal = mongoose.model('Animal', animalSchema);
// Create an instance of Animal const dog = new Animal({ type: 'dog', name: 'Buddy' });
// Use the custom method to find similar types dog.findSimilarTypes((err, similarAnimals) => { console.log(similarAnimals); }); ```
In this example,
findSimilarTypesis a custom instance method added to theAnimalschema. When you create an instance of theAnimalmodel (e.g., a dog), you can then callfindSimilarTypeson that instance to find other animals with the same type. The method uses thethis.typeproperty, which refers to the type of the current animal instance. This allows you to easily reuse the logic for finding similar types across different instances of theAnimalmodel.
Tags
Annotators
URL
-
-
expressjs.com expressjs.com
-
Third-party middleware Use third-party middleware to add functionality to Express apps. Install the Node.js module for the required functionality, then load it in your app at the application level or at the router level. The following example illustrates installing and loading the cookie-parsing middleware function cookie-parser. $ npm install cookie-parser const express = require('express') const app = express() const cookieParser = require('cookie-parser') // load the cookie-parsing middleware app.use(cookieParser()) For a partial list of third-party middleware functions that are commonly used with Express, see: Third-party middleware.
Let's break down the concept of third-party middleware in Express with a simple explanation and an example.
What is Third-Party Middleware?
Third-party middleware in Express refers to middleware functions that are not built into Express itself but are created by external developers to extend its functionality. These middleware functions can be added to your Express application to provide additional features or handle specific tasks.
Example Using
cookie-parser:- Install the Module:
- Use npm to install the
cookie-parsermodule.
bash $ npm install cookie-parser- Load and Use the Middleware:
- In your Express application, require and load the
cookie-parsermiddleware.
```javascript const express = require('express'); const app = express(); const cookieParser = require('cookie-parser');
// Load the cookie-parsing middleware app.use(cookieParser()); ```
-
This middleware is now integrated into your Express application.
-
Use the Middleware in Your Routes:
- Now, you can use the functionality provided by
cookie-parserin your routes.
```javascript app.get('/', (req, res) => { // Access cookies using the middleware const userCookie = req.cookies.user;
// Your route logic here res.send(`Welcome, ${userCookie || 'Guest'}!`);}); ```
- In this example,
cookie-parserallows you to access cookies in thereq.cookiesobject.
Why Use Third-Party Middleware?
-
Extended Functionality: Third-party middleware adds specialized functionality to your Express application, such as parsing cookies, handling authentication, logging, etc.
-
Modularity: Using third-party middleware allows you to keep your code modular and focus on building features without reinventing the wheel for common tasks.
-
Community Contributions: Many third-party middleware modules are created and maintained by the community, ensuring reliable and well-tested solutions.
In summary, third-party middleware in Express enables you to enhance your application with additional features and functionalities developed by the broader community. Always check the documentation of each middleware module for usage details and customization options.
-
Router-level middleware Router-level middleware works in the same way as application-level middleware, except it is bound to an instance of express.Router(). const router = express.Router() Load router-level middleware by using the router.use() and router.METHOD() functions. The following example code replicates the middleware system that is shown above for application-level middleware, by using router-level middleware: const express = require('express') const app = express() const router = express.Router() // a middleware function with no mount path. This code is executed for every request to the router router.use((req, res, next) => { console.log('Time:', Date.now()) next() }) // a middleware sub-stack shows request info for any type of HTTP request to the /user/:id path router.use('/user/:id', (req, res, next) => { console.log('Request URL:', req.originalUrl) next() }, (req, res, next) => { console.log('Request Type:', req.method) next() }) // a middleware sub-stack that handles GET requests to the /user/:id path router.get('/user/:id', (req, res, next) => { // if the user ID is 0, skip to the next router if (req.params.id === '0') next('route') // otherwise pass control to the next middleware function in this stack else next() }, (req, res, next) => { // render a regular page res.render('regular') }) // handler for the /user/:id path, which renders a special page router.get('/user/:id', (req, res, next) => { console.log(req.params.id) res.render('special') }) // mount the router on the app app.use('/', router) To skip the rest of the router’s middleware functions, call next('router') to pass control back out of the router instance. This example shows a middleware sub-stack that handles GET requests to the /user/:id path. const express = require('express') const app = express() const router = express.Router() // predicate the router with a check and bail out when needed router.use((req, res, next) => { if (!req.headers['x-auth']) return next('router') next() }) router.get('/user/:id', (req, res) => { res.send('hello, user!') }) // use the router and 401 anything falling through app.use('/admin', router, (req, res) => { res.sendStatus(401) })
Certainly! Let's break down the concept of router-level middleware in Express with simple explanations and examples.
1. Basic Router-Level Middleware:
- Router-level middleware works similarly to application-level middleware but is bound to an instance of
express.Router().
```javascript const express = require('express'); const app = express(); const router = express.Router();
// Middleware function without a mount path, executed for every request to the router router.use((req, res, next) => { console.log('Time:', Date.now()); next(); });
app.use('/', router); // Mount the router on the app ```
In this example, the middleware function logs the current time for every request to the router.
2. Middleware Sub-Stack with Router-Level Middleware:
- Define a middleware sub-stack for a specific path within the router.
javascript router.use('/user/:id', (req, res, next) => { console.log('Request URL:', req.originalUrl); next(); }, (req, res, next) => { console.log('Request Type:', req.method); next(); });Here, the middleware sub-stack prints request info for any type of HTTP request to the '/user/:id' path.
3. Router-Level Middleware with Different Routes:
- Define middleware sub-stacks for different routes within the router.
```javascript router.get('/user/:id', (req, res, next) => { if (req.params.id === '0') next('route'); // Skip to the next route if user ID is '0' else next(); // Pass control to the next middleware }, (req, res, next) => { res.render('regular'); // Render a regular page });
router.get('/user/:id', (req, res, next) => { res.render('special'); // Render a special page for the /user/:id path }); ```
In this example, the first middleware checks the user ID and either skips to the next route or renders a regular page. The second middleware renders a special page for the '/user/:id' path.
4. Skipping Router Middleware:
- Use
next('router')to skip the rest of the router’s middleware functions and pass control back out of the router instance.
```javascript router.use((req, res, next) => { if (!req.headers['x-auth']) return next('router'); // Bail out if 'x-auth' header is missing next(); });
router.get('/user/:id', (req, res) => { res.send('hello, user!'); });
app.use('/admin', router, (req, res) => { res.sendStatus(401); // Send a 401 response for anything falling through }); ```
In this example, the router is predicated with a check, and if the 'x-auth' header is missing, it skips the rest of the router’s middleware functions.
In summary, router-level middleware in Express allows you to organize and modularize your routes and their associated middleware. It provides a way to handle middleware specific to a router instance, making your code more modular and maintainable.
- Router-level middleware works similarly to application-level middleware but is bound to an instance of
-
Application-level middleware Bind application-level middleware to an instance of the app object by using the app.use() and app.METHOD() functions, where METHOD is the HTTP method of the request that the middleware function handles (such as GET, PUT, or POST) in lowercase. This example shows a middleware function with no mount path. The function is executed every time the app receives a request. const express = require('express') const app = express() app.use((req, res, next) => { console.log('Time:', Date.now()) next() }) This example shows a middleware function mounted on the /user/:id path. The function is executed for any type of HTTP request on the /user/:id path. app.use('/user/:id', (req, res, next) => { console.log('Request Type:', req.method) next() }) This example shows a route and its handler function (middleware system). The function handles GET requests to the /user/:id path. app.get('/user/:id', (req, res, next) => { res.send('USER') }) Here is an example of loading a series of middleware functions at a mount point, with a mount path. It illustrates a middleware sub-stack that prints request info for any type of HTTP request to the /user/:id path. app.use('/user/:id', (req, res, next) => { console.log('Request URL:', req.originalUrl) next() }, (req, res, next) => { console.log('Request Type:', req.method) next() }) Route handlers enable you to define multiple routes for a path. The example below defines two routes for GET requests to the /user/:id path. The second route will not cause any problems, but it will never get called because the first route ends the request-response cycle. This example shows a middleware sub-stack that handles GET requests to the /user/:id path. app.get('/user/:id', (req, res, next) => { console.log('ID:', req.params.id) next() }, (req, res, next) => { res.send('User Info') }) // handler for the /user/:id path, which prints the user ID app.get('/user/:id', (req, res, next) => { res.send(req.params.id) }) To skip the rest of the middleware functions from a router middleware stack, call next('route') to pass control to the next route. NOTE: next('route') will work only in middleware functions that were loaded by using the app.METHOD() or router.METHOD() functions. This example shows a middleware sub-stack that handles GET requests to the /user/:id path. app.get('/user/:id', (req, res, next) => { // if the user ID is 0, skip to the next route if (req.params.id === '0') next('route') // otherwise pass the control to the next middleware function in this stack else next() }, (req, res, next) => { // send a regular response res.send('regular') }) // handler for the /user/:id path, which sends a special response app.get('/user/:id', (req, res, next) => { res.send('special') }) Middleware can also be declared in an array for reusability. This example shows an array with a middleware sub-stack that handles GET requests to the /user/:id path function logOriginalUrl (req, res, next) { console.log('Request URL:', req.originalUrl) next() } function logMethod (req, res, next) { console.log('Request Type:', req.method) next() } const logStuff = [logOriginalUrl, logMethod] app.get('/user/:id', logStuff, (req, res, next) => { res.send('User Info') })
Certainly! Let's break down the concepts of application-level middleware in Express with simple explanations and examples.
1. Basic Application-level Middleware:
- This middleware runs for every incoming request to your application.
```javascript const express = require('express'); const app = express();
app.use((req, res, next) => { console.log('Time:', Date.now()); next(); }); ```
In this example, every time a request is received, it logs the current time.
2. Application-level Middleware with a Mount Path:
- You can specify a path for the middleware to apply to.
javascript app.use('/user/:id', (req, res, next) => { console.log('Request Type:', req.method); next(); });Here, the middleware only runs for requests to paths starting with '/user/:id'.
3. Route Handlers with Middleware:
- Express allows you to define route handlers for specific HTTP methods.
javascript app.get('/user/:id', (req, res, next) => { res.send('USER'); });This handles GET requests to the '/user/:id' path and sends the response 'USER'.
4. Middleware Sub-Stack with Mount Path:
- You can create a sub-stack of middleware functions for a specific path.
javascript app.use('/user/:id', (req, res, next) => { console.log('Request URL:', req.originalUrl); next(); }, (req, res, next) => { console.log('Request Type:', req.method); next(); });This example prints request info for any type of HTTP request to the '/user/:id' path.
5. Route Handlers with Middleware Sub-Stack:
- Define multiple middleware functions for a single route.
javascript app.get('/user/:id', (req, res, next) => { console.log('ID:', req.params.id); next(); }, (req, res, next) => { res.send('User Info'); });In this case, the first middleware prints the user ID, and the second one sends the response 'User Info'.
6. Skipping Middleware with
next('route'):- You can skip the rest of the middleware functions using
next('route')and pass control to the next route.
```javascript app.get('/user/:id', (req, res, next) => { if (req.params.id === '0') next('route'); else next(); }, (req, res, next) => { res.send('regular'); });
app.get('/user/:id', (req, res, next) => { res.send('special'); }); ```
If the user ID is '0', it skips to the next route; otherwise, it sends a regular or special response.
7. Middleware in an Array for Reusability:
- Middleware can be declared in an array for reuse.
```javascript function logOriginalUrl(req, res, next) { console.log('Request URL:', req.originalUrl); next(); }
function logMethod(req, res, next) { console.log('Request Type:', req.method); next(); }
const logStuff = [logOriginalUrl, logMethod]; app.get('/user/:id', logStuff, (req, res, next) => { res.send('User Info'); }); ```
In this example, the middleware functions
logOriginalUrlandlogMethodare reusable and applied to the '/user/:id' route.In summary, application-level middleware in Express allows you to handle requests, modify them, and control their flow. You can use it for various tasks and organize your code effectively.
-
Using middleware Express is a routing and middleware web framework that has minimal functionality of its own: An Express application is essentially a series of middleware function calls. Middleware functions are functions that have access to the request object (req), the response object (res), and the next middleware function in the application’s request-response cycle. The next middleware function is commonly denoted by a variable named next. Middleware functions can perform the following tasks: Execute any code. Make changes to the request and the response objects. End the request-response cycle. Call the next middleware function in the stack. If the current middleware function does not end the request-response cycle, it must call next() to pass control to the next middleware function. Otherwise, the request will be left hanging. An Express application can use the following types of middleware: Application-level middleware Router-level middleware Error-handling middleware Built-in middleware Third-party middleware You can load application-level and router-level middleware with an optional mount path. You can also load a series of middleware functions together, which creates a sub-stack of the middleware system at a mount point.
In Express, the sequence of middleware execution is crucial for controlling the flow of the request-response cycle. The order in which you define and use middleware determines how they are executed. Here's the general rule:
- Application-level Middleware:
- Middleware defined using
app.use()is executed in the order it's defined in your code.
```javascript // Example of application-level middleware app.use((req, res, next) => { console.log('Middleware 1'); next(); });
app.use((req, res, next) => { console.log('Middleware 2'); next(); }); ```
In this example, "Middleware 1" will execute before "Middleware 2".
- Router-level Middleware:
- Similar to application-level middleware, the order of middleware in the code defines the execution order.
```javascript // Example of router-level middleware const router = express.Router();
router.use((req, res, next) => { console.log('Router Middleware 1'); next(); });
router.use((req, res, next) => { console.log('Router Middleware 2'); next(); }); ```
In this example, "Router Middleware 1" will execute before "Router Middleware 2" for routes under this router.
- Error-handling Middleware:
- Error-handling middleware should be defined last after all other middleware and route handlers.
javascript // Example of error-handling middleware app.use((err, req, res, next) => { console.error(err); res.status(500).send('Something went wrong!'); });Error-handling middleware will only be executed if there is an error thrown during the request-response cycle.
- Built-in Middleware:
- Built-in middleware is often automatically applied in the order they are required.
javascript // Example of using built-in middleware app.use(express.json()); // Body parsing middleware app.use(express.static('public')); // Serving static filesThe order in which you invoke these built-in middleware functions matters.
- Third-party Middleware:
- Third-party middleware is also executed in the order you apply it.
javascript // Example of using third-party middleware const passport = require('passport'); app.use(passport.initialize()); // Initialize passport middlewareThe order in which you load third-party middleware influences their execution.
In summary, the sequence of middleware execution is based on the order in which you define and apply them. This allows you to control the flow of the request through the various stages of processing in your Express application. Sure, let's break down the concept of middleware in Express with simple words and examples.
1. What is Middleware?
Middleware is like a set of functions in Express that can do various tasks during the processing of a web request. These tasks can include modifying the request or response, executing some code, or controlling the flow of the request.
2. Types of Middleware:
a. Application-level Middleware:
These are applied to the entire Express application. They are executed for every incoming request.
javascript // Example of application-level middleware app.use((req, res, next) => { console.log('This runs for every request!'); next(); // Move on to the next middleware });b. Router-level Middleware:
Similar to application-level middleware but only applies to specific routes.
```javascript // Example of router-level middleware const router = express.Router();
router.use((req, res, next) => { console.log('This runs for routes under this router!'); next(); });
router.get('/route1', (req, res) => { // Route-specific logic }); ```
c. Error-handling Middleware:
Special middleware to handle errors during the request-response cycle.
javascript // Example of error-handling middleware app.use((err, req, res, next) => { console.error(err); res.status(500).send('Something went wrong!'); });d. Built-in Middleware:
Express has some built-in middleware for common tasks.
javascript // Example of built-in middleware (parsing JSON in the request body) app.use(express.json());e. Third-party Middleware:
Additional middleware created by third-party developers to extend Express functionality.
javascript // Example of using third-party middleware (e.g., for handling authentication) const passport = require('passport'); app.use(passport.initialize());3. How Middleware Works:
- Each middleware function has access to the request (
req) and response (res) objects. - They can perform tasks, modify the request or response, and decide whether to end the request-response cycle or pass control to the next middleware.
- If a middleware function doesn't end the cycle, it must call
next()to pass control to the next middleware in line.
4. Middleware Loading:
- You can load middleware at the application or router level.
- Middleware can be loaded with an optional mount path, defining where it should be applied.
javascript // Example of loading middleware with a mount path app.use('/admin', adminMiddleware);This means that
adminMiddlewarewill only be executed for routes starting with '/admin'.In summary, middleware in Express is like a chain of functions that can modify requests and responses. They're powerful for handling various tasks and keeping your code organized.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
Binary consisting of 0s and 1s make it easy to represent true and false values, where 1 often represents true and 0 represents false. Most programming languages have built-in ways of representing True and False values.
The Booleans is what I have learned in my CSE class too. This kind of code is to come out as true or false in a statement. I have only learned when it apply on math, but I don't know what else can this do.
-
-
github.com github.com
-
WebTorrent is a streaming torrent client for node.js and the browser. YEP, THAT'S RIGHT. THE BROWSER. It's written completely in JavaScript – the language of the web – so the same code works in both runtimes.
WebNative
all you need is a browser
-
-
github.com github.com
-
async (recommended) const bcrypt = require('bcrypt'); const saltRounds = 10; const myPlaintextPassword = 's0/\/\P4$$w0rD'; const someOtherPlaintextPassword = 'not_bacon'; To hash a password: Technique 1 (generate a salt and hash on separate function calls): bcrypt.genSalt(saltRounds, function(err, salt) { bcrypt.hash(myPlaintextPassword, salt, function(err, hash) { // Store hash in your password DB. }); }); Technique 2 (auto-gen a salt and hash): bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash) { // Store hash in your password DB. }); Note that both techniques achieve the same end-result.
Certainly! The code you provided demonstrates how to use the
bcryptlibrary in Node.js to hash passwords. The examples use both the technique of generating a salt and hashing in separate steps, as well as the technique of auto-generating a salt and hashing in a single step. Let's break it down:Technique 1: Generate a Salt and Hash on Separate Function Calls
```javascript const bcrypt = require('bcrypt'); const saltRounds = 10; const myPlaintextPassword = 's0/\/\P4$$w0rD';
// Step 1: Generate a salt bcrypt.genSalt(saltRounds, function(err, salt) { if (err) { // Handle error console.error(err); } else { // Step 2: Hash the plaintext password with the generated salt bcrypt.hash(myPlaintextPassword, salt, function(err, hash) { if (err) { // Handle error console.error(err); } else { // Step 3: Store the hash in your password database // In a real application, you would typically store 'hash' in your database. console.log('Hashed Password:', hash); } }); } }); ```
Technique 2: Auto-generate a Salt and Hash
```javascript const bcrypt = require('bcrypt'); const saltRounds = 10; const myPlaintextPassword = 's0/\/\P4$$w0rD';
// Auto-generate a salt and hash the plaintext password bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash) { if (err) { // Handle error console.error(err); } else { // Store the hash in your password database // In a real application, you would typically store 'hash' in your database. console.log('Hashed Password:', hash); } }); ```
Explanation:
- Generate a Salt:
-
bcrypt.genSalt(saltRounds, callback): This function generates a salt to be used during hashing. ThesaltRoundsparameter defines the cost factor of the hashing process (higher value means more secure but slower). The salt is then passed to the callback function. -
Hashing with Generated Salt:
-
bcrypt.hash(myPlaintextPassword, salt, callback): This function hashes the plaintext password using the generated salt. The resulting hash is passed to the callback function. -
Auto-generate Salt and Hash:
bcrypt.hash(myPlaintextPassword, saltRounds, callback): This function auto-generates a salt and then immediately hashes the plaintext password with that salt. The resulting hash is passed to the callback function.
Both techniques achieve the same end result: a hashed password. The auto-generate approach is more concise and is often preferred for simplicity, but it's essential to understand that either method is valid based on your application's needs. In a real-world scenario, you would typically store the resulting hash in your password database for later authentication checks.
-
A library to help you hash passwords. You can read about bcrypt in Wikipedia as well as in the following article: How To Safely Store A Password If You Are Submitting Bugs or Issues Please verify that the NodeJS version you are using is a stable version; Unstable versions are currently not supported and issues created while using an unstable version will be closed. If you are on a stable version of NodeJS, please provide a sufficient code snippet or log files for installation issues. The code snippet does not require you to include confidential information. However, it must provide enough information so the problem can be replicable, or it may be closed without an explanation.
Certainly! Let's cover the information you've requested:
1. What is
bcryptand why is it used?-
What is
bcrypt?bcryptis a library used for securely hashing passwords. Hashing is a one-way process that converts a plain-text password into a fixed-length string of characters. It's designed to be computationally intensive and slow, which makes it resistant to brute-force attacks. -
Why is it used? Storing passwords as plain text is a security risk. If a database is compromised, attackers can easily access user passwords. Hashing passwords with
bcryptadds a layer of security by making it extremely difficult and time-consuming for attackers to reverse-engineer the original passwords. It includes features like salting (adding random data to each password before hashing) to further enhance security.
2. Syntax:
-
Installation: You need to install
bcryptusing npm (Node Package Manager). Open your terminal and run:npm install bcrypt -
Usage in JavaScript/Node.js: ```javascript const bcrypt = require('bcrypt');
// Example: Hashing a password const plainPassword = 'mySecurePassword';
bcrypt.hash(plainPassword, 10, function(err, hash) { if (err) { console.error(err); } else { console.log('Hashed Password:', hash); } });
// Example: Comparing a password with a hashed password const hashedPasswordFromDatabase = '$2b$10$...'; // Replace with an actual hashed password
bcrypt.compare('userEnteredPassword', hashedPasswordFromDatabase, function(err, result) { if (err) { console.error(err); } else { console.log('Password Match:', result); } });
`` -bcrypt.hash(plainPassword, saltRounds, callback): Hashes theplainPasswordusing the specified number ofsaltRoundsand provides the result in thecallback. -bcrypt.compare(userEnteredPassword, hashedPasswordFromDatabase, callback): Compares a user-entered password with a hashed password retrieved from the database and provides the result in thecallback`.3. Examples:
Example 1: Hashing a Password
```javascript const bcrypt = require('bcrypt');
const plainPassword = 'mySecurePassword';
bcrypt.hash(plainPassword, 10, function(err, hash) { if (err) { console.error(err); } else { console.log('Hashed Password:', hash); } }); ```
Example 2: Comparing a Password
```javascript const bcrypt = require('bcrypt');
const hashedPasswordFromDatabase = '$2b$10$...'; // Replace with an actual hashed password
bcrypt.compare('userEnteredPassword', hashedPasswordFromDatabase, function(err, result) { if (err) { console.error(err); } else { console.log('Password Match:', result); } }); ```
In these examples,
bcrypt.hashis used to hash a password, andbcrypt.compareis used to compare a user-entered password with a hashed password retrieved from the database. The callback functions handle errors and provide the results of the operations. -
-
-
mongoosejs.com mongoosejs.com
-
Pre Pre middleware functions are executed one after another, when each middleware calls next. const schema = new Schema({ /* ... */ }); schema.pre('save', function(next) { // do stuff next(); }); In mongoose 5.x, instead of calling next() manually, you can use a function that returns a promise. In particular, you can use async/await. schema.pre('save', function() { return doStuff(). then(() => doMoreStuff()); }); // Or, in Node.js >= 7.6.0: schema.pre('save', async function() { await doStuff(); await doMoreStuff(); }); If you use next(), the next() call does not stop the rest of the code in your middleware function from executing. Use the early return pattern to prevent the rest of your middleware function from running when you call next(). const schema = new Schema({ /* ... */ }); schema.pre('save', function(next) { if (foo()) { console.log('calling next!'); // `return next();` will make sure the rest of this function doesn't run /* return */ next(); } // Unless you comment out the `return` above, 'after next' will print console.log('after next'); }); Use Cases Middleware are useful for atomizing model logic. Here are some other ideas: complex validation removing dependent documents (removing a user removes all their blogposts) asynchronous defaults asynchronous tasks that a certain action triggers Errors in Pre Hooks If any pre hook errors out, mongoose will not execute subsequent middleware or the hooked function. Mongoose will instead pass an error to the callback and/or reject the returned promise. There are several ways to report an error in middleware: schema.pre('save', function(next) { const err = new Error('something went wrong'); // If you call `next()` with an argument, that argument is assumed to be // an error. next(err); }); schema.pre('save', function() { // You can also return a promise that rejects return new Promise((resolve, reject) => { reject(new Error('something went wrong')); }); }); schema.pre('save', function() { // You can also throw a synchronous error throw new Error('something went wrong'); }); schema.pre('save', async function() { await Promise.resolve(); // You can also throw an error in an `async` function throw new Error('something went wrong'); }); // later... // Changes will not be persisted to MongoDB because a pre hook errored out myDoc.save(function(err) { console.log(err.message); // something went wrong }); Calling next() multiple times is a no-op. If you call next() with an error err1 and then throw an error err2, mongoose will report err1. Post
Certainly! Let's break down the provided code snippets, explain the syntax, its use, and illustrate how to use them with examples.
Syntax Explanation:
Middleware Registration:
javascript schema.pre('save', function(next) { // middleware logic next(); });schema.pre('save', ...): This registers a middleware function that runs before the 'save' operation on a Mongoose model.function(next) {...}: This is the middleware function. It takes anextparameter, which is a function that you should call to proceed to the next middleware or the actual save operation.
Using Promises:
javascript schema.pre('save', function() { return doStuff() .then(() => doMoreStuff()); });- Instead of manually calling
next(), you can return a promise from the middleware. The next middleware or the save operation will proceed once the promise is resolved.
Using async/await:
javascript schema.pre('save', async function() { await doStuff(); await doMoreStuff(); });- With Node.js versions >= 7.6.0, you can use
async/awaitto make asynchronous code more readable. Eachawaitpauses execution until the asynchronous operation is completed.
Early Return Pattern:
javascript schema.pre('save', function(next) { if (foo()) { console.log('calling next!'); return next(); } console.log('after next'); });- If a condition (
foo()) is met, thereturn next();statement prevents the rest of the middleware function from executing.
Error Handling:
```javascript schema.pre('save', function(next) { const err = new Error('something went wrong'); next(err); });
schema.pre('save', function() { return new Promise((resolve, reject) => { reject(new Error('something went wrong')); }); });
schema.pre('save', function() { throw new Error('something went wrong'); });
schema.pre('save', async function() { throw new Error('something went wrong'); }); ```
- Different ways to handle errors in middleware, including passing an error to
next, returning a rejected promise, throwing synchronous errors, and throwing errors in anasyncfunction.
Use in Simple Words with Examples:
Middleware Example:
Suppose you have a
Usermodel, and before saving a user, you want to hash their password.```javascript const mongoose = require('mongoose'); const Schema = mongoose.Schema;
const userSchema = new Schema({ username: String, password: String, });
userSchema.pre('save', async function() { // Assuming hashPassword is an asynchronous function this.password = await hashPassword(this.password); });
const User = mongoose.model('User', userSchema);
const newUser = new User({ username: 'john_doe', password: 'my_secure_password', });
newUser.save(); // The 'save' middleware will automatically hash the password before saving. ```
Error Handling Example:
Suppose you want to validate the email format before saving a
Postmodel.```javascript const mongoose = require('mongoose'); const Schema = mongoose.Schema;
const postSchema = new Schema({ title: String, content: String, email: String, });
postSchema.pre('save', function(next) { const emailRegex = /\S+@\S+.\S+/; if (!emailRegex.test(this.email)) { const err = new Error('Invalid email format'); return next(err); // If the email format is invalid, the save operation will not proceed. } next(); // Proceed with the save operation if the email format is valid. });
const Post = mongoose.model('Post', postSchema);
const newPost = new Post({ title: 'Introduction to Middleware', content: 'Middleware is awesome!', email: 'invalid_email', // This will trigger the error handling in the 'save' middleware. });
newPost.save(function(err) { console.log(err.message); // Outputs: Invalid email format }); ```
In summary, Mongoose middleware allows you to execute logic before or after certain operations (e.g., saving to the database) on your models. It's a powerful tool for organizing and encapsulating your application's logic in a clean and modular way.
-
-
openclassrooms.com openclassrooms.com
-
Même si vous n'êtes pas familier de ce système, on vous accompagnera dans votre utilisation au fur et à mesure, en vous donnant directement le lien sur lequel trouver le code, donc pas de panique !
mercii!
-
-
engl201.opened.ca engl201.opened.ca
-
Do you have to knowhow to code [to be a digital humanist]? I’m a tenured professor of digital humanitiesand I say ‘yes.’ . . . Personally, I think Digital Humanities is about building things.
I find this stance to be a form of gatekeeping, and reductive. Quality is of course important, but I find it very frustrating that as soon as something becomes associated with "academics" or "scholarship," people immediately begin limiting who can do it and why, as if severely restricting its practice will keep it "pure" or "better."
-
how to code
I wonder how long ago this was- there are many ways to create digitally now that don't require that skill. That or he's just being a gatekeeper.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
I think social media and bots can coexist more fluidly in the future due to shortcomings with code not being able to decipher bots with malicious intent versus bots that help us. Big corporations don't have the ability to capitalize on useful bots yet and as a result, usually punish those using them with no harm intended (using a bot to delete posts from a third-party app can get you penalized on instagram).
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
These pauses may come in handy when posting tweets, to make it look like your bot is taking time to type in the text.
In a more complex bot, I could see think working wonders. I wonder how useful it is if you're typing your responses in your own code already. Wouldn't that just make you look like a slow writer? I'm curious to see if there's any way to make the bot type with a certain tone or on specific topics.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
In order to understand how a bot is built and can work, we will now look at the different ways computer programs can be organized. We will cover a bunch of examples quickly here, to hopefully give you an idea of many options for how to write a program. Don’t worry if you don’t follow all of it, as we will go back over these one at a time in more detail throughout the book. In this section, we will not show actual Python computer programs (that will be in the next section). Instead, here we will focus on what programmers call “psuedocode,” which is a human language outline of a program. Psuedocode is intended to be easier to read and write. Pseudocode is often used by programmers to plan how they want their programs to work, and once the programmer is somewhat confident in their pseudocode, they will then try to write it in actual programming language code.
I think the primary goal of pseudocode is to focus on the algorithm's fundamental logic without becoming bogged down by the syntax of a specific programming language is interesting. It acts as a bridge between the problem-solving and coding phases.
-
Sometimes in programming, we want to group several steps (i.e., statements) together. When we group these steps together we call it a code “block.” These blocks of code often used with conditionals (e.g., if this condition is true, do these five steps), and with loops (e.g., for each of these items, do these five steps).
In the context of conditionals, code blocks provide a clear structure to articulate actions based on specific conditions. For example, if a particular condition is met, executing a series of steps encapsulated within a code block becomes more readable and maintainable. Likewise, in the case of loops, code blocks facilitate the repetition of a set of statements for each iteration. This not only streamlines the code but also contributes to its comprehensibility. Understanding the significance of code blocks is essential for proficient programming, as it allows developers to write more organized, modular, and comprehensible code, contributing to better software design and maintenance.
-
-
www.fda.gov www.fda.gov
-
21 CFR Section
This is the Code of Federal Regulations that governs food and drugs within the United States for the FDA, the Drug Enforcement Administration (DEA), and the Office of National Drug Control Policy (ONDCP).
-
-
www.theodinproject.com www.theodinproject.com
-
You should take care, however, to make sure that your individual objects can stand alone as much as possible. Tightly coupled objects are objects that rely so heavily on each other that removing or changing one will mean that you have to completely change another one - a real bummer.
Isn't there a conflict between this principle and code reusability?
-
-
www.biorxiv.org www.biorxiv.org
-
Reviewer #2 (Public Review):
Summary:<br /> This study from Bamgbose et al. identifies a new and important interaction between H4K20me and Parp1 that regulates inducible genes during development and heat stress. The authors present convincing experiments that form a mostly complete manuscript that significantly contributes to our understanding of how Parp1 associates with target genes to regulate their expression.
Strengths:<br /> The authors present 3 compelling experiments to support the interaction between Parp1 and H4K20me, including:
1) PR-Set7 mutants remove all K4K20me and phenocopy Parp mutant developmental arrest and defective heat shock protein induction.
2) PR-Set7 mutants have dramatically reduced Parp1 association with chromatin and reduced poly-ADP ribosylation.
3) Parp1 directly binds H4K20me in vitro.
Weaknesses:<br /> 1) The histone array experiment in Fig1 strongly suggests that PARP binds to all mono-methylated histone residues (including H3K27, which is not discussed). Phosphorylation of nearby residues sometimes blocks this binding (S10 and T11 modifications block binding to K9me1, and S28P blocks binding to K27me1). However, H3S3P did not block H3K4me1, which may be worth highlighting. The H3K9me2/3 "blocking effect" is not nearly as strong as some of these other modifications, yet the authors chose to focus on it. Rather than focusing on subtle effects and the possibility that PARP "reads" a "histone code," the authors should consider focusing on the simple but dramatic observation that PARP binds pretty much all mono-methylated histone residues. This result is interesting because nucleosome mono-methylation is normally found on nucleosomes with high turnover rates (Chory et al. Mol Cell 2019)- which mostly occurs at promoters and highly transcribed genes. The author's binding experiments could help to partially explain this correlation because PARP could both bind mono-methylated nucleosomes and then further promote their turnover and lower methylation state.
2) The RNAseq analysis of Parp1/PR-Set7 mutants is reasonable, but there is a caveat to the author's conclusion (Line 251): "our results indicate H4K20me1 may be required for PARP-1 binding to preferentially repress metabolic genes and activate genes involved in neuron development at co-enriched genes." An alternative possibility is that many of the gene expression changes are indirect consequences of altered development induced by Parp1 or PR-Set7 mutants. For example, Parp1 could activate a transcription factor that represses the metabolic genes that they mention. The authors should consider discussing this possibility.
3) The section on the inducibility of heat shock genes is interesting but missing an important control that might significantly alter the author's conclusions. Hsp23 and Hsp83 (group B genes) are transcribed without heat shock, which likely explains why they have H4K20me without heat shock. The authors made the reasonable hypothesis that this H4K20me would recruit Parp-1 upon heat shock (line 270). However, they observed a decrease of H4K20me upon heat shock, which led them to conclude that "H4K20me may not be necessary for Parp1 binding/activation" (line 275). However, their RNA expression data (Fig4A) argues that both Parp1 and H40K20me are important for activation. An alternative possibility is that group B genes indeed recruit Parp1 (through H4K20me) upon heat shock, but then Parp1 promotes H3/H4 dissociation from group B genes. If Parp1 depletes H4, it will also deplete H4K20me1. To address this possibility, the authors should also do a ChIP for total H4 and plot both the raw signal of H4K20me1 and total H4 as well as the ratio of these signals. The authors could also note that Group A genes may similarly recruit Parp1 and deplete H3/H4 but with different kinetics than Group B genes because their basal state lacks H4K20me/Parp1. To test this possibility, the authors could measure Parp association, H4K20methylation, and H4 depletion at more time points after heat shock at both classes of genes.
-
-
gitlab.com gitlab.com
-
Thank you all for the detailed feedback. I want to emphasize we value your feedback. We believe it is a huge advantage for us to be able create GitLab transparently here in the community, with your contributions, whether they be ideas and analysis here or in actual code. Thank you for your excitement and passion.
-
(I grant that many of us contribute code to Gitlab, and would also like to participate as members of the development team in guiding the implementations, but clearly the core team has to have the final say in what direction that takes... unless someone wants to create and maintain their own fork of Gitlab ;) )
-
-
www.en.integrals.ge www.en.integrals.ge
-
SEO optimization is a marketing discipline focused on increasing the visibility of a website in search engines such as google, yandex, bing search engines. SEO includes both the technical and creative elements necessary to improve website rankings, customer traffic, and visibility in search engines. There are many aspects to improve SEO, site optimization.
SEO optimization is a marketing discipline focused on increasing the visibility of a website in search engines, such as Google, Yandex and Bing. SEO includes both the technical and the creative elements needed to improve website rankings, customer traffic, and visibility in search engines. There are many aspects to SEO enhancement and site optimization. Some of them include: * Site loading speed * Heading separation * Image optimization, title and markup * Site code structure and minimization * Keywords and word cloud * Using Google, Yandex and Bing provided tools
-
-
gitlab.com gitlab.com
-
By abstracting code away from "Files" and "Lines" we can offer more nuanced views like "Repeated Code Blocks" that could be refactored.
-
we should break down and MR into "Blocks"
-
Code block Metadata block Note block MR block (we should still be able to interact with the MR as a whole thing, e.g. leaving a generic comment on the whole thing)
-
-
ipfs.indy0.net ipfs.indy0.net
-
Need to click on the highlighted item in the outline docs.lansa.com_14_en_lansa015_index.htm
LANSA's RDML (Rapid Development and Maintenance Language) allows you to create a High Level Application Definition or abstraction of your business application. This definition is independent of the operating platform. Defining logic with a 4GL makes your programs independent of the 3GL layer. A 4GL will eventually generate some type of 3GL code which is compiled and executed, but you never need to modify the generated 3GL. In fact, it should not matter which 3GL is used. A High Level Application Definition should allow you to generate or regenerate the same applications in different languages to make your applications portable.
This is why you use a 4GL/RDML:
- High Productivity (Reduce Backlog): A single RDML command can replace hundreds of lines of 3GL code.
- Reduce Maintenance Effort: High level constructs and less code make maintenance much easier.
- Platform Independent Definition: RDML can be generated into multiple languages to support multiple platforms.
- Portable & Durable: RDML is platform independent and can be extended, without impacting development, as 3GL languages improve and change.
- Focus on Business Application Logic: RDML is easy to use so that you can focus on the business logic instead of the programming language.
As your business and technology changes, LANSA's RDML protects your application programming efforts.
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
The following is the authors’ response to the original reviews.
eLife assessment
This important study combines genetically barcoded rabies viruses with spatial transcriptomics in vivo in the mouse brain to decode connectivity of neural circuits. The data generated by the combination of these approaches in this new way is mostly convincing as the authors provide validation and proof-of-concept that the approach can be successful. While this new combination of established techniques has promise for elucidating brain connectivity, there are still some nuances and caveats to the interpretations of the results that are lacking especially with regards to noting unexpected barcodes either due to unexpected/novel connections or unexpected rabies spread.
In this revised manuscript, we added a new control experiment and additional analyses to address two main questions from the reviewers: (1) How the threshold of glycoprotein transcript counts used to identify source cells was determined, and (2) whether the limited long-range labeling was expected in the trans-synaptic experiment. The new experiments and analyses validated the distribution of source cells and presynaptic cells observed in the original barcoded transsynaptic tracing experiment and validated the choice of the threshold of glycoprotein transcripts. As the reviewers suggested, we also included additional discussion on how future experiments can improve upon this study, including strategies to improve source cell survival and minimizing viral infection caused by leaky expression of TVA. We also provided additional clarification on the analyses for both the retrograde labeling experiment and the trans-synaptic tracing experiment. We modified the Results and Discussion sections on the trans-synaptic tracing experiment to improve clarity to general readers. Detailed changes to address specific comments by reviewers are included below.
Public Reviews:
Reviewer #1 (Public Review):
In this preprint, Zhang et al. describe a new tool for mapping the connectivity of mouse neurons. Essentially, the tool leverages the known peculiar infection capabilities of Rabies virus: once injected into a specific site in the brain, this virus has the capability to "walk upstream" the neural circuits, both within cells and across cells: on one hand, the virus can enter from a nerve terminal and infect retrogradely the cell body of the same cell (retrograde transport). On the other hand, the virus can also spread to the presynaptic partners of the initial target cells, via retrograde viral transmission.
Similarly to previously published approaches with other viruses, the authors engineer a complex library of viral variants, each carrying a unique sequence ('barcode'), so they can uniquely label and distinguish independent infection events and their specific presynaptic connections, and show that it is possible to read these barcodes in-situ, producing spatial connectivity maps. They also show that it is possible to read these barcodes together with endogenous mRNAs, and that this allows spatial mapping of cell types together with anatomical connectivity.
The main novelty of this work lies in the combined use of rabies virus for retrograde labeling together with barcoding and in-situ readout. Previous studies had used rabies virus for retrograde labeling, albeit with low multiplexing capabilities, so only a handful of circuits could be traced at the same time. Other studies had instead used barcoded viral libraries for connectivity mapping, but mostly focused on the use of different viruses for labeling individual projections (anterograde tracing) and never used a retrograde-infective virus.
The authors creatively merge these two bits of technology into a powerful genetic tool, and extensively and convincingly validate its performance against known anatomical knowledge. The authors also do a very good job at highlighting and discussing potential points of failure in the methods.
We thank the reviewer for the enthusiastic comments.
Unresolved questions, which more broadly affect also other viral-labeling methods, are for example how to deal with uneven tropism (ie. if the virus is unable or inefficient in infecting some specific parts of the brain), or how to prevent the cytotoxicity induced by the high levels of viral replication and expression, which will tend to produce "no source networks", neural circuits whose initial cell can't be identified because it's dead. This last point is particularly relevant for in-situ based approaches: while high expression levels are desirable for the particular barcode detection chemistry the authors chose to use (gap-filling), they are also potentially detrimental for cell survival, and risk producing extensive cell death (which indeed the authors single out as a detectable pitfall in their analysis). This is likely to be one of the major optimisation challenges for future implementations of these types of barcoding approaches.
As the reviewer suggested, we included additional discussion about tropism and cytotoxicity in the revised Discussion. Our sensitivity for barcode detection is sufficient, since we estimated (based on manual proofreading) that most barcoded neurons had more than ten counts of a barcode in the trans-synaptic tracing experiment. The high sensitivity may potentially allow us to adapt next-generation rabies virus with low replication, such as the third generation ΔL rabies virus (Jin et al, 2022, biorxiv) in future optimizations.
Overall the paper is well balanced, the data are well presented and the conclusions are strongly supported by the data. Impact-wise, the method is definitely going to be useful for the neurobiology research community.
We thank the reviewer for her/his enthusiasm.
Reviewer #2 (Public Review):
Although the trans-synaptic tracing method mediated by the rabies virus (RV) has been widely utilized to infer input connectivity across the brain to a genetically defined population in mice, the analysis of labeled pre-synaptic neurons in terms of cell-type has been primarily reliant on classical low-throughput histochemical techniques. In this study, the authors made a significant advance toward high-throughput transcriptomic (TC) cell typing by both dissociated single-cell RNAseq and the spatial TC method known as BARseq to decode a vast array of molecularly labeled ("barcoded") RV vector library. First, they demonstrated that a barcoded-RV vector can be employed as a simple retrograde tracer akin to AAVretro. Second, they provided a theoretical classification of neural networks at the single-cell resolution that can be attained through barcoded-RV and concluded that the identification of the vast majority (ideally 100%) of starter cells (the origin of RV-based trans-synaptic tracing) is essential for the inference of single-cell resolution neural connectivity. Taking this into consideration, the authors opted for the BARseq-based spatial TC that could, in principle, capture all the starter cells. Finally, they demonstrated the proof-of-concept in the somatosensory cortex, including infrared connectivity from 381 putative pre-synaptic partners to 31 uniquely barcoded-starter cells, as well as many insightful estimations of input convergence at the cell-type resolution in vivo. While the manuscript encompasses significant technical and theoretical advances, it may be challenging for the general readers of eLife to comprehend. The following comments are offered to enhance the manuscript's clarity and readability.
We modified the Results and Discussion sections on the trans-synaptic tracing experiment to improve clarity to general readers. We separated out the theoretical discussion about barcode sharing networks as a separate subsection, explicitly stated the rationale of how different barcode sharing networks are distinguished in the in situ trans-synaptic tracing experiment, and added additional discussion on future optimizations. Detailed descriptions are provided below.
Major points:
- I find it difficult to comprehend the rationale behind labeling inhibitory neurons in the VISp through long-distance retrograde labeling from the VISal or Thalamus (Fig. 2F, I and Fig. S3) since long-distance projectors in the cortex are nearly 100% excitatory neurons. It is also unclear why such a large number of inhibitory neurons was labeled at a long distance through RV vector injections into the RSP/SC or VISal (Fig. 3K). Furthermore, a significant number of inhibitory starter cells in the somatosensory cortex was generated based on their projection to the striatum (Fig. 5H), which is unexpected given our current understanding of the cortico-striatum projections.
The labeling of inhibitory neurons can be explained by several factors in the three different experiments.
(1) In the scRNAseq-based retrograde labeling experiment (Fig. 2 and Fig. S3), the injection site VISal is adjacent to VISp. Because we dissected VISp for single-cell RNAseq, we may find labeled inhibitory neurons at the VISp border that extend short axons into VISal. We explained this in the revised Results.
(2) In the in situ sequencing-based retrograde labeling experiment (Fig. 3,4), the proximity between the two injection sites VISal and RSP/SC, and the sequenced areas (which included not only VISp but also RSP) could also contribute to labeling through local axons of inhibitory neurons. Furthermore, because we also sequenced midbrain regions, inhibitory neurons in the superior colliculus could pick up the barcodes through local axons. We included an explanation of this in the revised Results.
(3) In the trans-synaptic tracing experiment, we speculate that low level leaky expression from the TREtight promoter led to non-Cre-dependent expression in many neurons. To test this hypothesis, we first performed a control injection in which we saw that the fluorescent protein expression were indeed restricted to layer 5, as expected from corticostriatal labeling. Based on the labeling pattern, we estimated that about 12 copies of the glycoprotein transcript per cell would likely be needed to achieve fluorescent protein expression. Since many source cells in our experiment were below this threshold, these results support the hypothesis that the majority of source cells with low level expression of the glycoprotein were likely Cre-independent. Because these cells could still contribute to barcode sharing networks, we could not exclude them as in a conventional bulk trans-synaptic tracing experiment. In future experiments, we can potentially reduce this population by improving the helper AAV viruses used to express TVA and the glycoprotein. We included this explanation in Results and more detailed analysis in Supplementary Note 2, and discussed potential future optimizations in the Discussion. This new analysis in Supplementary Note 2 is also related to the Reviewer’s question regarding the threshold used for determining source cells (see below).
- It is unclear as to why the authors did not perform an analysis of the barcodes in Fig. 2. Given that the primary objective of this manuscript is to evaluate the effectiveness of multiplexing barcoded technology in RV vectors, I would strongly recommend that the authors provide a detailed description of the barcode data here, including any technical difficulties or limitations encountered, which will be of great value in the future design of RV-barcode technologies. In case the barcode data are not included in Fig. 2, I would suggest that the authors consider excluding Fig. 2 and Fig. S1-S3 in their entirety from the manuscript to enhance its readability for general readers.
In the single-cell RNAseq-based retrograde tracing, all barcodes recovered matched to known barcodes in the corresponding library. We included a short description of these results in the revised manuscript.
- Regarding the trans-synaptic tracing utilizing a barcoded RV vector in conjunction with BARseq decoding (Fig. 5), which is the core of this manuscript, I have a few specific questions/comments. First, the rationale behind defining cells with only two rolonies counts of rabies glycoprotein (RG) as starter cells is unclear. Why did the authors not analyze the sample based on the colocalization of GFP (from the AAV) and mCherry (from the RV) proteins, which is a conventional method to define starter cells? If this approach is technically difficult, the authors could provide an independent histochemical assessment of the detection stringency of GFP positive cells based on two or more colonies of RG.
In situ sequencing does not preserve fluorescent protein signals, so we used transcript counts to determine which cells expressed the glycoprotein. We have added new analyses in the Results and in Supplementary Note 2 to determine the transcript counts that were equivalent to cells that had detectable BFP expression. We found that BFP expression is equivalent to ~12 counts of the glycoprotein transcript per cell, which is much higher than the threshold we used. However, we could not solely rely on this estimate to define the source cells, because cells that had lower expression of the glycoprotein (possibly from leaky Cre-independent expression) may still pass the barcodes to presynaptic cells. This can lead to an underestimation of double-labeled and connected-source networks and an overestimation of single-source networks and can obscure synaptic connectivity at the cellular resolution. We thus used a very conservative threshold of two transcripts in the analysis. This conservative threshold will likely overestimate the number of source cells that shared barcodes and underestimate the number of single-source networks. Since this is a first study of barcoded transsynaptic tracing in vivo, we chose to err on the conservative side to make sure that the subsequent analysis has single-cell resolution. Future characterization and optimization may lead to a better threshold to fully utilize data.
Second, it is difficult to interpret the proportion of the 2,914 barcoded cells that were linked to barcoded starter cells (single-source, double-labeled, or connected-source) and those that remained orphan (no-source or lost-source). A simple table or bar graph representation would be helpful. The abundance of the no-source network (resulting from Cre-independent initial infection of the RV vector) can be estimated in independent negative control experiments that omit either Cre injection or AAV-RG injection. The latter, if combined with BARseq decoding, can provide an experimental prediction of the frequency of double-labeled events since connected-source networks are not labeled in the absence of RG.
We have added Table 2, which breaks down the 2,914 barcoded cells based on whether they are presynaptic or source cells, and which type of network they belong to. We agree with the reviewer that the additional Cre- or RG- control experiments in parallel would allow an independent estimate of the double labeled networks and the no-source networks. We have included added a discussion of possible controls to further optimize the trans-synaptic tracing approach in future studies in the Discussion.
Third, I would appreciate more quantitative data on the putative single-source network (Fig. 5I and S6) in terms of the distribution of pre- and post-synaptic TC cell types. The majority of labeling appeared to occur locally, with only two thalamic neurons observed in sample 25311842 (Fig. S6). How many instances of long-distance labeling (for example, > 500 microns away from the injection site) were observed in total? Is this low efficiency of long-distance labeling expected based on the utilized combinations of AAVs and RV vectors? A simple independent RV tracing solely detecting mCherry would be useful for evaluating the labeling efficiency of the method. I have experienced similar "less jump" RV tracing when RV particles were prepared in a single step, as this study did, rather than multiple rounds of amplification in traditional protocols, such as Osakada F et al Nat Protocol 2013.
We imaged an animal that was injected in parallel to assess labeling (now included in Supplementary Note 2 and Supp. Fig. S5). The labeling pattern in the newly imaged animal was largely consistent with the results from the barcoded experiment: most labeled neurons were seen in the vicinity of the injection site, and sparser labeling was seen in other cortical areas and the thalamus. We further found that most neurons that were labeled in the thalamus were about 1 mm posterior to the center of the injection site, and thus would not have been sequenced in the in situ sequencing experiment (in which we sequenced about 640 µm of tissue spanning the injection site).
In addition, we found that the bulk of the cells that expressed mCherry from the rabies virus only partially overlapped with the area that contained cells co-expressing BFP with the rabies glycoprotein. Moreover, very few cells co-expressed mCherry and BFP, which would be considered source cells in a conventional mono-synaptic tracing experiment. The small numbers of source cells likely also contributed to the sparseness of long-range labeling in the barcoded experiment.
These interpretations and comparisons to the barcoded experiment are now included in Supplementary Note 2.
Reviewer #3 (Public Review):
The manuscript by Zhang and colleagues attempts to combine genetically barcoded rabies viruses with spatial transcriptomics in order to genetically identify connected pairs. The major shortcoming with the application of a barcoded rabies virus, as reported by 2 groups prior, is that with the high dropout rate inherent in single cell procedures, it is difficult to definitively identify connected pairs. By combining the two methods, they are able to establish a platform for doing that, and provide insight into connectivity, as well as pros and cons of their method, which is well thought out and balanced.
Overall the manuscript is well-done, but I have a few minor considerations about tone and accuracy of statements, as well as some limitations in how experiments were done. First, the idea of using rabies to obtain broader tropism than AAVs isn't really accurate - each virus has its own set of tropisms, and it isn't clear that rabies is broader (or can be made to be broader).
As the reviewer suggested, we toned down this claim and stated that rabies virus has different tropism to complement AAV.
Second, rabies does not label all neurons that project to a target site - it labels some fraction of them.
We meant to say that retrograde labeling is not restricted to labeling neurons from a certain brain region. We have clarified in the text.
Third, the high rate of rabies virus mutation should be considered - if it is, or is not a problem in detecting barcodes with high fidelity, this should be noted.
Our analysis showed that sequencing 15 bases was sufficient to tolerate a small number of mismatches in the barcode sequences and could distinguish real barcodes from random sequences (Fig. 4A). Thus, we can tolerate mutations in the barcode sequence. We have clarified this in the text.
Fourth, there are a number of implicit assumptions in this manuscript, not all of which are equally backed up by data. For example, it is not clear that all rabies virus transmission is synaptic specific; in fact, quite a few studies argue that it is not (e.g., detection of rabies transcripts in glial cells). Thus, arguments about lost-source networks and the idea that if a cell is lost from the network, that will stop synaptic transmission, is not clear. There is also the very real propensity that, the sicker a starter cell gets, the more non-specific spread of virus (e.g., via necrosis) occurs.
We agree with the reviewer that how strictly virus transmission is restricted to synapses remains a hotly debated question in the field, and this question is relevant not only to techniques based on barcoded rabies tracing, but to all trans-synaptic tracing experiments. A barcoding-based approach can generate single-cell data that enable direct comparison to other data modalities that measure synaptic connectivity, such as multi-patch and EM. These future experiments may provide additional insights into the questions that the reviewer raised. We have included additional discussion about how non-synaptic transmission of barcodes because of the necrosis of source cells may affect the analysis in the Discussion.
Regarding the scenario in which the source cell dies, we agree with the reviewer and have clarified in the revised manuscript.
Fifth, in the experiments performed in Figure 5, the authors used a FLEx-TVA expressed via a retrograde Cre, and followed this by injection of their rabies virus library. The issue here is that there will be many (potentially thousands) of local infection events near the injection site that TVA-mediated but are Cre-dependent (=off-target expression of TVA in the absence of Cre). This is a major confound in interpreting the labeling of these cells. They may express very low levels of TVA, but still have infection be mediated by TVA. The authors did not clearly explore how expression of TVA related to rabies virus infection of cells near the rabies injection site. A modified version of TVA, such as 66T, should have been used to mitigate this issue. Otherwise, it is impossible to determine connectivity locally. The authors do not go to great lengths to interpret the findings of these observations, so I am not sure this is a critical issue, but it should be pointed out by the authors as a caveat to their dataset.
We agree with the reviewer that this type of infection could potentially be a major contributor to no-source networks, which were abundant in our experiment. Because small no-source networks were excluded from our analyses, and large no-source networks were only included for barcodes with low frequency (i.e., it would be nearly impossible statistically to generate such large no-source networks from independent infections), we believe that the effect of independent infections on our analyses were minimized. We have added a control experiment in Fig S5 and Supplementary Note 2, which further supported the hypothesis that there were many independent infections. We also included additional discussion about how this can be assessed and optimized in future studies in the Discussion.
Sixth, the authors are making estimates of rabies spread by comparison to a set of experiments that was performed quite differently. In the two studies cited (Liu et al., done the standard way, and Wertz et al., tracing from a single cell), the authors were likely infecting with a rabies virus using a high multiplicity of infection, which likely yields higher rates of viral expression in these starter cells and higher levels of input labeling. However, in these experiments, the authors need to infect with a low MOI, and explicitly exclude cells with >1 barcode. Having only a single virion trigger infection of starter cells will likely reduce the #s of inputs relative to starter neurons. Thus, the stringent criteria for excluding small networks may not be entirely warranted. If the authors wish to only explore larger networks, this caveat should be explicitly noted.
In the trans-synaptic labeling experiment, we actually used high rabies titer (200 nL, 7.6e10 iu/mL) that was comparable to conventional rabies tracing experiments. We did not exclude cells with multiple barcodes (as opposed to barcodes in multiple source cells), because we could resolve multiple barcodes in the same cell and indeed found many cells with multiple barcodes. We have clarified this in the text.
Overall, if the caveats above are noted and more nuance is added to some of the interpretation and discussion of results, this would greatly help the manuscript, as readers will be looking to the authors as the authority on how to use this technology.
In addition to addressing the specific concerns of the reviewer as described above, we modified the Results and Discussion sections on the trans-synaptic tracing experiment to improve clarity to general readers and expanded the discussion on future optimizations.
Reviewer #1 (Recommendations For The Authors):
The scientific problem is clearly stated and well laid out, the data are clearly presented, and the experiments well justified and nicely discussed. It was overall a very enjoyable read. The figures are generally nice and clear, however, I find the legends excessively concise. A bit too often, they just sort of introduce the title of the panel rather than a proper explanation of what it is depicted. A clear case is for example visible in Fig 2, where the description of the panels is minimal, but this is a general trend of the manuscript. This makes the figures a bit hard to follow as self-contained entities, without having to continuously go back to the main text. I think this could be improved with longer and more helpful descriptions.
We have revised all figure legends to make them more descriptive.
Other minor things:
In the cDNA synthesis step for in-situ sequencing, I believe the authors might have forgotten one detail: the addition of aminoallyl dUTP to the RT reaction. If I recall correctly this is done in BARseq. The fact that the authors crosslink with BS-PEG on day 2, makes me suspect they spike in these nucleotides during the RT but this is not specified in the relevant step. Perhaps this is a mistake that needs correction.
The RT primers we used have an amine group at 5’, which directly allows crosslinking. Thus, we did not need to spike in aminoallyl dUTP in the RT reaction. We have clarified this in the Methods.
Reviewer #2 (Recommendations For The Authors):
Throughout the manuscript, there are frequent references to the "Methods" section for important details. However, it can be challenging to determine which specific section of the Methods the authors are referring to, and in some cases, a thorough examination of the entire Methods section fails to locate the exact information needed to support the authors' claims. Below are a few specific examples of this issue. The authors are encouraged to be more precise in their references to the Methods section.
In the revised manuscript, we numbered each subsection of Methods and updated pointers and associated hyperlinks in the main text to the subsection numbers.
- On page 7, line 14, it is unclear how the authors compared the cell marker gene expression with the marker gene expression in the reference cell type.
We have clarified in the revised manuscript.
- On page 7, line 33, the authors note that some barcodes may have been missed during the sequencing of the rabies virus libraries, but the Methods section lacked a convincing explanation on this issue (see my point 2 above).
We included a separate subsection on the sequencing of rabies libraries and the analysis of the sequencing depth in the Methods. In this new subsection, we further clarified our reasoning for identifying the lack of sequencing depth as a reason for missing barcodes, especially in comparison to sequencing depth required for establishing exact molecule counts used in established MAPseq and BARseq techniques with Sindbis libraries.
- On page 9, line 44, the authors state that they considered a barcode to be associated with a cell if they found at least six molecules of that barcode in a cell, as detailed in the Methods section. However, the rationale behind this level of stringency is not provided in the Methods.
We initially chose this threshold based on visual inspection of the sequencing images of the barcoded cells. Because the labeled cell types were consistent with our expectations (Fig. 4E-G), we did not further optimize the threshold for detecting retrogradely labeled barcoded cells.
- I have noticed that some important explanations of figure panels are missing in the legends, making it challenging to understand the figures. Below are typical examples of this issue.
In addition to the examples that the reviewer mentioned below, we also revised many other figure panels to make them clear to the readers.
- In Fig. 2, "RV into SC" in panel C does not make sense, as RV was injected into the thalamus. There is no explanation of the images in this panel C.
We have corrected the typo in the revision.
- In Fig. 3, information on the endogenous gene panel for cell type classification (Table S3) could be mentioned in the legend or corresponding text.
We now cite Table S3 both in Fig 3 legend and in the main text. We also included a list of the 104 cell type marker genes we used in Table S3.
- In panel J, it is unclear why the total number of BC cells is 2,752, and not 4,130 as mentioned in the text.
This is a typo. We have corrected this in the revision. The correct number (3,746) refers to the number of cells that did not belong to either of the two categories at the bottom of the panel, and not the total number of neurons. To make this clear, we now also include the total number of barcoded cells at the top of the panel.
- In Fig. 4, the definitions of "+" and "−" symbols in panels K and L are unclear. Also, it seems that the second left column of panel K should read "T −."
We corrected the typo in K, further clarified the “Area” labels, and changed the “S” label in 4K to “−”. This change does not change the original meaning of the figure: when considering the variance explained in L4/5 IT neurons, considering the subclass compositional profile is equivalent to not using the compositional profiles of cell types, because L4/5 IT neurons all belong to the same subclass (L4/5 IT subclass). Although operationally we simply considered subclass-level compositional profiles when calculating the variance explained, we think that changing this to “−” is clearer for the readers.
- In Fig. 5, panel E is uninterpretable.
We revised the main text and the figure to clarify how we manually proofread cells to determine the QC thresholds for barcoded cells. These plots showed a summary of the proofreading. We also revised the figures to indicate that they showed the fraction of barcoded cells that were considered real after proofreading. In the revised version, we moved these plots to Fig. S5.
- In Fig. S1, I do not understand the identity of the six samples on the X-axis of panel A (given that only two animals were described in the main text) and what panel B shows, including the definition of map_cluster_conf and map_cluster_corr.
In the revised Fig. S1, we made it more explicit that the six animals include both animals used for retrograde tracing (2 animals) and those used for trans-synaptic tracing (4 animals). We updated the y axis labels to be more readable and cited the relevant Methods section for definitions.
- In Fig. S2, please provide the definitions of blue and red dots and values in panel A, as well as the color codes and size of the circles in panel B. My overall impression from panel B is that there is no significant difference between RV-infected and non-infected cells. The authors should provide more quantitative and statistical support for the claim that "RV-infected cells had higher expression of immune response-related genes."
We toned down the statement to “Consistent with previous studies […], some immune response related genes were up-regulated in virus-infected cells compared to non-infected cells.” Because the main point of the single-cell RNAseq analysis was that rabies did not affect the ability to distinguish transcriptomic types, the change in immune response-related genes was not essential to the main conclusions. We clarified the red and blue dots in panel A and changed panel B to show the top up-regulated immune response-related genes in the revised manuscript.
- In Fig. S3, the definitions of the color code and circle size are missing.
We have added the legends in Fig. S3.
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
response to ethical debt article: Mentions that tech came at the age of speed and growth. It came swiftly with progress in mind, hand in hand with historical capitalsitic values. The consquence of this is technology being designed around these principles creating a lasting echo if its intentions. In other words the reason why there are so many adverse affects or vulnerabilities like zoom bombing is because ethics werent a part of the conversation originally because that wouldnt allow a programmer or engineer to finish their work faster. Ethics and other questions complicate a binary question of how to code a specific program with an element that is subjective like ethics. I wonder if any theories have comments on if a computer can practice ethics.
-
-
www.biorxiv.org www.biorxiv.org
-
Reviewer #3 (Public Review):
Summary:<br /> This paper presents evidence from three behavioral experiments that causal impressions of "launching events", in which one object is perceived to cause another object to move, depending on motion direction-selective processing. Specifically, the work uses an adaptation paradigm (Rolfs et al., 2013), presenting repetitive patterns of events matching certain features to a single retinal location, then measuring subsequent perceptual reports of a test display in which the degree of overlap between two discs was varied, and participants could respond "launch" or "pass". The three experiments report results of adapting to motion direction, motion speed, and "object identity", and examine how the psychometric curves for causal reports shift in these conditions depending on the similarity of the adapter and test. While causality reports in the test display were selective for motion direction (Experiment 1), they were not selective for adapter-test speed differences (Experiment 2) nor for changes in object identity induced via color swap (Experiment 3). These results support the notion that causal perception is computed (in part) at relatively early stages of sensory processing, possibly even independently of or prior to computations of object identity.
Strengths:<br /> The setup of the research question and hypotheses is exceptional. The experiments are carefully performed (appropriate equipment, and careful control of eye movements). The slip adaptor is a really nice control condition and effectively mitigates the need to control motion direction with a drifting grating or similar. Participants were measured with sufficient precision, and a power curve analysis was conducted to determine the sample size. Data analysis and statistical quantification are appropriate. Data and analysis code are shared on publication, in keeping with open science principles. The paper is concise and well-written.
Weaknesses:<br /> The biggest uncertainty I have in interpreting the results is the relationship between the task and the assumption that the results tell us about causality impressions. The experimental logic assumes that "pass" reports are always non-causal impressions and "launch" reports are always causal impressions. This logic is inherited from Rolfs et al (2013) and Kominsky & Scholl (2020), who assert rather than measure this. However, other evidence suggests that this assumption might not be solid (Bechlivanidis et al., 2019). Specifically, "[our experiments] reveal strong causal impressions upon first encounter with collision-like sequences that the literature typically labels "non-causal"" (Bechlivanidis et al., 2019) -- including a condition that is similar to the current "pass". It is therefore possible that participants' "pass" reports could also involve causal experiences.
Furthermore, since the only report options are "launch" or "pass", it is also possible that "launch" reports are not indications of "I experienced a causal event" but rather "I did not experience a pass event". It seems possible to me that different adaptation transfer effects (e.g. selectivity to motion direction, speed, or color-swapping) change the way that participants interpret the task, or the uncertainty of their impression. For example, it could be that adaptation increases the likelihood of experiencing a "pass" event in a direction-selective manner, without changing causal impressions. Increases of "pass" impressions (or at least, uncertainty around what was experienced) would produce a leftward shift in the PSE as reported in Experiment 1, but this does not necessarily mean that experiences of causal events changed. Thus, changes in the PSEs between the conditions in the different experiments may not directly reflect changes in causal impressions. I would like the authors to clarify the extent to which these concerns call their conclusions into question.
Leaving these concerns aside, I am also left wondering about the functional significance of these specialised mechanisms. Why would direction matter but speed and object identity not? Surely object identity, in particular, should be relevant to real-world interpretations and inputs of these visual routines? Is color simply too weak an identity?
References:
Bechlivanidis, C., Schlottmann, A., & Lagnado, D. A. (2019). Causation without realism. Journal of Experimental Psychology: General, 148(5), 785-804. https://doi.org/10.1037/xge0000602
Kominsky, J. F., & Scholl, B. J. (2020). Retinotopic adaptation reveals distinct categories of causal perception. Cognition, 203, 104339.
Rolfs, M., Dambacher, M., & Cavanagh, P. (2013). Visual Adaptation of the Perception of Causality. Current Biology, 23(3), 250-254. https://doi.org/10.1016/j.cub.2012.12.017
-
-
openclassrooms.com openclassrooms.com
-
Regardez ce que ça donne avec le CodePen P2C2b.
Petite erreur dans le HTML de code pen extra-light et light sont tous les deux égal à 200. C'est également le cas dans "Jouez avec les différentes propriétés..."
-
-
gitlab.com gitlab.com
-
As a positive example of where this works well: Our VS Code GitLab Workflow extension allows users to not only see comments that were written inside the GitLab UI, but also allows these users to respond to these comments right from the IDE, the tool where they actually have to make these changes.
-
-
minutestomidnight.co.uk minutestomidnight.co.uk
-
None of them have a marketing department gaslighting their customers or plastering ads everywhere.
Viewing a marketing department as wasteful is dangerous. Marketing -- ideally -- exists to identify product-market-fit - to identify customer niches that a company can cater towards and push all parts of the company to more carefully fulfill those needs.
Is this what happens in practice? Not at many large companies. Is it still necessary to yell louder than paid products to find user adoption? Absolutely.
Having the time and knowledge to explore pioneering, ethical software is a privilege and perspective that not many people have. Mastodon never caught on with non-technical people during this movement of people in the past year. Ask someone who doesn't code how they find out what tool they use, and they probably heard it from a friend who saw an ad for it on the internet.
-
-
mhweiner.medium.com mhweiner.medium.com
-
programmers not fully understanding all the possible states their code may execute in
"Out of the Tar Pit" https://curtclifton.net/papers/MoseleyMarks06a.pdf explains it well
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
When someone wants a computer to perform a task (that hasn’t already been programmed), a human programmer will act as a translator to translate that task into a programming language. Next, a compiler (or interpreter) program will translate the programming language code into the binary code that the computer runs. In this set-up, the programming language acts as an intermediate language the way that French did in my earlier analogy.
since i dont have any knwoledge about how computers operates at first i thought programming language was the computers language. however its very intresting that compiler or interpreter tanserlate the programming language to binary.
-
-
old.zeek.org old.zeek.org
-
SSL CertsThreat actors generally use:● The same cert.● The same cert generation tool or algorithm.● Especially if they wrote it.● The same pool of certs.
SSL证书狩猎: 1. why: - 人类的惰性、路径依赖 2. how:<br /> - 不同基础设施使用相同的证书/从证书池中拿 - 证书都使用了相同的生成工具/算法(例如文中提到的MSF自带的证书生成算法,将该算法作为工具特征)
SSH隧道检测: 1. SSH代理转发反弹shell检测: - 正常SSH会话中输入字符:packet length = SSH header + 1 byte char code + padding + HMAC. This could be 36,40,48 bytes or so - SSH隧道代理另一个:packet length = SSH header + [previous SSH pkt] + HMAC. This could be 76, 84, 98 bytes and so on 注:加密块大小和客户端和服务器的HMAC算法+实现。(https://www.trisul.org/blog/traffic-analysis-of-secure-shell-ssh/)
-
-
journal.stuffwithstuff.com journal.stuffwithstuff.com
-
You can do this with recursive descent, but it’s a chore.
Jonathan Blow recently revisited this topic with Casey Muratori. (They last talked about this 3 years ago.)
What's a little absurd is that (a) the original discussion is something like 3–6 hours long and doesn't use recursive descent—instead they descended into some madness about trying to work out from first principles how to special-case operator precedence—and (b) they start out in this video poo-pooing people who speak about "recursive descent", saying that it's just a really obnoxious way to say writing ordinary code—again, all this after they three years ago went out of their way to not "just" write "normal" code—and (c) they do this while launching into yet another 3+ hour discussion about how to do it right—in a better, less confusing way this time, with Jon explaining that he spent "6 or 7 hours" working through this "like 5 days ago". Another really perverse thing is that when he talks about Bob's other post (Parsing Expressions) that ended up in the Crafting Interpreters book, he calls it stupid because it's doing "a lot" for something so simple. Again: this is to justify spending 12 hours to work out the vagaries of precedence levels and reviewing a bunch of papers instead of just spending, I dunno, 5 or 10 minutes or so doing it with recursive descent (the cost of which mostly comes down to just typing it in).
So which one is the real chore? Doing it the straightforward, fast way, or going off and attending to one's unrestrained impulse that you for some reason need to special-case arithmetic expressions (and a handful of other types of operations) like someone is going to throw you off a building if you don't treat them differently from all your other ("normal") code?
Major blind spots all over.
-
-
damianoswald.com damianoswald.com
-
See (1) for additional discussion of literate programming. 1. D. E. Knuth, Literate programming. Comput. J. 27, 97–111 (1984). window.document.addEventListener("DOMContentLoaded", function (event) { const toggleBodyColorMode = (bsSheetEl) => { const mode = bsSheetEl.getAttribute("data-mode"); const bodyEl = window.document.querySelector("body"); if (mode === "dark") { bodyEl.classList.add("quarto-dark"); bodyEl.classList.remove("quarto-light"); } else { bodyEl.classList.add("quarto-light"); bodyEl.classList.remove("quarto-dark"); } } const toggleBodyColorPrimary = () => { const bsSheetEl = window.document.querySelector("link#quarto-bootstrap"); if (bsSheetEl) { toggleBodyColorMode(bsSheetEl); } } toggleBodyColorPrimary(); const icon = ""; const anchorJS = new window.AnchorJS(); anchorJS.options = { placement: 'right', icon: icon }; anchorJS.add('.anchored'); const isCodeAnnotation = (el) => { for (const clz of el.classList) { if (clz.startsWith('code-annotation-')) { return true; } } return false; } const clipboard = new window.ClipboardJS('.code-copy-button', { text: function(trigger) { const codeEl = trigger.previousElementSibling.cloneNode(true); for (const childEl of codeEl.children) { if (isCodeAnnotation(childEl)) { childEl.remove(); } } return codeEl.innerText; } }); clipboard.on('success', function(e) { // button target const button = e.trigger; // don't keep focus button.blur(); // flash "checked" button.classList.add('code-copy-button-checked'); var currentTitle = button.getAttribute("title"); button.setAttribute("title", "Copied!"); let tooltip; if (window.bootstrap) { button.setAttribute("data-bs-toggle", "tooltip"); button.setAttribute("data-bs-placement", "left"); button.setAttribute("data-bs-title", "Copied!"); tooltip = new bootstrap.Tooltip(button, { trigger: "manual", customClass: "code-copy-button-tooltip", offset: [0, -8]}); tooltip.show(); } setTimeout(function() { if (tooltip) { tooltip.hide(); button.removeAttribute("data-bs-title"); button.removeAttribute("data-bs-toggle"); button.removeAttribute("data-bs-placement"); } button.setAttribute("title", currentTitle); button.classList.remove('code-copy-button-checked'); }, 1000); // clear code selection e.clearSelection(); }); const viewSource = window.document.getElementById('quarto-view-source') || window.document.getElementById('quarto-code-tools-source'); if (viewSource) { const sourceUrl = viewSource.getAttribute("data-quarto-source-url"); viewSource.addEventListener("click", function(e) { if (sourceUrl) { // rstudio viewer pane if (/\bcapabilities=\b/.test(window.location)) { window.open(sourceUrl); } else { window.location.href = sourceUrl; } } else { const modal = new bootstrap.Modal(document.getElementById('quarto-embedded-source-code-modal')); modal.show(); } return false; }); } function toggleCodeHandler(show) { return function(e) { const detailsSrc = window.document.querySelectorAll(".cell > details > .sourceCode"); for (let i=0; i<detailsSrc.length; i++) { const details = detailsSrc[i].parentElement; if (show) { details.open = true; } else { details.removeAttribute("open"); } } const cellCodeDivs = window.document.querySelectorAll(".cell > .sourceCode"); const fromCls = show ? "hidden" : "unhidden"; const toCls = show ? "unhidden" : "hidden"; for (let i=0; i<cellCodeDivs.length; i++) { const codeDiv = cellCodeDivs[i]; if (codeDiv.classList.contains(fromCls)) { codeDiv.classList.remove(fromCls); codeDiv.classList.add(toCls); } } return false; } } const hideAllCode = window.document.getElementById("quarto-hide-all-code"); if (hideAllCode) { hideAllCode.addEventListener("click", toggleCodeHandler(false)); } const showAllCode = window.document.getElementById("quarto-show-all-code"); if (showAllCode) { showAllCode.addEventListener("click", toggleCodeHandler(true)); } function tippyHover(el, contentFn) { const config = { allowHTML: true, content: contentFn, maxWidth: 500, delay: 100, arrow: false, appendTo: function(el) { return el.parentElement; }, interactive: true, interactiveBorder: 10, theme: 'quarto', placement: 'bottom-start' }; window.tippy(el, config); } const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); for (var i=0; i<noterefs.length; i++) { const ref = noterefs[i]; tippyHover(ref, function() { // use id or data attribute instead here let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href'); try { href = new URL(href).hash; } catch {} const id = href.replace(/^#\/?/, ""); const note = window.document.getElementById(id); return note.innerHTML; }); } let selectedAnnoteEl; const selectorForAnnotation = ( cell, annotation) => { let cellAttr = 'data-code-cell="' + cell + '"'; let lineAttr = 'data-code-annotation="' + annotation + '"'; const selector = 'span[' + cellAttr + '][' + lineAttr + ']'; return selector; } const selectCodeLines = (annoteEl) => { const doc = window.document; const targetCell = annoteEl.getAttribute("data-target-cell"); const targetAnnotation = annoteEl.getAttribute("data-target-annotation"); const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); const lines = annoteSpan.getAttribute("data-code-lines").split(","); const lineIds = lines.map((line) => { return targetCell + "-" + line; }) let top = null; let height = null; let parent = null; if (lineIds.length > 0) { //compute the position of the single el (top and bottom and make a div) const el = window.document.getElementById(lineIds[0]); top = el.offsetTop; height = el.offsetHeight; parent = el.parentElement.parentElement; if (lineIds.length > 1) { const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]); const bottom = lastEl.offsetTop + lastEl.offsetHeight; height = bottom - top; } if (top !== null && height !== null && parent !== null) { // cook up a div (if necessary) and position it let div = window.document.getElementById("code-annotation-line-highlight"); if (div === null) { div = window.document.createElement("div"); div.setAttribute("id", "code-annotation-line-highlight"); div.style.position = 'absolute'; parent.appendChild(div); } div.style.top = top - 2 + "px"; div.style.height = height + 4 + "px"; let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); if (gutterDiv === null) { gutterDiv = window.document.createElement("div"); gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter"); gutterDiv.style.position = 'absolute'; const codeCell = window.document.getElementById(targetCell); const gutter = codeCell.querySelector('.code-annotation-gutter'); gutter.appendChild(gutterDiv); } gutterDiv.style.top = top - 2 + "px"; gutterDiv.style.height = height + 4 + "px"; } selectedAnnoteEl = annoteEl; } }; const unselectCodeLines = () => { const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"]; elementsIds.forEach((elId) => { const div = window.document.getElementById(elId); if (div) { div.remove(); } }); selectedAnnoteEl = undefined; }; // Attach click handler to the DT const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); for (const annoteDlNode of annoteDls) { annoteDlNode.addEventListener('click', (event) => { const clickedEl = event.target; if (clickedEl !== selectedAnnoteEl) { unselectCodeLines(); const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active'); if (activeEl) { activeEl.classList.remove('code-annotation-active'); } selectCodeLines(clickedEl); clickedEl.classList.add('code-annotation-active'); } else { // Unselect the line unselectCodeLines(); clickedEl.classList.remove('code-annotation-active'); } }); } const findCites = (el) => { const parentEl = el.parentElement; if (parentEl) { const cites = parentEl.dataset.cites; if (cites) { return { el, cites: cites.split(' ') }; } else { return findCites(el.parentElement) } } else { return undefined; } }; var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); for (var i=0; i<bibliorefs.length; i++) { const ref = bibliorefs[i]; const citeInfo = findCites(ref); if (citeInfo) { tippyHover(citeInfo.el, function() { var popup = window.document.createElement('div'); citeInfo.cites.forEach(function(cite) { var citeDiv = window.document.createElement('div'); citeDiv.classList.add('hanging-indent'); citeDiv.classList.add('csl-entry'); var biblioDiv = window.document.getElementById('ref-' + cite); if (biblioDiv) { citeDiv.innerHTML = biblioDiv.innerHTML; } popup.appendChild(citeDiv); }); return popup.innerHTML; }); } } });
Remove this please.
-
-
www.freecodecamp.org www.freecodecamp.org
-
I dove into the source code. Rick was right: no-one could possibly understand what Rick had created. Except for Rick. It was a reflection of the workings of his own mind. Some of it was very clever, a lot of it was copy-pasta, it was all very idiosyncratic, and it was not at all documented.
I used to work in such a project :)
-
-
social-media-ethics-automation.github.io social-media-ethics-automation.github.io
-
Divine Command Theory
This is one of the most dangerous and insidious belief systems known to man, in my opinion. When I was growing up the Catholic church believed that pre-marital sex was a sin and we would all go to hell if we tried it. In many cultures today it is taught that 'god' doesn’t condone homosexuality. For example, in Iran, homosexual acts are punishable by flogging and even death in some cases because of this belief in a judgmental ‘god.’ I don’t believe God made this planet let alone created a moral code for all to live by. I think we made it so we could project our guilt, shame, and fears onto others. I believe that projection is perception.
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
Reviewer #1 (Public Review):
This paper combines a number of cutting-edge approaches to explore the role of a specific mouse retinal ganglion cell type in visual function. The approaches used include calcium imaging to measure responses of RGC populations to a collection of visual stimuli and CNNs to predict the stimuli that maximally activate a given ganglion cell type. The predictions about feature selectivity are tested and used to generate a hypothesized role in visual function for the RGC type identified as interesting. The paper is impressive; my comments are all related to how the work is presented.
We thank the reviewer for appreciating our study and for the interesting comments.
Is the MEI approach needed to identify these cells?
To briefly summarize the approach, the paper fits a CNN to the measured responses to a range of stimuli, extracts the stimulus (over time, space, and color) that is predicted to produce a maximal response for each RGC type, and then uses these MEIs to investigate coding. This reveals that G28 shows strong selectivity for its own MEI over those of other RGC types. The feature of the G28 responses that differentiate it appears to be its spatially-coextensive chromatic opponency. This distinguishing feature, however, should be relatively easy to discover using more standard approaches.
The concern here is that the paper could be read as indicating that standard approaches to characterizing feature selectivity do not work and that the MEI/CNN approach is superior. There may be reasons why the latter is true that I missed or were not spelled out clearly. I do think the MEI/CNN approach as used in the paper provides a very nice way to compare feature selectivity across RGC types - and that it seems very well suited in this context. But it is less clear that it is needed for the initial identification of the distinguished response features of the different RGC types. What would be helpful for me, and I suspect for many readers, is a more nuanced and detailed description of where the challenges arise in standard feature identification approaches and where the MEI/CNN approaches help overcome those challenges.
Thank you for the opportunity for clarification. In fact, the MEI (or an alternative nonlinear approach) is strictly necessary to discover this selectivity: as we show above (response #1 to editorial summary), the traditional linear filter approach does not reveal the color opponency. We realize that this fact was not made sufficiently clear in the initial submission. In the revised manuscript, we now include this analysis. Moreover, throughout the manuscript, we added explanations on the differences between MEIs and standard approaches and more intuitions about how to interpret MEIs. We also added a section to the discussion dedicated to explaining the advantages and limitations of the MEI approach.
Interpretation of MEI temporal structure
Some aspects of the extracted MEIs look quite close to those that would be expected from more standard measurements of spatial and temporal filtering. Others - most notably some of the temporal filters - do not. In many of the cells, the temporal filters oscillate much more than linear filters estimated from the same cells. In some instances, this temporal structure appears to vary considerably across cells of the same type (Fig. S2). These issues - both the unusual temporal properties of the MEIs and the heterogeneity across RGCs of the same type - need to be discussed in more detail. Related to this point, it would be nice to understand how much of the difference in responses to MEIs in Figure 4d is from differences in space, time, or chromatic properties. Can you mix and match MEI components to get an estimate of that? This is particularly relevant since G28 responds quite well to the G24 MEI.
One advantage of the MEI approach is that it allows to distinguish between transient and sustained cells in a way that is not possible with the linear filter approach: Because we seek to maximize activity over an extended period of time, transient cells need to be repetitively stimulated whereas sustained cells will also respond in the absence of multiple contrast changes. In the revised manuscript, we add a section explaining this, together with Figure 3-supplement 2, illustrating this point by showing that oscillations disappear when we optimize the MEI for a short time window. The benefit of a longer time window lies in the increased discriminability between transient and sustained cells, which is also shown in the new supplementary figure.
Regarding the heterogeneity of MEIs, this is most likely due to heterogeneity within the RGC group: “The mixed non-direction-selective groups G17 and G31 probably contain more than one type, as supported by multiple distinct morphologies and genetic identities (for example, G31,32, Extended Data Fig. 5) or response properties (for example, G17, see below)” (Baden et al. Nature 2016). We added a paragraph in the Results section.
Concerning the reviewer’s last point: We agree that it is important to know whether the defining feature - i.e., the selectivity for chromatic contrast - is robust against variations in other stimulus properties. New electrophysiological data included in the manuscript (Fig. 6e,f) offers some insights here. We probed G28/tSbC cells with full-field flashed stimuli that varied in chromatic contrast. Despite not matching the cell’s preferred spatial and temporal properties, this stimulus still recovered the cell’s preference for chromatic contrast. While we think it is an interesting direction to systematically quantify the relative importance of temporal, spatial and chromatic MEI properties for an RGC type’s responses, we think this is beyond the scope of this manuscript.
Explanation of RDM analysis
I really struggled with the analysis in Figure 5b-c. After reading the text several times, this is what I think is happening. Starting with a given RGC type (#20 in Figure 5b), you take the response of each cell in that group to the MEI of each RGC type, and plot those responses in a space where the axes correspond to responses of each RGC of this type. Then you measure euclidean distance between the responses to a pair of MEIs and collect those distances in the RDM matrix. Whether correct or not, this took some time to arrive at and meant filling in some missing pieces in the text. That section should be expanded considerably.
We appreciate the reviewer’s efforts to understand this analysis and confirm that they interpreted it correctly. However, we decided to remove the analysis. The point we were trying to make with this analysis is that the transformation implemented by G28/tSbC cells “warps” stimulus space and increases the discriminability of stimuli with similar characteristics like the cell’s MEI. We now make this point in a - we think - more accessible manner by the new analysis about the nonlinearity of G28/tSbC cell’s color opponency (see above).
Centering of MEIs
How important is the lack of precise centering of the MEIs when you present them? It would be helpful to have some idea about that - either from direct experiments or using a model.
In the electrophysiological experiments, the MEIs were centered precisely (now Fig. 5 in revised manuscript) and these experiments yielded almost identical results to the 2P imaging experiments, where the MEIs were presented on a grid to approach the optimal position for the recorded cells. Additionally, all model simulations work with perfectly centered MEIs. We hence conclude that our grid-approach at presenting stimuli provided sufficient precision in stimulus positioning.
We added this information to the revised manuscript.
Reviewer #2 (Public Review):
This paper uses two-photon imaging of mouse ganglion cells responding to chromatic natural scenes along with convolutional neural network (CNN) models fit to the responses of a large set of ganglion cells. The authors analyze CNN models to find the most effective input (MEI) for each ganglion cell as a novel approach to identifying ethological function. From these MEIs they identify chromatic opponent ganglion cells, and then further perform experiments with natural stimuli to interpret the ethological function of those cells. They conclude that a type of chromatic opponent ganglion cell is useful for the detection of the transition from the ground to the sky across the horizon. The experimental techniques, data, and fitting of CNN models are all high quality. However, there are conceptual difficulties with both the use of MEIs to draw conclusions about neural function and the ethological interpretations of experiments and data analyses, as well as a lack of comparison with standard approaches. These bear directly both on the primary conclusions of the paper and on the utility of the new approaches.
We thank the reviewer for the detailed comments.
1) Claim of feature detection.
The color opponent cells are cast as a "feature detector" and the term 'detector' is in the title. However insufficient evidence is given for this, and it seems likely a mischaracterization. An example of a ganglion cell that might qualify as a feature detector is the W3 ganglion cell (Zhang et al., 2012). These cells are mostly silent and only fire if there is differential motion on a mostly featureless background. Although this previous work does not conduct a ROC analysis, the combination of strong nonlinearity and strong selectivity are important here, giving good qualitative support for these cells as participating in the function of detecting differential motion against the sky. In the present case, the color opponent cells respond to many stimuli, not just transitions across the horizon. In addition, for the receiver operator characteristic (ROC) analysis as to whether these cells can discriminate transitions across the horizon, the area under the curve (AUC) is on average 0.68. Although there is not a particular AUC threshold for a detector or diagnostic test to have good discrimination, a value of 0.5 is chance, and values between 0.5 and 0.7 are considered poor discrimination, 'not much better than a coin toss' (Applied Logistic Regression, Hosmer et al., 2013, p. 177). The data in Fig. 6F is also more consistent with a general chromatic opponent cell that is not highly selective. These cells may contribute information to the problem of discriminating sky from ground, but also to many other ethologically relevant visual determinations. Characterizing them as feature detectors seems inappropriate and may distract from other functional roles, although they may participate in feature detection performed at a higher level in the brain.
The reviewer apparently uses a rather narrow definition of a feature detector. We, however, argue for a broader definition, which, in our view, better captures the selectivities described for RGCs in the literature. For example, while W3 cells have been quite extensively studied, one can probably agree on that so far only a fraction of the possible stimulus space has been explored. Therefore, it cannot be excluded that W3 cells respond also to other features than small dark moving dots, but we (like the reviewer) still refer to it as a feature detector. Or, for instance, direction-selective (DS) RGCs are commonly considered feature detectors (i.e., responsive to a specific motion direction), although they also respond to flashes and spike when null-direction motion is paused (Barlow & Levick J Physiol 1965).
The G28/tSbC cells’ selectivity for full-field changes in chromatic contrast enables them to encode ground-sky horizon transitions reliably across stimulus parameters (e.g., see new Fig. 7i panel). This cell type is thus well-suited to contribute to detecting context changes, as elicited by ground-sky transitions.
Therefore, we think that the G28/tSbC RGC can be considered a feature detector and as such, could be used at a higher level in the brain to quickly detect changes in visual context (see also Kerschensteiner Annu Rev Vis Sci 2022). Still, their signals may also be useful for other computations (e.g., defocus, as discussed in our manuscript).
Regarding the ROC analysis, we acknowledge that an average AUC of .68 may seem comparatively low; however, this is based on the temporally downsampled information (i.e., by way of Ca2+ imaging) gathered from the activity of a single cell. A downstream area would have access to the activity of a local population of cells. This AUC value should therefore be considered a lower bound on the discrimination performance of a downstream area. We now comment on this in the manuscript.
2) Appropriateness of MEI analysis for interpretations of the neural code.
There is a fundamental incompatibility between the need to characterize a system with a complex nonlinear CNN and then characterizing cells with a single MEI. MEIs represent the peak in a complex landscape of a nonlinear function, and that peak may or may not occur under natural conditions. For example, MEIs do not account for On-Off cells, On-Off direction selectivity, nonlinear subunits, object motion sensitivity, and many other nonlinear cell properties where multiple visual features are combined. MEIs may be a useful tool for clustering and distinguishing cells, but there is not a compelling reason to think that they are representative of cell function. This is an open question, and thus it should not be assumed as a foundation for the study. This paper potentially speaks to this issue, but there is more work to support the usefulness of the approach. Neural networks enable a large set of analyses to understand complex nonlinear effects in a neural code, and it is well understood that the single-feature approach is inadequate for a full understanding of sensory coding. A great concern is that the message that the MEI is the most important representative statistic directs the field away from the primary promise of the analysis of neural networks and takes us back to the days when only a single sensory feature is appreciated, now the MEI instead of the linear receptive field. It is appropriate to use MEI analyses to create hypotheses for further experimental testing, and the paper does this (and states as much) but it further takes the point of view that the MEI is generally informative as the single best summary of the neural code. The representation similarity analysis (Fig. 5) acts on the unfounded assumption that MEIs are generally representative and conveys this point of view, but it is not clear whether anything useful can be drawn from this analysis, and therefore this analysis does not support the conclusions about changes in the representational space. Overall this figure detracts from the paper and can safely be removed. In addition, in going from MEI analysis to testing ethological function, it should be made much more clear that MEIs may not generally be representative of the neural code, especially when nonlinearities are present that require the use of more complex models such as CNNs, and thus testing with other stimuli are required.
The reviewer correctly characterizes MEIs as representing the peak in a nonlinear loss landscape that, in this case, describes the neurons’ tuning. As such, the MEI approach is indeed capable of characterizing nonlinear neuronal feature selectivities that are captured by a nonlinear model, such as the CNN we used here. We therefore disagree with the suggestion that MEIs should not be used “when nonlinearities are present that require the use of more complex models such as CNNs”. It is unclear what other “analysis of neural networks” the reviewer refers to. One approach to analyze the predictive neural network are MEIs.
We also want to clarify that, while the reviewer is correct in stating that the MEI approach as used here only identifies a single peak, this does not mean that it cannot capture neuronal selectivities for a combination of features, as long as this combination of features can be described as a point in high-dimensional stimulus space. In fact, this is demonstrated in our manuscript for the case of G28/tSbC cell’s selectivity for large or full-field, sustained changes in chromatic contrast (a combination of spatial, temporal, and chromatic features). While approaches similar to the one used here generate several diverse exciting inputs (Ding et al. bioRxiv 2023) and could therefore also fully capture On-Off selectivities, we pointed out the limitation of MEIs when describing On-Off cells in the manuscript (both original and revised).
Regarding the reviewer’s concern that “[...] the message that the MEI is the most important representative statistic [...] takes us back to the days when only a single sensory feature is appreciated”. It was certainly not our intention to proclaim MEIs as the ultimate representation of a cell’s response features and we have clarified this in the revised manuscript. However, we also think that (i) in applying a nonlinear method to extract chromatic, temporal, and spatial response properties from natural movie responses, we go beyond many characterizations that use linear methods to extract spatial or temporal only, achromatic response properties from static, white-noise stimuli. This said, we agree that (ii) expanding around the peak is desirable, and we do that in an additional analysis (new Fig. 6); but that reducing complexity to a manageable degree (at least, at first) is useful and even necessary when discovering novel response properties.
Concerning the representational similarity analysis (RSA): the point we were trying to make with this analysis is that the transformation implemented by G28 “warps” stimulus space and increases the discriminability of stimuli with similar characteristics like the cell’s MEI. We now made this point in a more accessible fashion through the above-mentioned analysis, where we extended the estimate around the peak. We therefore agree to remove the RSA from the paper.
In the revised manuscript, we (a) discuss the advantages and limitations of the MEI approach in more detail (in Results and Discussion; see also our reply #1) and (b) replaced the RSA analysis.
3) Usefulness of MEI approach over alternatives. It is claimed that analyzing the MEI is a useful approach to discovering novel neural coding properties, but to show the usefulness of a new tool, it is important to compare results to the traditional technique. The more standard approach would be to analyze the linear receptive field, which would usually come from the STA of white noise measurement, but here this could come from the linear (or linear-nonlinear) model fit to the natural scene response, or by computing an average linear filter from the natural scene model. It is important to assess whether the same conclusion about color opponency can come from this standard approach using the linear feature (average effective input), and whether the MEIs are qualitatively different from the linear feature. The linear feature should thus be compared to MEIs for Fig. 3 and 4, and the linear feature should be compared with the effects of natural stimuli in terms of chromatic contrast (Fig. 6b). With respect to the representation analysis (Fig. 5), although I don't believe this is meaningful for MEIs, if this analysis remains it should also be compared to a representation analysis using the linear feature. In fact, a representation analysis would be more meaningful when performed using the average linear feature as it summarizes a wider range of stimuli, although the most meaningful analysis would be directly on a broader range of responses, which is what is usually done.
We agree that the comparison with a linear model is an important validation. Therefore, we performed an additional analysis (see also reply #1, as well as Fig. 6 and corresponding section in the manuscript) which demonstrates that an LN model does not recover the chromatic feature selectivity. This finding supports our claims about the usefulness of the MEI approach over linear approaches.
Regarding the comment on the representation analysis, as mentioned above, we consider it replaced by the analysis comparing results from an LN model and a nonlinear CNN.
4) Definition of ethological problem. The ethological problem posed here is the detection of the horizon. The stimuli used do not appear to relate to this problem as they do not include the horizon and only include transitions across the horizon. It is not clear whether these stimuli would ever occur with reasonable frequency, as they would only occur with large vertical saccades, which are less common in mice. More common would be smooth transitions across the horizon, or smaller movements with the horizon present in the image. In this case, cells which have a spatial chromatic opponency (which the authors claim are distinct from the ones studied here) would likely be more important for use in chromatic edge detection or discrimination. Therefore the ethological relevance of any of these analyses remains in question.
It is further not clear if detection is even the correct problem to consider. The horizon is always present, but the problem is to determine its location, a conclusion that will likely come from a population of cells. This is a distinct problem from detecting a small object, such as a small object against the background of the sky, which may be a more relevant problem to consider.
Thank you for giving us the opportunity to clear these things up. First, we would like to clarify that we propose that G28/tSbC cells contribute to detecting context changes, such as transitions across the horizon from ground to sky, not to detecting the horizon itself. We acknowledge that we were not clear enough about this in the manuscript and corrected this. To back-up our hypothesis that G28 RGCs contribute to detecting context changes, we performed an additional simulation analysis, which is described in our reply #3 (see above).
5) Difference in cell type from those previously described. It is claimed that the chromatic opponent cells are different from those previously described based on the MEI analysis, but we cannot conclude this because previous work did not perform an MEI analysis. An analysis should be used that is comparable to previous work, the linear spatiotemporal receptive field should be sufficient. However, there is a concern that because linear features can change with stimulus statistics (Hosoya et al., 2005), a linear feature fit to natural scenes may be different than those from previous studies even for the same cell type. The best approach would likely be presenting a white noise stimulus to the natural scenes model to compute a linear feature, which still carries the assumption that this linear feature from the model fit to a natural stimulus would be comparable to previous studies. If the previous cells have spatial chromatic opponency and the current cells only have chromatic opponency in the center, there should be both types of cells in the current data set. One technical aspect relating to this is that MEIs were space-time separable. Because the center and surround have a different time course, enforcing this separability may suppress sensitivity in the surround. Therefore, it would likely be better if this separability were not enforced in determining whether the current cells are different than previously described cells. As to whether these cells are actually different than those previously described, the authors should consider the following uncited work; (Ekesten Gouras, 2005), which identified chromatic opponent cells in mice in approximate numbers to those here (~ 2%). In addition, (Yin et al., 2009) in guinea pigs and (Michael, 1968) in ground squirrels found color-opponent ganglion cells without effects of a spatial surround as described in the current study.
First of all, we did not intend to claim to have discovered a completely new type of color-opponent tuning in general; what we were trying to say is that tSbC cells display spatially co-extensive color opponency, a feature selectivity previously not described in this mouse RGC type, and which may be used to signal context changes as elicited by ground-sky transitions.
Concerning the reviewer’s first argument about a lack of comparability of our results to results previously obtained with a different approach: We think that this is now addressed by the new analysis (new Fig. 6), where we show why linear methods are limited in their capability to recover the type of color opponency that we discovered with the MEI approach.
Regarding the argument about center-surround opponency, we agree that “if the previous cells have spatial chromatic opponency and the current cells only have chromatic opponency in the center, there should be both types of cells in the current data set”. We did not focus on analyzing center-surround opponency in the present study, but from the MEIs, it is visible that many cells have a stronger antagonistic surround in the green channel compared to the UV channel (see Fig. 4a, example RGCs of G21, G23, G24; Figure 3-supplement 1 example RGCs of G21, G23, G24, G31, G32). Importantly, the MEIs shown in Fig. 4a were also shown in the verification experiment, and had G28 RGCs preferred this kind of stimulus, they would have responded preferentially to these MEIs, which was not the case (Fig. 4f).
It should also be noted here that, while the model’s filters were space-time separable, we did not impose a restriction on the MEIs to be space-time separable during optimization. However, we analyzed only the rank 1 components of the MEIs (see Methods section Validating MEIs experimentally). since our analysis focused on aspects of retinal processing not contingent on spatiotemporal interactions in the stimulus.
In summary, we are convinced that our finding of center-opponency in G28 is not an artifact of the methodology.
We discuss this in the manuscript and add the references mentioned by the reviewer to the respective part of the Discussion.
Reviewer #3 (Public Review):
This study aims to discover ethologically relevant feature selectivity of mouse retinal ganglion cells. The authors took an innovative approach that uses large-scale calcium imaging data from retinal ganglion cells stimulated with both artificial and natural visual stimuli to train a convolutional neural network (CNN) model. The resulting CNN model is able to predict stimuli that maximally excite individual ganglion cell types.
The authors discovered that modeling suggests that the "transient suppressed-by-contrast" ganglion cells are selectively responsive to Green-Off, UV-On contrasts, a feature that signals the transition from the ground to the sky when the animal explores the visual environment. They tested this hypothesis by measuring the responses of these suppressed-by-contrast cells to natural movies, and showed that these cells are preferentially activated by frames containing ground-to-sky transitions and exhibit the highest selectivity of this feature among all ganglion cell types. They further verified this novel feature selectivity by single-cell patch clamp recording.
This work is of high impact because it establishes a new paradigm for studying feature selectivity in visual neurons. The data and analysis are of high quality and rigor, and the results are convincing. Overall, this is a timely study that leverages rapidly developing AI tools to tackle the complexity of both natural stimuli and neuronal responses and provides new insights into sensory processing.
We thank the reviewer for appreciating our study.
-
Reviewer #2 (Public Review):
This paper uses two-photon imaging of mouse ganglion cells responding to chromatic natural scenes along with convolutional neural network (CNN) models fit to the responses of a large set of ganglion cells. The authors analyze CNN models to find the most effective input (MEI) for each ganglion cell as a novel approach to identifying ethological function. From these MEIs they identify chromatic opponent ganglion cells, and then further perform experiments with natural stimuli to interpret the ethological function of those cells. They conclude that a type of chromatic opponent ganglion cell is useful for the detection of the transition from the ground to the sky across the horizon. The experimental techniques, data, and fitting of CNN models are all high quality. However, there are conceptual difficulties with both the use of MEIs to draw conclusions about neural function and the ethological interpretations of experiments and data analyses, as well as a lack of comparison with standard approaches. These bear directly both on the primary conclusions of the paper and on the utility of the new approaches.
1. Claim of feature detection. The color opponent cells are cast as a "feature detector" and the term 'detector' is in the title. However insufficient evidence is given for this, and it seems likely a mischaracterization. An example of a ganglion cell that might qualify as a feature detector is the W3 ganglion cell (Zhang et al., 2012). These cells are mostly silent and only fire if there is differential motion on a mostly featureless background. Although this previous work does not conduct a ROC analysis, the combination of strong nonlinearity and strong selectivity are important here, giving good qualitative support for these cells as participating in the function of detecting differential motion against the sky. In the present case, the color opponent cells respond to many stimuli, not just transitions across the horizon. In addition, for the receiver operator characteristic (ROC) analysis as to whether these cells can discriminate transitions across the horizon, the area under the curve (AUC) is on average 0.68. Although there is not a particular AUC threshold for a detector or diagnostic test to have good discrimination, a value of 0.5 is chance, and values between 0.5 and 0.7 are considered poor discrimination, 'not much better than a coin toss' (Applied Logistic Regression, Hosmer et al., 2013, p. 177). The data in Fig. 6F is also more consistent with a general chromatic opponent cell that is not highly selective. These cells may contribute information to the problem of discriminating sky from ground, but also to many other ethologically relevant visual determinations. Characterizing them as feature detectors seems inappropriate and may distract from other functional roles, although they may participate in feature detection performed at a higher level in the brain.
2. Appropriateness of MEI analysis for interpretations of the neural code. There is a fundamental incompatibility between the need to characterize a system with a complex nonlinear CNN and then characterizing cells with a single MEI. MEIs represent the peak in a complex landscape of a nonlinear function, and that peak may or may not occur under natural conditions. For example, MEIs do not account for On-Off cells, On-Off direction selectivity, nonlinear subunits, object motion sensitivity, and many other nonlinear cell properties where multiple visual features are combined. MEIs may be a useful tool for clustering and distinguishing cells, but there is not a compelling reason to think that they are representative of cell function. This is an open question, and thus it should not be assumed as a foundation for the study. This paper potentially speaks to this issue, but there is more work to support the usefulness of the approach. Neural networks enable a large set of analyses to understand complex nonlinear effects in a neural code, and it is well understood that the single-feature approach is inadequate for a full understanding of sensory coding. A great concern is that the message that the MEI is the most important representative statistic directs the field away from the primary promise of the analysis of neural networks and takes us back to the days when only a single sensory feature is appreciated, now the MEI instead of the linear receptive field. It is appropriate to use MEI analyses to create hypotheses for further experimental testing, and the paper does this (and states as much) but it further takes the point of view that the MEI is generally informative as the single best summary of the neural code. The representation similarity analysis (Fig. 5) acts on the unfounded assumption that MEIs are generally representative and conveys this point of view, but it is not clear whether anything useful can be drawn from this analysis, and therefore this analysis does not support the conclusions about changes in the representational space. Overall this figure detracts from the paper and can safely be removed. In addition, in going from MEI analysis to testing ethological function, it should be made much more clear that MEIs may not generally be representative of the neural code, especially when nonlinearities are present that require the use of more complex models such as CNNs, and thus testing with other stimuli are required.
3. Usefulness of MEI approach over alternatives. It is claimed that analyzing the MEI is a useful approach to discovering novel neural coding properties, but to show the usefulness of a new tool, it is important to compare results to the traditional technique. The more standard approach would be to analyze the linear receptive field, which would usually come from the STA of white noise measurement, but here this could come from the linear (or linear-nonlinear) model fit to the natural scene response, or by computing an average linear filter from the natural scene model. It is important to assess whether the same conclusion about color opponency can come from this standard approach using the linear feature (average effective input), and whether the MEIs are qualitatively different from the linear feature. The linear feature should thus be compared to MEIs for Fig. 3 and 4, and the linear feature should be compared with the effects of natural stimuli in terms of chromatic contrast (Fig. 6b). With respect to the representation analysis (Fig. 5), although I don't believe this is meaningful for MEIs, if this analysis remains it should also be compared to a representation analysis using the linear feature. In fact, a representation analysis would be more meaningful when performed using the average linear feature as it summarizes a wider range of stimuli, although the most meaningful analysis would be directly on a broader range of responses, which is what is usually done.
4. Definition of ethological problem. The ethological problem posed here is the detection of the horizon. The stimuli used do not appear to relate to this problem as they do not include the horizon and only include transitions across the horizon. It is not clear whether these stimuli would ever occur with reasonable frequency, as they would only occur with large vertical saccades, which are less common in mice. More common would be smooth transitions across the horizon, or smaller movements with the horizon present in the image. In this case, cells which have a spatial chromatic opponency (which the authors claim are distinct from the ones studied here) would likely be more important for use in chromatic edge detection or discrimination. Therefore the ethological relevance of any of these analyses remains in question.
It is further not clear if detection is even the correct problem to consider. The horizon is always present, but the problem is to determine its location, a conclusion that will likely come from a population of cells. This is a distinct problem from detecting a small object, such as a small object against the background of the sky, which may be a more relevant problem to consider.
5. Difference in cell type from those previously described. It is claimed that the chromatic opponent cells are different from those previously described based on the MEI analysis, but we cannot conclude this because previous work did not perform an MEI analysis. An analysis should be used that is comparable to previous work, the linear spatiotemporal receptive field should be sufficient. However, there is a concern that because linear features can change with stimulus statistics (Hosoya et al., 2005), a linear feature fit to natural scenes may be different than those from previous studies even for the same cell type. The best approach would likely be presenting a white noise stimulus to the natural scenes model to compute a linear feature, which still carries the assumption that this linear feature from the model fit to a natural stimulus would be comparable to previous studies. If the previous cells have spatial chromatic opponency and the current cells only have chromatic opponency in the center, there should be both types of cells in the current data set. One technical aspect relating to this is that MEIs were space-time separable. Because the center and surround have a different time course, enforcing this separability may suppress sensitivity in the surround. Therefore, it would likely be better if this separability were not enforced in determining whether the current cells are different than previously described cells. As to whether these cells are actually different than those previously described, the authors should consider the following uncited work; (Ekesten Gouras, 2005), which identified chromatic opponent cells in mice in approximate numbers to those here (~ 2%). In addition, (Yin et al., 2009) in guinea pigs and (Michael, 1968) in ground squirrels found color-opponent ganglion cells without effects of a spatial surround as described in the current study.
-
-
lobste.rs lobste.rs
-
Experts without accountability start acting in their own interests rather than that of their customers/users. And we don’t know how to hold programmers accountable without understanding the code they write.
-
-
-
If you already have computer-based hobbies such as gaming or a social-media addiction, why not learn to run your own services as a hobby? Note, this is very different from learning to code. It's more about learning to be your own sysadmin and tech support, rather than being a programmer.
-
-
productify.substack.com productify.substack.com
-
hat the Designer + Product-marketing duo is the new force to reckon with compared to traditional Product Manager-Engineer duo when you want to roll out amazing products to your customers
25 years ago the 1st round of funding was spent building our servers, racks and data centers plus some foundational code.
Then you could get to work building a product. I call this "showing up"
Today you can build a product before you even raise any money and get distribution globally in an instant. Now you need to not just show up, but STAND OUT
Given this shift, the hardest challenge has moved from building the technical foundations to build a product to getting attention and adoption on the market.
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
The following is the authors’ response to the original reviews.
eLife assessment
This important study reports investigation of the dynamics of PKA at the single-cell level in in vitro and in epithelia in vivo. Using different fluorescent biosensors and optogenetic actuators, the authors dissect the signaling pathway responsible for PKA waves, finding that PKA activation is a consequence of PGE2 release, which in turn is triggered by calcium pulses, requiring high ERK activity. The evidence supporting the claims is solid. At this stage the work is still partly descriptive in nature, and additional measurements would increase the strength of mechanistic insights and physiological relevance.
We deeply appreciate Dr. Alejandro San Martín and Dr. Jonathan Cooper and the reviewers. Each comment is valuable and reasonable. We will revise our paper as much as possible.
We have described what we will do for the reviewer’s comments one by one in the below section.
Reviewer #1 (Recommendations For The Authors):
- Even though the phenomenon of PGE2 signal propagation is elegantly demonstrated and well described, the whole paper is mostly of descriptive nature - the PGE2 signal is propagated via intercellular communication and requires Ca transients as well as MAPK activity, however function of these RSPAs in dense epithelium is not taken into consideration. What is the function of these RSPAs in cellular crowding? - Does it promote cell survival or initiate apoptosis? Does it feed into epithelial reorganization during cellular crowding? Still something else? The authors discuss possible roles of this phenomenon in cell competition context, but show no experimental or statistical efforts to answer this question. I believe some additional analysis or simple experiment would help to shed some light on the functional aspect of RSPAs and increase the importance of all the elegant demonstrations and precise experimental setups that the manuscript is rich of. Monolayer experiments using some perturbations that challenge the steady state of epithelial homeostasis - drug treatments/ serum deprivation/ osmotic stress/ combined with live cell imaging and statistical methods that take into account local cell density might provide important answers to these questions. The authors could consider following some of these ideas to improve the overall value of the manuscript.
We would like to thank the reviewer’s comment. Although we have intensively tried to identify the physiological relevance of RSPA, we could not detect the function at present.
In the case of MDCK, the treatment of NSAIDs, which cancels RSPA, did not affect its cell growth, ERK wave propagation during collective migration, migration velocity, cell survival, or apoptosis. In mouse epidermis, the frequency of RSPA was NOT affected by inflammation and collective cell migration, evoked by TPA treatment and wound, respectively.
Notably, RSPA also occurs in the normal epidermis, implying its relevance in homeostasis. However, at the current stage, we believe that the PGE2 dynamics and its regulation mechanism in the normal epidermis would be worth reporting to researchers in the field.
- In the line 82-84 the authors claim: "We found that the pattern of cAMP concentration change is very similar to the activity change of PKA, indicating that a Gs protein-coupled receptor (GsPCR) mediates RSPA". In our opinion, this conclusion is not well-supported by the results. The authors should at least show that some measurements of the two patterns show correlation. Are the patterns of cAMP of the same size as the pattern of PKA? Do they have the same size depending on cell density? Do they occur at the same frequency as the PKA patterns, depending on the cell density? Do they have an all or nothing activation as PKA or their activation is shading with the distance from the source?
We have modified the text (line85)
“Although the increment of the FRET ratio was not so remarkable as that of Booster-PKA, Wwe found that the pattern of cAMP concentration change is very similar to the activity change of PKA, indicating that a Gs protein-coupled receptor (GsPCR) mediates RSPA. This discrepancy may be partially explained by the difference in the dynamic ranges for cAMP signaling in each FRET biosensor (Watabe2020). “
- In general, the absolute radius of the waves is not a good measurement for single-cell biology studies, especially when comparing different densities or in vivo vs in vitro experiments. We suggest the authors add the measurement of the number of the cells involved in the waves (or the radius expressed in number of cells).
We appreciate the reviewer’s comment. We have analyzed our results to demonstrate the number of cells as in Fig2E, which would be easy for readers to understand.
- In 6D, the authors should also show the single-cell trajectories to understand better the correlation between PKA and ERK peaks. Is the huger variability in ERK activity ratio dues to different peak time or different ERK activity levels in different cells? The authors should show both the variability in the time and intensity.
We have added a few representative results as Fig. S4.
- In lines 130-132, the authors write, "This observation indicates that the amount of PGE2 secretion is predetermined and that there is a threshold of the cytoplasmic calcium concentration for the triggered PGE2 secretion". How could the author exclude that the amount of PGE2 is not regulated in its intensity as well? For sure, there is a threshold effect regarding calcium, but this doesn't mean that PGE2 secretion can be further regulated, e.g. by further increasing calcium concentration or by other mechanisms.
We agree with the reviewer’s comment. We have modified the text.
- The manuscript shows that not all calcium transients are followed by RSPAs. Does the local cell density/crowding increase the probability of overlap between calcium transients and RSPAs?
We appreciate the reviewer’s comment. We have also hypothesized the model. However, we did not see the correlation that the reviewer pointed out. Currently, the increment of the RSPA frequency at high density is partially caused by the increment of calcium transients.
Reviewer #2 (Recommendations For The Authors):
- The work is hardly conclusive as to the actual biological significance of the phenomenon. It would be interesting to know more under which physiological and pathological conditions PGE2 triggers such radial PKA activity changes. It is not well explained in which tissues and organs and under what conditions this type of cell-to-cell communication could be particularly important.
The greatest weakness of the study seems to be that the biological significance of the phenomenon is not clearly clarified. Although it can be deduced that PKA activation has many implications for cell signaling and metabolism, the work lacks the actual link to physiological or pathological significance.
We deeply appreciate the reviewer’s comment. Similar to the reseponse of reviewer#1, although we have intensively tried to identify the physiological relevance of RSPA, we could not detect the function.
On the other hand, we believe that the PGE2 dynamics and its regulation mechanism in the normal epidermis would be worth reporting to researchers in the field.
- The authors do not explain further why in certain cells of the cell clusters Ca2+ signals occur spontaneously and thus trigger the phenomenon. What triggers these Ca2+ changes? And why could this be linked to certain cell functions and functional changes?
At this moment, we do not have a clear answer or model for the comment although the calcium transients have been reported in the epidermis (https://doi.org/10.1038/s41598-018-24899-7). Further studies are needed and we will pursue this issue as a next project.
- What explains the radius and the time span of the radial signal continuation? To what extent are these factors also related to the degradation of PGE2? The work could be stronger if such questions and their answers would be experimentally integrated and discussed.
We agree with the reviewer’s comment. Although we have intensively studied that point, we have omitted the results because of its complications. In HeLa cells, but not MDCK cells, we demonstrate the meaning of the radius of RSPA (https://pubmed.ncbi.nlm.nih.gov/37813623/)
- The authors could consider whether they could investigate the subcellular translocation of cPLA2 in correlation with cytosolic Ca2+ signals using GFP technology and high-resolution fluorescence microscopy with their cell model.
Actually, we tried to monitor the cPLA2 translocation using GFP-tagged cPLA2. However, the translocation of GFP-cPLA2 was detected, only when the cells were stimulated by calcium ionophore. At this point, we have concluded that the quantitative analysis of cPLA2 translocation would be difficult.
Reviewer #3 (Recommendations For The Authors):
- "The cell density in the basal layer is approximately 2x106 cells cm-2, which is markedly higher than that in MDCK cells (Fig. 2D). It is not clear whether this may be related to the lower frequency (~300 cm-2 h-1) and smaller radius of RSPA in the basal layer cells compared to MDCK cells (Fig. 2E)." Wasn't the relationship with cell density the opposite, higher density higher frequency? Isn't then this result contradicting the "cell density rule" that the authors argue is there in the in vitro system? The authors need to revise their interpretation of the data obtained.
We agree with the reviewer’s comment. Currently, we do not find the "cell density rule" in mouse epidermis. It would be difficult to identify common rules between mouse epidermis and MDCK cells. However, although it is descriptive, we believe it is worth comparing the MDCK results at this moment.
- Similarly, the authors over conclude on the explanation of lack of change in the size of RSPA size when the change in fluorescence for the calcium reporter surpasses a threshold by saying that "This observation indicates that the amount of PGE2 secretion is predetermined and that there is a threshold of the cytoplasmic calcium concentration for the triggered PGE2 secretion." First, the study does not really measure directly PGE2 secretion. Hence, there is no way that they can argue that the level of PGE2 secreted is "predetermined". Instead, there could be an inhibitory mechanism that is triggered to limit further activation of PGE2 signaling/PKA in neighboring cells.
We agree with the reviewer’s comment. We have omitted the context.
- To rule out a transcription-dependent mechanism in the apparent cell density-regulated sensitivity to PGE2, the authors need to inhibit transcription. We agree that our RNA-seq analysis would not 100% rule out the transcription-dependent mechanism. However, we believe that shutting down all transcription will show a severe off-target effect that indirectly affects the calcium transients and the PGE2-synthetase pathway. Therefore, our conclusion is limited.
4) EGF is reported to increase the frequency of RSPA but the change shown in Fig. 6F is not statistically significant, hence, EGF does not increase RSPA frequency in their experiments.
We have toned down the claim that EGF treatment increases the frequency (line172).
"Accordingly, the addition of EGF faintly increased the frequency of RSPA in our experiments, while the MEK and EGFR inhibitors almost completely abrogated RSPA (Fig. 6F), representing that ERK activation or basal ERK activity is essential for RSPA.“
- The Discussion section is at times redundant with the results section. References to figures should be kept in the Results section.
We would like to argue in opposition to this comment. For readers, we believe that the reference to figures would be helpful and kind. However, if eLife recommends removing the reference from the Discussion section, we will follow the publication policy.
- "Notably, the propagation of PKA activation, ~100 μm/min (Fig. 1H), is markedly faster than that of ERK activation, 2-4 μm/min (Hiratsuka et al., 2015)." The 2 kinase reporters are based on different molecular designs. Thus, it does not seem appropriate to compare the kinetics of both reporters as a proxy of the comparison of the kinetics of propagation of both kinases.
We think that we should discuss the comparison of the activity propagation between ERK and PKA. First, among many protein kinases, only ERK and PKA activities have been shown to spread in the epithelial cells. Second, both pathways are considered to be intercellular communication. Finally, crosstalk between these two pathways has been reported in several cells and organs.
-
In Figure 1E it is unclear what is significantly different from what. Statistical analysis should be added and reporting of the results should reflect the results from that analysis.
-
In Figure 3F and G the color coding is confusing. In F pink is radius and black is GCaMP6 and in G is RSPA+ and - cells. The authors should change the color to avoid ambiguity in the code.
We have amended the panels.
- In Fig. 5C, how do they normalize per cell density if they are measuring radius of the response?
In Fig5C, we just measure the increment of FRET ratio in the view fields.
- In Fig. 5D, what is the point of having a label for PTGER3 if data were not determined (ND)?
We have added what N.D. means.
“N.D. represents Not Detected.”
- It is important to assess whether ERK activation depends of PGE2 signaling to better place ERK in the proposed signaling pathway. In fact, the authors argue that "ERK had a direct effect on the production of PGE2." But it could be that ERK is downstream PGE2 signaling instead.
It could be possible in other experimental conditions via EP1 and/or EP3 pathways. However, we never detected an effect of RSPA on ERK activity by analyzing our imaging system. In addition, treatment with NSAIDs or COX-2 depletion, which completely abolishes RSPA, did not affect ERK wave propagation. Thus, in our context, we concluded that ERK is not downstream of PGE2. This notion is also supported by the NGS results in Fig. 5D.
We have refrained from discussing the pathway of PGE2-dependent ERK activation because it would be redundant.
- The authors need to explain better what they mean by "AND gate" if they want to reach a broad readership like that of eLife
We have modified the legend to explain the “AND gate” as much as possible (line639).
“Figure 7: Models for PGE2 secretion.
The frequency of calcium transients is cell density-dependent manner. While the ERK activation wave is there in both conditions. Because both calcium transient and ERK activation are required for RSPA, the probability for PGE2 secretion is regulated as “AND gate”. ”
- In Fig. 5D, "The average intensity of the whole view field of mKate2 or mKOκ, at 20 to 30 min after the addition of PGE2, was applied to calculate the mKate2/mKOκ ratio." But this means that overlapping/densely plated cells in high density will show stronger changes in fluorescence. This should be done per cell not per field of view. It is obvious that the higher density will have more dense/brighter signal in a given field of view.
We are sorry for the confusion. The cell density does not affect the FRET ratio, although the brightness could be changed. A typical example is Fig1D. Thus, we are sure that our procedures represent the PKA activity in plated cells.
- In Fig. 6B the authors need to explain how were the "randomly set positions" determined.
We have modified the legend section as below (line618).
“The ERK activities within 10 µm from the center of RSPA and within 10 µm from randomly set positions with a random number table generated by Python are plotted in the left panel. Each colored dot represents an average value of an independent experiment.”
- Sentences 314-318 are repeated in 318-322.
We deeply appreciate the reviewer’s comment and have amended
-
-
-
Writing this type of program would be, in my opinion, an imprudent use of my time. The fact that an LLM can do it for me certainly speeds up my ability to produce code in a rather direct way: I can focus on the things that matter.
That's the promise, isn't it?
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
The following is the authors’ response to the original reviews.
Reviewer #1 (Public Review):
In this study, single neurons were recorded, using tetrodes, from the parahippocampal cortex of 5 rats navigating a double-Y maze (in which each arm of a Y-maze forks again). The goal was located at any one of the 4 branch terminations, and rats were given partial information in the form of a light cue that indicated whether the reward was on the right or left side of the maze. The second decision point was uncued and the rat had no way of knowing which of the two branches was correct, so this phase of the task was more akin to foraging. Following the outbound journey, with or without reward, the rat had to return (inbound journey) to the maze and start to begin again.
Neuronal activity was assessed for correlations with multiple navigation-relevant variables including location, head direction, speed, reward side, and goal location. The main finding is that a high proportion of neurons showed an increase in firing rate when the animal made a wrong turn at the first branch point (the one in which the correct decision was signalled). This increase, which the authors call rate remapping, persisted throughout the inbound journey as well. It was also found that head direction neurons (assessed by recording in an open field arena) in the same location in the room were more likely to show the rate change. The overall conclusion is that "during goal-directed navigation, parahippocampal neurons encode error information reflective of an animal's behavioral performance" or are "nodes in the transmission of behaviorally relevant variables during goal-directed navigation."
Overall I think this is a well-conducted study investigating an important class of neural representation: namely, the substrate for spatial orientation and navigation. The analyses are very sophisticated - possibly a little too much so, as the basic findings are relatively straightforward and the analyses take quite a bit of work to understand. A difficulty with the study is that it was exploratory (observational) rather than hypothesis-driven. Thus, the findings reveal correlations in the data but do not allow us to infer causal relationships.
We would like to clarify that this report consists of hypothesis-driven experiments, with post-hoc exploratory analyses. We have now made hypotheses more explicit in the text, and pointed out that follow-up analyses were to understand how these effects came to be. We thank the reviewer for pointing out that our hypotheses were not explicit in the introduction. We believe our results open the door for investigating the causal role of these regions in the propagation or generation of error signals during navigational behavior. Those types of experiments are however, outside the scope of the current work.
That said, the observation of increased firing in a subset of neurons following an erroneous choice is potentially interesting. However, the effect seems small. What were the actual firing rate values in Hz, and what was the effect size?
We thank the reviewer for the opportunity to clarify the effect size question. As there are multiple neurons in the analyses, differences in firing rate need necessarily to be normalized by a neuron's mean activity. For example, a difference of 1 spk/s is less meaningful when a neuron's base rate is 50 spk/s than when it is 10spks/s. Furthermore, our reports are for population level analyses, at which point comparing raw firing rate values and differences becomes more challenging. Nonetheless, we are including these raw metrics in two new supplemental figures (Figure 2 - figure supplement 4,5), where differences in individual neurons change can be up to 15 spks/s. Additionally, the patterns and statistical results observed in the main text are preserved, with outbound Right Cue minus Left Cue showing a left>stem>right (indicating error coding), and RW minus NRW showing negative values across all segments, indicating NRW>RW or higher activity following on inbound unrewarded trials. Statistics follow the corresponding main text results (Cue: segment LRT = 71.70; RW: segment LRT=45.80).
I also feel we are lacking information about the underlying behavior that accompanies these firing rate effects. The authors say "one possibility is that the head-direction signal in the parahippocampal region reflects a behavioral state related to the navigational choice or the lack of commitment to a particular navigational route" which is a good thought and raises the possibility that on error trials, rats are more uncertain and turn their heads more (vicarious trial and error) and thus sample the preferred firing direction more thoroughly. Another possibility is that they run more slowly, which is associated with a higher firing rate in these cells. I think we, therefore, need a better understanding of how behavior differed between error trials in terms of running speed, directional sampling, etc.
In terms of running speed, there was a small effect of mean running speed between correct and incorrect trials (across subjects LMEM: Cue correct>incorrect Z=2.3, p=0.02; RW Z=2.15, p=0.03). In most neurons, increases in speed will be accompanied by increases in firing rate. Thus, the differences in running speed cannot explain the observed results, as higher speed during correct trials would predict higher activity, which is the opposite of what we found.
A few good, convincing raw-data plots showing a remapping neuron on an error trial and a correct trial on the same arm would also be helpful (the spike plots were too tiny to get a good sense of this: fewer, larger ones would be more helpful).
Additional plots for individual units have been added, Figure 2 - figure supplement 3.
It would be useful to know at what point the elevated response returned to baseline, how - was it when the next trial began, and was the drop gradual (suggesting perhaps a more neurohumoral response) or sudden.
Due to the experimental design, this question cannot be addressed fully. Concretely, error trials incur a time-penalty in which the rats need to wait an additional 10 seconds before the next trial, while a new trial would start immediately when the animal nose-poked the home well after a correct trial. Nonetheless, the data on Reward provides insight into this question. The magnitude of the responses on left and right segments of the maze were larger than on the stem for Unrewarded (NRW) vs Rewarded (RW) trials on inbound trajectories, Fig. 4c. This suggests that while activity is still elevated post-incorrect throughout the maze, across units, this effect is smaller on the stem segment. Additionally, the analyses indicate that in the transition between outbound vs inbound trajectories (Figure 4 - figure supplement 3), activity patterns are sustained (incorrect>correct). Together, these results indicate that elevated "error-like" signal are slow in returning to baseline.
Reviewer #2 (Public Review):
This work recorded neurons in the parahippocampal regions of the medial entorhinal cortex (MEC) and pre- and para-subiculum (PrS, PaS) during a visually guided navigation task on a 'tree maze'. They found that many of the neurons reflected in their firing the visual cue (or the associated correct behavioral choice of the animal) and also the absence of reward in inbound passes (with increased firing rate). Rate remapping explained best these firing rate changes in both conditions for those cells that exhibited place-related firing. This work used a novel task, and the increased firing rate at error trials in these regions is also novel. The limitation is that cells in these regions were analyzed together.
We acknowledge this limitation on our study, and we believe there might be interesting differences between these regions. Unfortunately, the post-mortem extraction of the recording implant micro-drive used for these experiments generated too much tissue damage for exact localization of the tetrodes. Nonetheless, given that the patterns were observed in all subjects, we are confident that at least the major findings of "error-like" signaling is present across the parahippocampal regions. At the same time, the distributions of functional cell types as defined in the open field are different across the PaS, PrS and MEC, leaving the possibility of a more nuanced error coding scheme by region.
Reviewer #3 (Public Review):
The authors set out to explore how neurons in the rodent parahippocampal area code for environmental and behavioral variables in a complex goal-directed task. The task required animals to learn the association between a cue and a spatial response and to use this information to guide behavior flexibly on a trial-by-trial basis. The authors then used a series of sophisticated analytical techniques to examine how neurons in this area encode spatial location, task-relevant cues, and correct vs. incorrect responding. While these questions have been addressed in studies of hippocampal place cells, these questions have not been addressed in these upstream parahippocampal areas.
Strengths:
1) The study presents data from ensembles of simultaneously recorded neurons in the parahippocampal region. The authors use a sophisticated method for ensuring they are not recording from the same neurons in multiple sessions and yet still report impressive sample sizes.
2) The use of the complex behavioral task guards against stereotyped behavior as rats need to continually pay attention to the relevant cue to guide behavior. The task is also quite difficult ensuring rats do not reach a ceiling level of performance which allows the authors to examine correct and incorrect trials and how spatial representations differ between them.
3) The authors take the unusual approach of not pre-processing the data to group neurons into categories based on the type of spatial information that they represent. This guards against preconceived assumptions as to how certain populations of neurons encode information.
4) The sophisticated analytical tools used throughout the manuscript allow the authors to examine spatial representations relative to a series of models of information processing.
5) The most interesting finding is that neurons in this region respond to situations where rewards are not received by increasing their firing rates. This error or mismatch signal is most commonly associated with regions of the basal ganglia and so this finding will be of particular interest to the field.
Weaknesses:
1) The histological verification of electrode position is poor and while this is acknowledged by the authors it does limit the ability to interpret these data. Recent advances have enabled researchers to look at very specific classes of neurons within traditionally defined anatomical regions and examine their interactions with well-defined targets in other parts of the brain. The lack of specificity here means that the authors have had to group MEC, PaS, and PrS into a functional group; the parahippocampus. Their primary aim is then to examine these neurons as a functional group. Given that we know that neurons in these areas differ in significant ways, there is not a strong argument for doing this.
See response to Reviewer 2.
2) The analytical/statistical tools used are very impressive but beyond the understanding of many readers. This limits the reader's ability to understand these data in reference to the rest of the literature. There are lots of places where this applies but I will describe one specific example. As noted above the authors use a complex method to examine whether neurons are recorded on multiple consecutive occasions. This is commendable as many studies in the field do not address this issue at all and it can have a major impact as analyses of multiple samples of the same neurons are often treated as if they were independent. However, there is no illustration of the outputs of this method. It would be good to see some examples of recordings that this method classifies as clearly different across days and those which are not. Some reference to previously used methods would also help the reader understand how this new method relates to those used previously.
We have added an additional Supplemental Figure (Figure 7 - figure supplement 1, that showcases the matching waveform approach. In the original manuscript, Fig. 7a provided an example output of the method.
3) The effects reported are often subtle, especially at the level of the single neuron. Examples in the figures do not support the interpretations from the population-level analysis very convincingly.
Additional plots for individual units have been added, Figure 2 - figure supplement 3. However, the effects, though small by unit, are consistent across neurons and subjects.
The authors largely achieve their aims with an interesting behavioral task that rats perform well but not too well. This allows them to examine memory on a trial-by-trial basis and have sufficient numbers of error trials to examine how spatial representations support memory-guided behavior. They report ensemble recordings from the parahippocampus which allows them to make conclusions about information processing within this region. This aim is relatively weak though given that this collection of areas would not usually be grouped together and treated as a single unitary area. They largely achieve their aim of examining the mechanisms underlying how these neurons code task-relevant factors such as spatial location, cue, and presence of reward. The mismatch or error-induced rate remapping will be a particularly interesting target for future research. It is also likely that the analytical tools used in this study could be used in future studies.
Reviewer #1 (Recommendations For The Authors):
1) Typo: "attempted to addresses these challenges"
We thank the reviewer for pointing out, this has been fixed.
2) "classified using tuning curve based metrics" - what does "tuning curve" mean in this context?
We have clarified this sentence in the main text.
3) "MEC neurons encode time-elapsed" should be "MEC neurons encode time elapsed" (no hyphen)
We thank the reviewer for pointing out, this has been fixed.
4) "a phenomenon referred to as 'global remapping'." - I dislike this term because it has two meanings in the literature. On the one hand, it is used to contrast with rate remapping: that is, it refers to a change in the location of place fields. On the other hand, it refers to the remapping of the whole population of cells at once, as contrasted with partial remapping. I suggest calling them location remapping (vs. rate) and complete remapping (vs. partial)
We agree that this is an overloaded term in the field. We have added 'location remapping' in the intro as a more specific term for global remapping.
5) " tasks with no trial-to-trial predictability or experimenter-controlled cues and goals in the same environment." - ambiguously worded as it isn't clear whether the "no" refers to one or both of what follows. Also needs a hyphen after experimenter.
We thank the reviewer for pointing out, this sentence has been reworded for clarity.
6) " neurons changed their firing activity as a function of cue identity" - this is confounded by behavior and reward contingency, both linked to cue identity, so the statement is slightly misleading.
We thank the reviewer for pointing this out, however, we disagree that this wording is misleading. Neurons changed their activity as a function cue identity and reward contingencies. Why neurons change their activity in such a manner is a different, more nuanced question, that we addressed through our analyses by converging on the "error" like signal that these signals seem to carry.
7) "remapping" - I am not fully comfortable with the use of this term in this context. It derives from the original reports of change in the firing location of place cells, and the proposal that these cells form a "map" with the change in activity reflecting recruitment of a new map. With observations of rate changes in some place cells, the new term "rate remapping" was introduced, and now the authors are using "rate remapping" to mean firing rate changes in non-spatial cells. The meaning is thus losing its value. "Re-coding" might be slightly better, although we can argue about whether "code" is much better than "map"
While we agree with the reviewer that "remapping" has been coerced into a grab-all term, these are the accepted semantics in the field. Thus, we are disinclined to change the language.
8) Figure 1 - it would be useful to indicate somehow that one of the decision points was cued and once free choice with the random outcome - it took me a while to work this out. Also, the choice of colors for the cues needs explaining - my understanding is that rats are very insensitive to these wavelengths. And what does Pse mean? I didn't understand those scatterplots at all.
The section "Tree-Maze behavior and electrophysiological recordings" under Results go into the details of the task. A reference and additional context for the selection of cues is now included in the "Behavioral Training" methods section. Rats possess dichromatic vision systems. Caption of Figure 1, 2 includes what Pse means, the performance of a subject for a given session. The scatter plots relate remapping to performance.
9) Also on Figure 1 - in the examples shown, it looks like the animals always checked the two end arms in the same order. Was this position habit typical?
We have added additional context in "Behavioral Training" methods section. Well trained rats do exhibit stereotyped behaviors (eg. going to one well then the other).
10) "...we hypothesized that the cue remapping score would be related to a subject's performance in the task." I am struggling to see why this doesn't follow trivially from the observation that remapping occurred on error trials.
We thank the reviewer for pointing out that this could use further clarity. We have added that the magnitude of remapping is what should relate to performance. To further clarify, remapping does not occur on error trials, remapping as operationally defined in this work, is the difference of spatial maps as a function of Cue identity or Reward contingency. Thus, as a difference metric, remapping occurs because there is a difference in activity between correct and incorrect trials. The magnitude of that difference need not relate to how the subject performed on the task.
11) "With this approach, found that incorrect coding units were more likely to overlap between cue and RW coding units than correct." Missing "we". I didn't understand this sentence - what does "overlap" mean?
We have added a sentence to further clarify this point.
12) "We found that incorrect>correct activity levels on outbound trajectories predicted incorrect>correct activity levels on inbound trajectories" - I don't understand how this can be the case given that many of these units were head direction tuned and therefore shouldn't even have been active in both directions.
As seen in Figure 7b, we were able to match 217 units across tasks. Of those, "Cluster 0" with 98 units showed strong head-direction coding. While "Cluster 0" units showed strong remapping effects, there were a lot of other units that could have contributed to the "incorrect>correct" across (out/in)-bound segments. Further, head-direction coding is defined in the Open-field environment, and there's no constraint on what these neurons could do on the Tree Maze task.
13). " Error or mismatch signals conform a fundamental computation" - should be "perform"
Wording slightly changed, but "conform" as in "act in accordance to" is what we intend here.
14) " provides it with the required stiffness and chemical resistivity"- what does "chemical resistivity" mean? To what chemicals?
This is mostly in reference to rat waste and cleaning products (alcohol). We changed the wording to durability for simplicity.
15) Supp Fig 1 shows that behavioral performance was very distinctly different for one of the animals. Was its neural data any different? What happens to the overall effect if this animal is removed from the analysis?
Unless otherwise stated, all analyses are performed through linear mixed effects with "subject" as a random effect. Thus, the effects of individual subjects are accounted for.
16) Histology - it would be useful to have a line drawing from the atlas alongside the micrographs to enable easier anatomical understanding.
There was variability in the medial lateral location of the tetrodes across animals and in the histological images provided and thus, we felt this would not be useful information as a single line drawing will not encompass/apply to all histology photos.
17) Supp. Fig. 5/6 I didn't understand what Left, Stem, and Right mean at the top. Also, the color keys are too tiny to be noticed
An additional sentence has been added to the caption to clarify that left, stem, right refer to what segment was selected via the ranking of scores.
Reviewer #2 (Recommendations For The Authors):
Was there a particular reason why cells in these regions were analyzed together? Can some of the results be tested for cells of a particular region, especially the MEC? One major limitation of these results is that it is unclear which regions it applies to, e.g., one cannot be certain that data shows here that MEC cells have these firing properties.
Damage due to the extraction of the recording tetrode bundle was extensive and we were not able to parcelate out individual regions. We have added additional details on this in the "Histology" section of the methods.
It is unclear how many cells in each region are included in each analysis. There is supplementary fig 3 but not sure how many of these met the criteria to be included in a certain analysis and it does not differentiate regions. Also, was any of the MUA included in the analyses?
Isolated single units were included in all analyses, but we did not differentiate from what region each unit came from. Analyses that include MUA are separate from the main findings, and are included in supplemental figures as reference.
Was the error trial defined as a trial when the animal did not make the right light-guided choice or did it also include cases in which the light-related arm choice was correct, but the animal first went to the unrewarded end arm? Nomenclature in the results is not explained well - what is an unrewarded trial or unrewarded trajectory or an error trial?
We have added a new paragraph in the methods under Behavioral Training that address trial nomenclature. This methods section is now referenced twice in the initial paragraphs of the results section.
Were any grid cells included in the data, especially could any cross-matched across the open field and the maze runs?
This was indeed a question of interest to us, however, the number of grid-cells recorded was not adequate for meaningful statistical inference. We further sought to avoid tuning curve based functional classifications of units.
In general, the results section is difficult to read, and its accessibility could be improved.
We thank the reviewer for this accessibility point. We hope that the small tweaks as a product of this revision will improve the readability of the manuscript. We tried to have major takeaways for each result, but the nature of the analyses necessarily make the text somewhat dense.
Minor:
One of the Figure 3f references should be Figure 3g and later, Figure 44 should be corrected.
We thank the reviewer for noting this, it has been fixed.
Reviewer #3 (Recommendations For The Authors):
There are a number of issues that I think could be addressed to improve the manuscript:
1) The figure could make it clearer where the LED panel is. Are the authors confident the rats see the cue on each trial?
We have added a new supplemental figure to address this question (Figure 1 - figure supplement 1). The new figures show the 3D geometry of the maze and the location of the Cue panel. The rats were able to see the cue, otherwise task performance would have remained at chance levels.
2) The same maze has been used in a series of studies of hippocampal place cells by Paul Dudchenko's group. They also went on to examine how these representations are affected in a very similar cued spatial response task. These studies should be acknowledged.
We thank the reviewer for pointing out this oversight. We have added the Ainge et al. citation ( https://doi.org/10.1523/JNEUROSCI.2011-07.2007) when first introducing the maze and in the methods.
3) In a number of supplementary figures, the authors present neurons that are selective for different properties such as segment, cue, reward, and direction. However, the number of spatially and cue-selective cells and the criteria by which cells are designated as selective are not reported. The analyses of spatial remapping and response to cues are done at the population level so I'm not sure how these cells are classified or selected for the figures.
The procedure for selection is included in the figure captions. Each unit is ranked based on the Uz score by segment as originally shown in Figures 2 and 4.
4) Related to this, the example cells on the figures do not clearly represent the effects presented. For example, given the title of Figure 2, I assume that the cells in 2B significantly remap. However, they don't look like they remap - the cells in the top row show rate remapping in one segment of the maze while the cells in the bottom do not show clear rate remapping responses. I suspect that traditional rate map-based analyses using maps based on consistently sized pixels rather than large segments would show only very modest changes in correlations or rates across these different types of trials. It is important to report the findings in this way as the authors interpret their data relative to the rate-remapping studies which have used these analyses. Readers who do not have the time or expertise to examine the methods in detail will conclude that the effects reported here are the same as previous rate remapping studies which the examples suggest is not the case.
Additional plots for individual units have been added to the supplement, Figure 2 - figure supplement 3. However, the effects, though small by unit, are consistent across neurons and subjects (Figure 2 - figure supplement 5).
5) Why is there a bias on the stem in 2C? This is of similar size to the effect on the right size and so deserves discussion.
The analysis in question is the across unit level bias in cue-coding by maze segment. The left segment shows elevated Right Cue coding, while the right segment shows elevated Left Cue coding. There was one reported statistical result, the main effect of segment in the Linear Mixed Effects model. We expand this result in the following two ways:
- Individual statistical results by segment
a. Left Segment (Uz Coef. Estimate = 0.5, CI95%=[0.26, 0.75; p<1e-4])
b. Stem Segment (Uz Coef. Estimate = 0.22, CI95%=[-0.01, 0.47]; p=0.06)
c. Right Segment (Uz Coef. Estimate = -0.27, CI95%=[-0.51, -0.03], p=0.03)
- Reporting the joint hypothesis test of left > stem > right by unit.
a. X2=90.45, p=2.28e-20
b. The comparison of left>stem by unit:
i. coefficient estimate = 0.28, CI95%=[0.11, 0.44], p=0.0008
Although the reviewer is correct in pointing out the effect size similarity, the appropriate statistical comparisons within and across units support the stated conclusions. In terms of systematic coding bias, there is a small bias across units (60% of units) and animals (4 out 5) for the Right Cue. Although interesting, this effect is orthogonal to the comparisons of interests (within unit differences). In order to highlight this point we have added the statistics of the joint hypothesis test of left>stem>right to the main manuscript.
-
eLife assessment
In this study, neurons were recorded and combined across the parahippocampal area while rats performed a memory-guided spatial navigation task. Sophisticated analytical tools were used to provide convincing evidence that neuronal populations in these areas show behavior-related changes that might indicate the encoding of errors by the system. The valuable results suggest that rate remapping is a likely mechanism to support changes in representations that support memory-guided behavior in these regions, most interestingly in neurons that code head direction.
-
-
www.biorxiv.org www.biorxiv.org
-
Reviewer #1 (Public Review):
Summary:<br /> The manuscript "Drosophila Visuomotor Integration: An Integrative Model and Behavioral Evidence of Visual Efference Copy" provides an integrative model of the visuomotor control in Drosophila melanogaster. This model presents an experimentally derived model based on visually evoked wingbeat pattern recordings of three strategically selected visual stimulus types with well-established behavioral response characteristics. By testing variations of these models, the authors demonstrate that the virtual model behavior can recapitulate the recorded wing beat behavioral results and those recorded by others for these specific stimuli when presented individually. Yet, the novelty of this study and their model is that it allows predictions for natural visual scenes in which multiple visual stimuli occur simultaneously and may have opposite or enhancing effects on behavior. Testing three models that would allow interactions of these visual modalities, the authors show that using a visual efference copy signal allows visual streams to interact, replicating behavior recorded when multiple stimuli are presented simultaneously. Importantly, they validated the prediction of this model in real flies using magnetically tethered flies, e.g., presenting moving bars with varying backgrounds. In conclusion, the presented manuscript presents a commendable effort in developing and demonstrating the validity of a mixture model that allows predictions of the behavior of Drosophila in natural visual environments.
Strengths:<br /> Overall, the manuscript is well-structured and clear in its presentation, and the modeling and experimental research are methodically conducted and illustrated in visually appealing and easy-to-understand figures and their captions.
The manuscript employs a thorough, logical approach, combining computational modeling with experimental behavioral validation using magnetically tethered flies. This iterative integration of simulation and empirical behavioral evidence enhances the credibility of the findings.
The associated code base is well documented and readily produces all figures in the document.
Suggestions:<br /> However, while the experiments provide evidence for the use of a visual efference copy, the manuscript would be even more impressive if it presented specific predictions for the neural implementation or even neurophysiological data to support this model. Or, at the very least, a thorough discussion. Nonetheless, these models and validating behavioral experiments make this a valuable contribution to the field; it is well executed and addresses a significant gap in the modeling of fly behavior and holistic understanding of visuomotor behaviors.
Here are a few points that should be addressed:<br /> 1. The biomechanics block (Figure 2) should be elaborated on, to explain its relevance to behavior and relation to the underlying neural mechanisms.<br /> 2. It is unclear how the three integrative models with different strategies were chosen or what relevance they have to neural implementation. This should be explained and/or addressed.<br /> 3. There should be a discussion of how the visual efference could be represented in the biological model and an evaluation of the plausibility and alternatives.
-
-
disqus.com disqus.com
-
Getting the EPP/Auth code of your own domain should be instantaneous. I know of no other registrar, besides Network Solutions, that makes the process so painful. It's a multi-step process to make the request, during which they wave both carrot and stick at you to try and stop you going ahead… and when you do forge ahead, they make you wait 3 days for the code, as if to punish you for daring to ask for the right to transfer your own domain name. What are these guys smoking if they think that's how you keep customers?!
-
Network Solutions basically does not want to provide EPP code. On website it says requesting EPP would take 3 days to get approved (which doesn't make any sense), and in fact they never send out any EPP code. Instead, you will have to call them and ask for EPP code in person. They claimed that their system had some problems sending those emails, however do you really believe that? I don't think it is indeed a "problem" if it's been there for over one year.
-
-
learn-us-east-1-prod-fleet01-xythos.content.blackboardcdn.com learn-us-east-1-prod-fleet01-xythos.content.blackboardcdn.com
-
In 1966, the film industryabandoned the Production Code, replacing it with a film rating system which is still inforce
The start of more risque movies that probably reflected American culture more because it was less about what the government wanted and more about what the people found entertaining
-
The code prohibited nudity, profanity, white slavery, miscegenation,“excessive and lustful kissing,” and “scenes of passion” that “stimulate the lower andbaser element.” It also forbade Hollywood from glorifying crime or adultery. Toenforce the code, the Breen Office was empowered to grant or withhold a seal ofapproval. Without a seal, a movie could not be played in the major theater chains
Censorship of art probably contributed to a mass commercialized culture
-
During that decade,Americans were engaged in a full-scale revolt against a stifling Victorian code ofpropriety and the confining routine of urban, industrial life.
There was a widespread rejection of the restrictive societal norms of the Victorian era and the constraints imposed by urbanization and industrialization
-
-
Local file Local file
-
often have con-versational traits and are written in informal language
digitalk code-switching
-
-
runestone.academy runestone.academy
-
Try to guess what the code below will print before running it. Can you get the last element in the nameList to print it out? Can you set the first element in the list to your name and print out the list?
?
-
-
www.econometrics-with-r.org www.econometrics-with-r.org
-
# generate the vector of probabilities probability <- rep(1/6, 6) # plot the probabilities plot(probability, xlab = "Outcomes", ylab="Probability", main = "Probability Distribution", pch=20)
This is just not very well-explained imo
For those of your reading (as beginners will surely have trouble understanding the code here)
probability <- rep(1/6,6)meant that we created a vector calledprobabilitywhose value is given byrep(1/6, 6)which basically means "repeat '1/6' six times", it's the same thing as doingprobability <- (1/6, 1/6, 1/6, 1/6, 1/6, 1/6)Also,
pch=20basically means the value points are represented by filled dots (which is number 20 in the Plotting CHaracteristics parameter)
-
-
stylo.ecrituresnumeriques.ca stylo.ecrituresnumeriques.ca
-
les écrans,
Le terme est trop imprécis et prête à confusion alors que vous évoquez successivement la relation à la messagerie électronique, aux réseaux sociaux et au code. Le terme écran est fourre-tout et très inexact ici.
-
-
cuis-smalltalk.github.io cuis-smalltalk.github.io
-
Cuis-Smalltalk is a pure object oriented programming (OOP) language. All the entities in the language: integers, floats, rational numbers, strings, collections, blocks of code and so forth – every instance usable as a noun in Smalltalk – is an object.
ProtoObject newenters an infinite loop in Cuis University 5981. Fixed in Cuis.
-
-
cuis-smalltalk.github.io cuis-smalltalk.github.io
-
These two overriding methods are more efficient as they avoid unnecessary checks and ifTrue/ifFalse branches. Polymorphism is often used to avoid unnecessary checks and code branches.
The goal is not computing efficiency but flexibility, scalability, simplicity, readability; that is, the goal is human efficiency.
-
-
forums.zotero.org forums.zotero.org
-
I'm surprised if it doesn't use HTML at all, since the annotation templates (which control exporting PDF annotations into notes, right?) take HTML. I wonder if it might be possible to simply allow the user to reactivate TinyMCE via preferences, since the two editors are probably interchangeable in the code?
- idea
-
- Dec 2023
-
docs.docker.com docs.docker.com
-
Docker overviewDocker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker's methodologies for shipping, testing, and deploying code, you can significantly reduce the delay between writing code and running it in production.
short info for Docker
-
-
openclassrooms.com openclassrooms.com
-
Vous avez trouvé comment faire ? Allez vérifier sur la branche P2C5-solution !
J'ai reussir l'exo mais pas le meme code. C'est un probleme ?
-
-
www.digitalocean.com www.digitalocean.com
-
It is important to note that .__proto__ is a legacy feature and should not be used in production code, and it is not present in every modern browser. However, we can use it throughout this article for demonstrative purposes.
-
-
-
Reviewer #2 (Public Review):
Summary:<br /> In this manuscript, L&S investigates the important general question of how humans achieve invariant behavior over stimuli belonging to one category given the widely varying input representation of those stimuli and more specifically, how they do that in arbitrary abstract domains. The authors start with the hypothesis that this is achieved by invariance transformations that observers use for interpreting different entries and furthermore, that these transformations in an arbitrary domain emerge with the help of the transformations (e.g. translation, rotation) within the spatial domain by using those as "scaffolding" during transformation learning. To provide the missing evidence for this hypothesis, L&S used behavioral category learning studies within and across the spatial, auditory, and visual domains, where rotated and translated 4-element token sequences had to be learned to categorize and then the learned transformation had to be applied in new feature dimensions within the given domain. Through single- and multiple-day supervised training and unsupervised tests, L&S demonstrated by standard computational analyses that in such setups, space and spatial transformations can, indeed, help with developing and using appropriate rotational mapping whereas the visual domain cannot fulfill such a scaffolding role.
Strengths:<br /> The overall problem definition and the context of spatial mapping-driven solution to the problem is timely. The general design of testing the scaffolding effect across different domains is more advanced than any previous attempts clarifying the relevance of spatial coding to any other type of representational codes. Once the formulation of the general problem in a specific scientific framework is done, the following steps are clearly and logically defined and executed. The obtained results are well interpretable, and they could serve as a good stepping stone for deeper investigations. The analytical tools used for the interpretations are adequate. The paper is relatively clearly written.
Weaknesses:<br /> Some additional effort to clarify the exact contribution of the paper, the link between analyses and the claims of the paper, and its link to previous proposals would be necessary to better assess the significance of the results and the true nature of the proposed mechanism of abstract generalization.
1) Insufficient conceptual setup: The original theoretical proposal (the Tolman-Eichenbaum-Machine, Whittington et al., Cell 2020) that L&S relate their work to proposes that just as in the case of memory for spatial navigation, humans and animals create their flexible relational memory system of any abstract representation by a conjunction code that combines on the one hand, sensory representation and on the other hand, a general structural representation or relational transformation. The TEM also suggests that the structural representation could contain any graph-interpretable spatial relations, albeit in their demonstration 2D neighbor relations were used. The goal of L&S's paper is to provide behavioral evidence for this suggestion by showing that humans use representational codes that are invariant to relational transformations of non-spatial abstract stimuli and moreover, that humans obtain these invariances by developing invariance transformers with the help of available spatial transformers. To obtain such evidence, L&S use the rotational transformation. However, the actual procedure they use actually solved an alternative task: instead of interrogating how humans develop generalizations in abstract spaces, they demonstrated that if one defines rotation in an abstract feature space embedded in a visual or auditory modality that is similar to the 2D space (i.e. has two independent dimensions that are clearly segregable and continuous), humans cannot learn to apply rotation of 4-piece temporal sequences in those spaces while they can do it in 2D space, and with co-associating a one-to-one mapping between locations in those feature spaces with locations in the 2D space an appropriate shaping mapping training will lead to the successful application of rotation in the given task (and in some other feature spaces in the given domain). While this is an interesting and challenging demonstration, it does not shed light on how humans learn and generalize, only that humans CAN do learning and generalization in this, highly constrained scenario. This result is a demonstration of how a stepwise learning regiment can make use of one structure for mapping a complex input into a desired output. The results neither clarify how generalizations would develop in abstract spaces nor the question of whether this generalization uses transformations developed in the abstract space. The specific training procedure ensures success in the presented experiments but the availability and feasibility of an equivalent procedure in a natural setting is a crucial part of validating the original claim and that has not been done in the paper.
2) Missing controls: The asymptotic performance in experiment 1 after training in the three tasks was quite different in the three tasks (intercepts 2.9, 1.9, 1.6 for spatial, visual, and auditory, respectively; p. 5. para. 1, Fig 2BFJ). It seems that the statement "However, our main question was how participants would generalise learning to novel, rotated exemplars of the same concept." assumes that learning and generalization are independent. Wouldn't it be possible, though, that the level of generalization depends on the level of acquiring a good representation of the "concept" and after obtaining an adequate level of this knowledge, generalization would kick in without scaffolding? If so, a missing control is to equate the levels of asymptotic learning and see whether there is a significant difference in generalization. A related issue is that we have no information on what kind of learning in the three different domains was performed, albeit we probably suspect that in space the 2D representation was dominant while in the auditory and visual domains not so much. Thus, a second missing piece of evidence is the model-fitting results of the ⦰ condition that would show which way the original sequences were encoded (similar to Fig 2 CGK and DHL). If the reason for lower performance is not individual stimulus difficulty but the natural tendency to encode the given stimulus type by a combo of random + 1D strategy that would clarify that the result of the cross-training is, indeed, transferring the 2D-mapping strategy.
Tags
Annotators
URL
-
-
webdevelopmenthistory.com webdevelopmenthistory.com
-
Over thirty years later, in 2021, we finally got to see some of the original source code for the World Wide Web. In June of this year, Berners-Lee put an NFT (non-fungible token) of nearly 10,000 lines of the code up for sale at Sothebys.
This suggests that the source code wasn't available before the NFT auction. It's been public domain for 30+ years.
-
-
web.archive.org web.archive.org
-
735: _Nen_Kumi Name______ : 2006/03/04 (Sat) 23:35:55 ID:??? >>732 5×3 was used as a book search card. (Almost all electronic now) It 's a little smaller than the popular version of the productivity notebook, making it ideal for portable notes. Other purposes include memorization cards and information retrieval. However, B7 and mini 6-hole system notebooks are almost the same size, so they are being pushed out and are not widely used in Japan. How to do it in a book called How to Write an American-style Essay. 1.Write a tentative table of contents. 2.Write out the required literature on 5x3 cards. a Classification code in the upper right corner b Author name and book title in the middle. c Assign a serial number to the top left. d Below is where you can get information.Finally, write down all the information necessary for the paper's citation list. (4-a) 3. Rewrite the literature cards into a list. (It's a pain twice, but he says to do it.) 4. Write the information on 5x3 cards. a Prepare literature cards and literature. Finish your bibliography cards. (2-e) bWrite an information card ① One memo per card, information is the golden rule ② Write it in your own words ③ When copying, enclose it in quotation marks. ⑤ Serial number of the literature card in the upper left ⑥ Tentative table of contents and card keyword in the upper right 5. Once all the literature cards are checked, rearrange them in the order of the table of contents. Elaboration. 6. The rest is drafting, footnotes, reviewing, citing, proofreading, and finishing.
Apparently there is a Japanese text with the title "How to Write and American-style Essay" which recommends using classification codes in the upper right and an assigned serial number in the top left.
How was this related (or not) to Luhmann's practice or to the practices of the Dewey Decimal System? [Update: not related at all, see: https://hypothes.is/a/bDEoiqT3Ee6lAeNajBBsjw]
-
-
www.biorxiv.org www.biorxiv.org
-
AbstractAntimicrobial resistance (AMR) is a global public health threat. Environmental microbial communities act as reservoirs for AMR, containing genes associated with resistance, their precursors, and the selective pressures to encourage their persistence. Genomic surveillance could provide insight into how these reservoirs are changing and their impact on public health. The ability to enrich for AMR genomic signatures in complex microbial communities would strengthen surveillance efforts and reduce time-to-answer. Here, we test the ability of nanopore sequencing and adaptive sampling to enrich for AMR genes in a mock community of environmental origin. Our setup implemented the MinION mk1B, an NVIDIA Jetson Xavier GPU, and flongle flow cells. We observed consistent enrichment by composition when using adaptive sampling. On average, adaptive sampling resulted in a target composition that was 4x higher than a treatment without adaptive sampling. Despite a decrease in total sequencing output, the use of adaptive sampling increased target yield in most replicates.
This work has been published in GigaByte Journal under a CC-BY 4.0 license (https://doi.org/10.46471/gigabyte.103), and has published the reviews under the same license. These are as follows.
**Reviewer 1. Ned Peel. **
Is the source code available, and has an appropriate Open Source Initiative license been assigned to the code?
Yes. I do not think the authors have included a specific license and assume the code will be released under a Creative Commons CC0 waiver.
As Open Source Software are there guidelines on how to contribute, report issues or seek support on the code?
No. No guidelines on how to contribute, report issues or seek support on the code.
Is there a clearly-stated list of dependencies, and is the core functionality of the software documented to a satisfactory level?
Yes. A list of software used, along with version numbers, can be found in "dart_methods_notebook.md"
Additional Comments:
The authors describe each step of the analysis well and have provided code to reproduce the analysis and figures from the manuscript.
**Reviewer 2. Julian Sommer **
Is there a clear statement of need explaining what problems the software is designed to solve and who the target audience is?
No. Not applicable to this study, since no novel software is described.
Is the source code available, and has an appropriate Open Source Initiative license been assigned to the code?
Not applicable to this study, since no novel software is described.
As Open Source Software are there guidelines on how to contribute, report issues or seek support on the code?
No. Not applicable to this study, since no novel software is described.
Is the code executable?
Unable to test. The code and software used for analysis of the data is reported in the supplement data. However, the data used in this study in the SRA biobank is not available to download at the time of this review.
Is installation/deployment sufficiently outlined in the paper and documentation, and does it proceed as outlined?
Unable to test. See above.
Is the documentation provided clear and user friendly?
Yes. The analysis steps are clearly commented.
Is there enough clear information in the documentation to install, run and test this tool, including information on where to seek help if required?
No. The code provided for the data analysis is not usable without the raw sequencing data.
Have any claims of performance been sufficiently tested and compared to other commonly-used packages?
Not applicable.
Additional Comments.
The aim of this study was to test the ability of adapting sampling sequencing on the Oxford Nanopore sequencer to enrich for antibiotic resistance genes in a synthetic mixture of bacterial DNA. DNA from six environmental bacterial isolates with known antibiotic resistance genes were mixed at equal mass and used for metagenomic sequencing on an Oxford Nanopore MinION MK1B, comparing adaptive sampling with standard sequencing. By analysing 10 sequencing runs using low throughput, low cost flongle flow cells, the authors obtained sequencing data to compare adaptive sampling and standard sequencing approaches. Using a defined composition of sequenced sample and technical and biological replicates, the method is generally suitable. From their data, the authors conclude that adaptive sequencing significantly reduces throughput and increases gene target enrichment by analysing different parameters.
This result is important for the use of adaptive sampling in general, but has already been published in numerous publications, the author cites in his study. According to the author, the novel aspect of this work is the environmental origin of the bacteria used to generate the synthetic mock community. However, since the approach of adaptive sampling does not change regardless of the origin of the sequenced DNA, there are no significant new insights generated in this study. Also, the synthetic mock community of six members does not resemble an environmental metagenomic sample with incomparably more complex species diversity with different abundances. From the data presented in this study, no conclusions can be drawn regarding the performance of adaptive sampling sequencing of environmental metagenomic samples.
To improve the study, I suggest the following: Sequencing of DNA from environmental samples using nanopore sequencing without adaptive sampling and identification of antibiotic resistance genes. Subsequently, resequencing the sample using adaptive sampling based on the identified antibiotic resistance genes and comparing the results in terms of gene target enrichment as analysed in the study. This was partly suggested by the authors and should be carried out to gain new insights into the very interesting application of metagenomic sequencing for the One Health approach.
Additionally, there are some inconsistencies in the manuscript. For example, line 128 – 132 describes the sequencing process using different flowcells and technical replicates. However, it remains unclear, how the half of the channels of each flowcell were reserved for adaptive sampling sequencing since the adaptive sampling sequencing is always performed on the whole flowcell. Additionally, it is stated, that each flowcell was used twice for sequencing, however, no method on how to reuse the flongle flowcells is described and no protocol for this is available from oxford nanopore.
-
-
sites.lib.jmu.edu sites.lib.jmu.edu
-
the unabated war we seem unable to define goes on
Because of the attempted change in code to end explicit verbal racism that Evans references in her earlier line, "all transition merely language," she is implying that the oppression of Black people has become more subversive and systematic. Racism isn't gone, and thus the war against it is not over, but it becomes more difficult to fight against a system than those that control it.
-
-
sites.lib.jmu.edu sites.lib.jmu.edu
-
Code
“Code” may be in reference to The South African Police (SAP) which was the national police force and law enforcement agency in South Africa from 1913 to 1994; it was the de facto police force in the territory of South West Africa and they enforced several policies to maintain an oppressive social structure. By referring to Winnie as the “Code” Brooks is subverting the oppressive power of the government.
-
-
cuis-smalltalk.github.io cuis-smalltalk.github.io
-
Backticks (`) can be used to create compound literals at compile time. All components of a compound literal must be known when the code is compiled.
Maybe include a link to its usage in https://cuis-smalltalk.github.io/TheCuisBook/Back-to-Spacewar_0021-Morphs.html#index-backtick
-
-
runestone.academy runestone.academy
-
2 ways to execute code in this book-
- Activecode interpreter: Runs all the code at once. Can be edited while inputting.
- Codelens interpreter: Allows you to run code step by step. But cannot be edited while inputting.
-
-
runestone.academy runestone.academy
-
Lower level languages are easier for computers to understand as the instructions are given in binary or commands made of binaries. Higher level languages have to be processed before they can be run which takes some time. Python is a high level language.
High Level Languages have certain advantages. They are-
- Easy to write: Programs are short, easily readable, more likely to be correct,
- Portable: They can be run on almost all computers with few to no modification.
The processing of a high-level language is done via 2 programs - 1. Interpreter: Processes and executes the program bit by bit(not literally) 2. Compiler: Processes the whole program and then executes it.
{Source code: Unprocessed code written in high-level language, Object code: Processed high level language code}
Python uses both ways but because of how programmers interact with python, it’s ususally called a interpreted language. There are 2 ways to use the python interpreter -
- Shell mode: Can be used to write and execute small bits of code once at a time. Kind of like a scratch paper
- Program mode: Write a whole program and execute it.
-
-
www.biorxiv.org www.biorxiv.org
-
eLife assessment
George et al. present a convincing new Python toolbox ("RatInABox") that allows researchers to generate synthetic behavior and neural data specifically focusing on hippocampal functional cell types (place cells, grid cells, boundary vector cells, head direction cells).
This is valuable for theory-driven research where synthetic benchmarks should be used. Beyond just navigation, it can be highly useful for novel tool development that requires jointly modeling behavior and neural data. The authors provide convincing evidence of its utility with well documented and easy to use code and the corresponding manuscript.
-
Reviewer #1 (Public Review):
In this work George et al. describe RatInABox, a software system for generating surrogate locomotion trajectories and neural data to simulate the effects of a rodent moving about an arena. This work is aimed at researchers that study rodent navigation and its neural machinery.
Strengths:<br /> + The software contains several helpful features. It has the ability to import existing movement traces and interpolate data with lower sampling rates. It allows varying the degree to which rodents stay near the walls of the arena. It appears to be able to simulate place cells, grid cells, and some other features.<br /> + The architecture seems fine and the code is in a language that will be accessible to many labs.<br /> + There is convincing validation of velocity statistics. There are examples shown of position data, which seem to generally match between data and simulation.
Weaknesses:<br /> + There is little analysis of position statistics. I am not sure this is needed, but the software might end up more powerful and the paper higher impact if some position analysis was done. Based on the traces shown, it seems possible that some additional parameters might be needed to simulate position/occupancy traces whose statistics match the data.<br /> + The overall impact of this work is somewhat limited. It is not completely clear how many labs might use this, or have a need for it. The introduction could have provided more specificity about examples of past work that would have been better done with this tool.<br /> + Presentation: Some discussion of case studies in Introduction might address the above point on impact. It would be useful to have more discussion of how general the software is, and why the current feature set was chosen. For example, how well does RatInABox deal with environments of arbitrary shape? T-mazes? It might help illustrate the tool's generality to move some of the examples in supplementary figure to main text - or just summarize them in a main text figure/panel.
-
Reviewer #3 (Public Review):
George et al. present a convincing new Python toolbox that allows researchers to generate synthetic behavior and neural data specifically focusing on hippocampal functional cell types (place cells, grid cells, boundary vector cells, head direction cells). This is highly useful for theory-driven research where synthetic benchmarks should be used. Beyond just navigation, it can be highly useful for novel tool development that requires jointly modeling behavior and neural data. The code is well organized and written and it was easy for us to test.
We have a few constructive points that they might want to consider.
- Right now the code only supports X,Y movements, but Z is also critical and opens new questions in 3D coding of space (such as grid cells in bats, etc). Many animals effectively navigate in 2D, as a whole, but they certainly make a large number of 3D head movements, and modeling this will become increasingly important and the authors should consider how to support this.
- What about other environments that are not "Boxes" as in the name - can the environment only be a Box, what about a circular environment? Or Bat flight? This also has implications for the velocity of the agent, etc. What are the parameters for the motion model to simulate a bat, which likely has a higher velocity than a rat?
- Semi-related, the name suggests limitations: why Rat? Why Not Agent? (But its a personal choice)
- A future extension (or now) could be the ability to interface with common trajectory estimation tools; for example, taking in the (X, Y, (Z), time) outputs of animal pose estimation tools (like DeepLabCut or such) would also allow experimentalists to generate neural synthetic data from other sources of real-behavior.
- What if a place cell is not encoding place but is influenced by reward or encodes a more abstract concept? Should a PlaceCell class inherit from an AbstractPlaceCell class, which could be used for encoding more conceptual spaces? How could their tool support this?
- This a bit odd in the Discussion: "If there is a small contribution you would like to make, please open a pull request. If there is a larger contribution you are considering, please contact the corresponding author3" This should be left to the repo contribution guide, which ideally shows people how to contribute and your expectations (code formatting guide, how to use git, etc). Also this can be very off-putting to new contributors: what is small? What is big? we suggest use more inclusive language.
- Could you expand on the run time for BoundaryVectorCells, namely, for how long of an exploration period? We found it was on the order of 1 min to simulate 30 min of exploration (which is of course fast, but mentioning relative times would be useful).
- Regarding the Geometry and Boundary conditions, would supporting hyperbolic distance might be useful, given the interest in alternative geometry of representations (ie, https://www.nature.com/articles/s41593-022-01212-4)?
- In general, the set of default parameters might want to be included in the main text (vs in the supplement).
- It still says you can only simulate 4 velocity or head directions, which might be limiting.
- The code license should be mentioned in the Methods.
-
-
fortelabs.hosted.panopto.com fortelabs.hosted.panopto.com
-
Code CO TE. And, so I get the pleasure of officiall
CODE is actually OCDE.
-
-
cuis-smalltalk.github.io cuis-smalltalk.github.io
-
Not to save the image is just best practice advice for you when your primary goal is to create new code. We already discussed the caveats of saving the image concerning code management (See The Image). But from time to time, you’ll find yourself in the position of an explorer when you open multiple code browsers and workplaces to figure something out. In this case, the state of the system, the open windows and code snippets, holds the value you care about, and saving the image is the right way to preserve the system’s state.27
This should go in the previous section Daily Workflow.
I submitted a PR
-
-
cuis-smalltalk.github.io cuis-smalltalk.github.io
-
In addition to adding a package preload requirement, you can also select a requirement and delete or update it using the buttons at the lower right. Sometimes a package changes which your code depends on and you have to change your code to accord. When this happens, to want to be sure to require the newer, changed version. Selecting a requirement and pressing update will update the requirement to use the latest loaded package version.
This should go in the previous section The Package.
I submitted a PR.
-
-
cuis-smalltalk.github.io cuis-smalltalk.github.io
-
This is a drawback when using the image as your sole source code repository. The net result could be loosing your work.
Then the problem is not keeping backups, and not the fact that we are working with an image.
-
-
precious-froyo-a52191.netlify.app precious-froyo-a52191.netlify.app
-
leave the groups ordered alphabetically
The only exception to this I'd make is that I'd typically move unknown/not answered groups to the end. I don't know that there is a way for you to build that into the code, since those groups can vary a bit in name/context. Just thought I'd mention in case you can think of a way to do that, or maybe we just add some contextual info on that to the guide so people are prompted to do it themselves (and know how) if it comes up.
-
-
redux-toolkit.js.org redux-toolkit.js.org
-
Codemods
codemods 这个词是 "code modifications" 的缩写,指的是用来自动修改代码的工具。
-
-
www.sciencedirect.com www.sciencedirect.com
-
Charles RiverCrl: CFW(SW)Strain Code: 024
DOI: 10.1016/j.isci.2023.108600
Resource: (IMSR Cat# CRL_024,RRID:IMSR_CRL:024)
Curator: @evieth
SciCrunch record: RRID:IMSR_CRL:024
-
-
learning.oreilly.com learning.oreilly.com
-
Specifying REST APIs Using OpenAPI
Why OpenAPI? What problems does it solve? What are the limitations?
Code generation - It helps generate producer and consumer codes that will accelerate developer productivity, by the way of removing manual drudgery and by speeding up contract negotiations
Reduced cognitive load - Although not as acknowledged, standard ways of defining, and communicating things reduce the cognitive load on the consumers.
Validation - Standards help build tools that solve problems like request/response validation against a specification
Examples and mocking - Again, better tooling helps with things like code generation for testing the API, and to generate example requests and responses
Detecting changes - It makes it easier to diff different versions of the APIs, again reducing the cognitive load on the developers.
-
-
blog.codinghorror.com blog.codinghorror.com
-
Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.
In reality, It is a mix between these two attitudes. Programming is being good at telling the computer what to do, in the most efficient way. This whole process requires a good amount of knowledge, design, and thinking. But coding, just the part where you're writing code, should be focused on readability because humans are the ones that interact with the text, not computers.
-
-
pyimagesearch.com pyimagesearch.com
-
From there, open up a terminal, and execute the following command: → Launch Jupyter Notebook on Google Colab → Launch Jupyter Notebook on Google Colab OpenCV Social Distancing Detector
Trash Site. Does not Actually provide code. Shows ads when you click on Launcher Jupyter Notebook
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response
The following is the authors’ response to the original reviews.
Reviewer #1 (Public Review):
The importance of the role of sexual behavior, specifically ejaculation rates, is worth emphasizing for the formation of pair bonds in prairie voles. It suggests that the role of sexual behavior in contributing to the strength of pair bonds should be explored more. It is also important to add that males and females in the study were screened for sexual receptivity. It would therefore be important to identify characteristics of animals that did not mate under the laboratory conditions used that may add depth and complexity to what was identified in the current study. The identification of brain regions for pair bond maintenance centered around the amygdala was also intriguing.
Thank you for pointing some interpretations of our findings that can be emphasized in the Discussion. We added the following sentences to the Discussion:
“Our findings, along with this previous work, support the hypothesis that sexual behavior plays a key role in driving pair-bond strength. However, the current study focused on animals that were screened for sexual receptivity, which may have limited variation in sexual behavior across pairs. An intriguing direction for future research will be to test how this variation contributes to bond strength.”
We also emphasized amygdala in relation to pair bond maintenance. We added the following sentence to the Discussion:
“These brain regions, and especially amygdala, will be important candidates for future research on neural regulation of pair-bond maintenance.”
The issue of the lack of a strong presence of the reward circuitry (nucleus accumbens) in the final models is also worth more discussion. Perhaps it has been overly emphasized in the past, but there are strong results from other studies pointing to the importance of reward circuitry.
Thank you for this suggestion. There is a section in the Results that analyses accumbens in more detail than other brain regions. Accumbens did not survive our corrections for multiple statistical tests, however it was significant at early timepoint without these corrections. This Results paragraph states the following:
“Although the nucleus accumbens did not survive multiple test corrections in our ROI analysis (q=0.17), it was significant in univariate analysis (p=0.03), particularly when focused on the 2.5 and 6h timepoints (two sample t-test: t=2.53, p=0.01, Video 2). Furthermore, voxel-level comparisons revealed significant sites within the ventral striatum and the posterior nucleus accumbens (Figure 2A, Figure Supplement 1b-c, Video 2).”
We added Supplementary File 4, which contains model comparison results for accumbens and all other ROIs. We also added more detail on nucleus accumbens to the Discussion:
“Pairing drove increased c-Fos expression in the ventral pallidum, a major node in reward circuity, as well as in the paraventricular nucleus and the medial preoptic area, modulators of reward. This is consistent with a large body of work implicating neuropeptide actions on reward circuits in the formation of bonds (Walum & Young, 2018; Young & Wang, 2004). Conspicuously missing from our list, however, is significant pairing induced c-Fos induction in the nucleus accumbens. One possibility is that an absence of significant accumbens IEG induction reflects the limitations of using c-Fos and other immediate early genes as indicators of neural activity. It is known that some neuronal populations can be active without expressing c-Fos (Sheng & Greenberg, 1990). Indeed, although a variety of studies implicate the accumbens in bond formation (Amadei et al., 2017; Aragona et al., 2006; Scribner et al., 2020), previous work finds only weak c-Fos induction in the prairie vole accumbens during bonding (Curtis & Wang, 2003). Another possibility is that there was heterogeneous activation in the accumbens that was not captured by the precision of our atlas. Consistent with this interpretation, found that the accumbens was significant in univariate tests, as well as in voxel-level analyses. Overall, our results do not conflict with pharmacological, electrophysiological, and calcium-imaging data on the role of the nucleus accumbens in prairie vole bonding (Amadei et al., 2017; Aragona et al., 2006; Scribner et al., 2020). Instead, the absence of significant effects at the level of the entire nucleus accumbens together with the presence of anatomically restricted voxel-level significance suggests substantial anatomical heterogeneity in the contributions of the nucleus accumbens to bond formation.”
Please discuss the consequences of creating the behavioral data for pair bond formation by subtracting same-sex pairs interactions from the opposite-sex interactions. What sources of information are removed by using this approach?
One limitation of our study’s approach is that we are unable to fully separate information related to social novelty from mating experience. Thank you for pointing out that we should touch on this sort of caveat in the paper. We added several sentences to the Discussion:
“It seems likely that sensory and motor areas were important for social processes related to both pair-bonding and reunion with same-sex cagemates, such as investigation and recognition. Our study design, however, highlights differences between treatments, and in order to detect such effects, it might be necessary to compare mating and bonding pairs to animals left in complete isolation.”
We reiterate the point in a new paragraph we added to the Discussion to explicitly provide caveats regarding our data:
“Before offering a synthesis of our findings, it would be useful to acknowledge a few caveats. First, as noted above, IEG induction does not capture all relevant neural activity. Second, the design of our experiment, which controlled for social interaction, likely excluded many circuits important to both pair bonding and sibling social interactions. Third, c-Fos activity within a given brain region may nevertheless rely on distinct cell types, and so the absence of sex differences in c-Fos immunoreactivity does not definitively rule out the sexually dimorphic circuits hypothesized in the “dual function hypothesis” (de Vries, 2004). Lastly, the current study focused on animals that were screened for sexual receptivity, which may have limited the variation in sexual behavior across opposite-sex pairs.”
Time 0 is when the barrier is removed after a two-hour exposure. Please speculate on what is going on during the two-hour exposure. Time zero is potentially more than the time of mating. Is it possible that aggression is being decreased during this timepoint that represents mating? Could it also be a measure of the outcome of an initial compatibility assessment by the male and female?
Thank you for this interesting observation. While the opaque divider prevented physical social interactions, it is possible that animals picked up on auditory or olfactory cues. We did not detect group differences in movement patterns and vocalization rates from the 0 h timepoint group (Figure 2). These findings suggest that potential partner detection and assessment occurred in a similar way for both experiment groups. It is unlikely that this period represents a decrease in aggression, since unbonded prairie voles are not known to be aggressive towards conspecifics. However, the idea that animals may potentially use olfactory or auditory cues to assess each other is an interesting idea, and one that we cannot rule out. We added a brief statement to the Methods “Experiment Design” section about the possibility that the two hours prior to divider removal (0 h timepoint) could represent more than an acclimation period:
“It is important to note that the opaque divider in the acclimation period prevented physical interactions, but it is possible that animal pairs may have detected each other through olfactory or auditory cues.”
We also mention this in the revised Discussion in the context of the PFC cluster, which not only differed between mating and non-mating groups, but also showed differences between isolated (0h) and socially interacting animals (sibs and mates, 2.5h-22h):
“A fourth cluster (“PFC,” green) is composed of prelimbic, infralimbic and olfactory cortex; activity in the vole prefrontal cortex is known to be modulated by hypothalamic oxytocin, and to shape bonding through projections to the nucleus accumbens (Amadei et al., 2017; Burkett et al., 2016; Horie et al., 2020). The pattern of activity in this cluster, however, indicates that it was due in part to differences between the isolated animals (0h) and other time points (Figure 4—figure supplement 1 and Figure 4—figure supplement 2). Because animals in the isolated condition were in a compartment adjacent to either an opposite sexed individual or a familiar former cagemate, we cannot rule out that olfactory or auditory cues may have made animals aware of the presence of a potential social partner. Indeed, we interpret this dimension as capturing appetitive aspects of behaviors associated with investigation of the animal isolated from the subject by the barrier.”
Reviewer #2 (Public Review):
An important caveat to this study not mentioned by the authors is that c-fos provides a snapshot of neural activity and that important populations of neurons could be active and not express c-fos. Thus observed correlations are likely to be robust, but the absence of differences (in say accumbens) may just reflect the limits of c-fos estimation of neural activity. Similarly, highly coordinated neural activity between males and females might still be driven by different mechanisms if different cell types were activated within a specific region.
We now discuss limitations of c-Fos in the Discussion paragraph that focuses on accumbens:
“The absence of significant accumbens IEG induction may reflect the limitations of using c-Fos and other immediate early genes as indicators of neural activity. It is known that some neuronal populations can be active without expressing c-Fos (Sheng & Greenberg, 1990). Indeed, although a variety of studies implicate the accumbens in bond formation (Amadei et al., 2017; Aragona et al., 2006; Scribner et al., 2020), previous work finds only weak c-Fos induction in the prairie vole accumbens during bonding (Curtis & Wang, 2003).”
We also include the following sentence in a new Discussion paragraph that focuses on caveats to our findings:
“Before offering a synthesis of our findings, it would be useful to acknowledge or reiterate a few caveats. First, as noted above, IEG induction does not capture all relevant neural activity (Sheng & Greenberg 1990). Second, the design of our experiment, which controlled for social interaction, likely excluded many circuits important to both pair bonding and sibling social interactions. Third, c-Fos activity within a given brain region may nevertheless rely on distinct cell types, and so the absence of sex differences in c-Fos immunoreactivity does not definitively rule out the sexually dimorphic circuits hypothesized in the “dual function hypothesis” (de Vries, 2004). Lastly, the current study focused on animals that were screened for sexual receptivity, which may have limited the variation in sexual behavior across opposite-sex pairs.”
Recommendations for the authors:
It appears as if df is missing from some statistical reporting.
Thank you for pointing this out. We went through the manuscript and added in sample sizes to statistical reporting.
Reviewer #1 (Recommendations for the authors):
It is surprising that the cortex was not more extensively identified as being involved in pair bonding, but perhaps this is because the emphasis for choosing brain areas in the cortical region is biased towards olfactory regions. Please discuss. It may also be worth noting that brain regions associated with perception may be important in all of these processes, but selected out because of the design.
Thank you for this observation. We agree that some cortical regions may not have been identified due to the study design. For example, social processes related to both pair bonding and cagemate recognition likely rely on overlapping circuits. It is also important to note here that our analysis approach identified the “most” significant regions. This means that several candidate regions did not survive the statistical threshold used to select regions. We now discuss the cortex in more detail in the Discussion, where we also identify the regions that approached significance but did not survive multiple test corrections:
“Although the PFC and other olfactory cortical areas formed a cluster, we did not find widespread c-Fos induction throughout the cortex in response to pairing. It seems likely that sensory and motor areas were important for social processes related to both pair-bonding and reunion with same-sex cagemates, such as investigation and recognition. Our study design, however, highlights differences between treatments, and in order to detect such effects, it might be necessary to compare mating and bonding pairs to animals left in complete isolation. Moreover, several cortical regions that did not survive corrections for multiple tests may have been identified in a less stringent analysis. Several subregions within the isocortex, hippocampal formation, and cortical subplate had statistical models that approached significance (i.e., p-values < 0.1) prior to multiple test corrections. These subregions were found within primary somatosensory area, primary auditory area, dorsal and ventral auditory areas, primary visual area, anteromedial visual area, agranular insular area, temporal association areas, ectorhinal area, postsubiculum, and basomedial amygdala. Frontal cortex subregions were within the agranular insular area and orbital area, as well as additional subregions in prelimbic and infralimbic areas of the PFC.”
Same-sex siblings were isolated for 4-5 days and then repaired. This is a creative way of dealing with this, but was any aggression displayed in the same-sex pairs? Are there bonds or preferences among same-sex individuals? Could the isolation have set the stage for neural changes associated with migrating from the natal group? 4-5 days of isolation is not trivial.
Thank you for these questions. We did not witness aggression between same-sex pairs. We had recorded ‘aggression’ events (lunges and chases) during the 1 h behavioral observation epochs and found that these rates were nearly zero for all sibling timepoint groups (events/h per focal animal in mean ± sd: 2.5 h group = 0.58 ± 1.53, 6 h group = 0.17 ± 0.48, 22 h group = 0.25 ± 0.44).
The question about peer relationships is a good one. Previous literature does suggest that prairie voles can develop preferences for familiar same-sex individuals (e.g., Beery et al. 2018 Front. Behav. Neuro., Lee et al. 2019 Front. Behav. Neuro). Thus, we want to reiterate here that our study design tests for differences between these baseline levels of affiliation with pair bonding in a reproductive context.
It is possible that the period of isolation prior to experiments may have set the stage for neural changes associated with migration from the natal group. Testing this possibility is outside the scope of the current study. We want to point out here that animals were separated from their natal groups several weeks prior to the experiment. Animals were weaned at 21 days and put into same-sex cages, and then experiments occurred between 8-12 weeks of age. All experiment groups went through the same weaning and co-housing conditions.
Pg 26, Line 655: "better" is listed twice in the sentence and only one is needed
Thank you for catching this typo. This is fixed.
Reviewer #2 (Recommendations for the authors):
Why was it necessary to bring voles into estrus when they are induced ovulators? The authors need to state how voles were brought into estrus.
Thank you for this suggestion. We explained estrus induction in the Methods, but this explanation could be missed because it was within the “Behavioral procedures” section. We put the paragraph about estrus induction into a new section called “Estrus induction and animal selection”. We also elaborated on the final sentences of this paragraph to provide a clearer rationale:
“We used this mating assay to restrict study subjects to voles that showed lordosis (females) or mounting behavior (males). By selecting voles who showed sexual behavior, we could control the estrus state and timing of mating across the 0, 2.5, 6 and 22 h study groups. This selection process also ensured that animals assigned to the same-sex sibling pair and opposite-sex mating pair groups had similar sexual motivation and experience.”
I assume in the final manuscript the authors will release the availability of the atlas? Making the atlas public seems to be in the spirit of the eLife publishing model.
The prairie vole reference brain, atlas, and atlas annotation labels, are now included on the Figshare repository site. We updated the Data and code availability section to clarify this.
Reviewer #3 (Recommendations for the authors):
Please clarify in the Methods if same-sex sibling females were also estrogen primed. If not, could the estrogen exposure cause Fos differences?
Thank you for this suggestion. All females were estrogen primed. We refined the Methods section “Estrus induction and animal selection” to make this part of the study design clearer. We edited one of the sentences to say “During this isolation period, all females were induced into estrus[...]” We also added a couple sentences at the end of this paragraph:
“By selecting voles who showed sexual behavior, we could control the estrus state and timing of mating across the 0, 2.5, 6 and 22 h study groups. This selection process also ensured that animals assigned to the same-sex sibling pair and opposite-sex mating pair groups had similar sexual motivation and experience.”
-
-
www.biorxiv.org www.biorxiv.org
-
Author Response:
Reviewer #1 (Public Review):
[...] Weaknesses:
- I feel the authors need to justify why flow-crushing helps localization specificity. There is an entire family of recent papers that aim to achieve higher localization specificity by doing the exact opposite. Namely, MT or ABC fRMRI aims to increase the localization specificity by highlighting the intravascular BOLD by means of suppressing non-flowing tissue. To name a few:
Priovoulos, N., de Oliveira, I.A.F., Poser, B.A., Norris, D.G., van der Zwaag, W., 2023. Combining arterial blood contrast with BOLD increases fMRI intracortical contrast. Human Brain Mapping hbm.26227. https://doi.org/10.1002/hbm.26227.
Pfaffenrot, V., Koopmans, P.J., 2022. Magnetization Transfer weighted laminar fMRI with multi-echo FLASH. NeuroImage 119725. https://doi.org/10.1016/j.neuroimage.2022.119725
Schulz, J., Fazal, Z., Metere, R., Marques, J.P., Norris, D.G., 2020. Arterial blood contrast ( ABC ) enabled by magnetization transfer ( MT ): a novel MRI technique for enhancing the measurement of brain activation changes. bioRxiv. https://doi.org/10.1101/2020.05.20.106666
Based on this literature, it seems that the proposed method will make the vein problem worse, not better. The authors could make it clearer how they reason that making GE-BOLD signals more extra-vascular weighted should help to reduce large vein effects.
The empirical evidence for the claim that flow crushing helps with the localization specificity should be made clearer. The response magnitude with and without flow crushing looks pretty much identical to me (see Fig, 6d). It's unclear to me what to look for in Fig. 5. I cannot discern any layer patterns in these maps. It's too noisy. The two maps of TE=43ms look like identical copies from each other. Maybe an editorial error?
The authors discuss bipolar crushing with respect to SE-BOLD where it has been previously applied. For SE-BOLD at UHF, a substantial portion of the vein signal comes from the intravascular compartment. So I agree that for SE-BOLD, it makes sense to crush the intravascular signal. For GE-BOLD however, this reasoning does not hold. For GE-BOLD (even at 3T), most of the vein signal comes from extravascular dephasing around large unspecific veins, and the bipolar crushing is not expected to help with this.
The authors would like to clarify that the velocity-nulling gradient is NOT designed to suppress all the contributions from intravascular blood. Instead, we tried to find a balance so that the VN gradient maximally suppressed the macrovascular signal in unspecific veins but minimally attenuated the microvascular signal in specific capillary bed. We acknowledge the reviewer's concern regarding the potential extravascular contributions from large, non-specific vessels. This aspect will be thoroughly evaluated and addressed in the revised manuscript. Additionally, we will make clarifications in other parts that may have cause the reviewer’s misunderstandings.
- The bipolar crushing is limited to one single direction of flow. This introduces a lot of artificial variance across the cortical folding pattern. This is not mentioned in the manuscript. There is an entire family of papers that perform layer-fmri with black-blood imaging that solves this with a 3D contrast preparation (VAPER) that is applied across a longer time period, thus killing the blood signal while it flows across all directions of the vascular tree. Here, the signal cruising is happening with a 2D readout as a "snap-shot" crushing. This does not allow the blood to flow in multiple directions. VAPER also accounts for BOLD contaminations of larger draining veins by means of a tag-control sampling. The proposed approach here does not account for this contamination.
Chai, Y., Li, L., Huber, L., Poser, B.A., Bandettini, P.A., 2020. Integrated VASO and perfusion contrast: A new tool for laminar functional MRI. NeuroImage 207, 116358. https://doi.org/10.1016/j.neuroimage.2019.116358
Chai, Y., Liu, T.T., Marrett, S., Li, L., Khojandi, A., Handwerker, D.A., Alink, A., Muckli, L., Bandettini, P.A., 2021. Topographical and laminar distribution of audiovisual processing within human planum temporale. Progress in Neurobiology 102121. https://doi.org/10.1016/j.pneurobio.2021.102121
If I would recommend anyone to perform layer-fMRI with blood crushing, it seems that VAPER is the superior approach. The authors could make it clearer why users might want to use the unidirectional crushing instead.
We acknowledge that the degree of velocity nulling varies across the cortical folding pattern. We intend to discuss potential solutions to address this variance, and these may be implemented in the revised manuscript as appropriate. Furthermore, we will provide a comprehensive discussion on the advantages and disadvantages of both CBV-based and BOLD-based approaches.
- The comparison with VASO is misleading. The authors claim that previous VASO approaches were limited by TRs of 8.2s. The authors might be advised to check the latest literature of the last years. Koiso et al. performed whole brain layer-fMRI VASO at 0.8mm at 3.9 seconds (with reliable activation), 2.7 seconds (with unconvincing activation pattern, though), and 2.3 (without activation). Also, whole brain layer-fMRI BOLD at 0.5mm and 0.7mm has been previously performed by the Juelich group at TRs of 3.5s (their TR definition is 'fishy' though).
Koiso, K., Müller, A.K., Akamatsu, K., Dresbach, S., Gulban, O.F., Goebel, R., Miyawaki, Y., Poser, B.A., Huber, L., 2023. Acquisition and processing methods of whole-brain layer-fMRI VASO and BOLD: The Kenshu dataset. Aperture Neuro 34. https://doi.org/10.1101/2022.08.19.504502
Yun, S.D., Pais‐Roldán, P., Palomero‐Gallagher, N., Shah, N.J., 2022. Mapping of whole‐cerebrum resting‐state networks using ultra‐high resolution acquisition protocols. Human Brain Mapping. https://doi.org/10.1002/hbm.25855
Pais-Roldan, P., Yun, S.D., Palomero-Gallagher, N., Shah, N.J., 2023. Cortical depth-dependent human fMRI of resting-state networks using EPIK. Front. Neurosci. 17, 1151544. https://doi.org/10.3389/fnins.2023.1151544
The authors are correct that VASO is not advised as a turn-key method for lower brain areas, incl. Hippocampus and subcortex. However, the authors use this word of caution that is intended for inexperienced "users" as a statement that this cannot be performed. This statement is taken out of context. This statement is not from the academic literature. It's advice for the 40+ user base that wants to perform layer-fMRI as a plug-and-play routine tool in neuroscience usage. In fact, sub-millimeter VASO is routinely being performed by MRI-physicists across all brain areas (including deep brain structures, hippocampus etc). E.g. see Koiso et al. and an overview lecture from a layer-fMRI workshop that I had recently attended: https://youtu.be/kzh-nWXd54s?si=hoIJjLLIxFUJ4g20&t=2401
Thus, the authors could embed this phrasing into the context of their own method that they are proposing in the manuscript. E.g. the authors could state whether they think that their sequence has the potential to be disseminated across sites, considering that it requires slow offline reconstruction in Matlab? Do the authors think that the results shown in Fig. 6c are suggesting turn-key acquisition of a routine mapping tool? In my humble opinion, it looks like random noise, with most of the activation outside the ROI (in white matter).
Those literatures will be included and discussed in the revised manuscript. Furthermore, we are considering the exclusion of the LGN results presented in Figure 6, as they may divert attention from the primary focus of the study.
We are enthusiastic about sharing our imaging sequence, provided its usefulness is conclusively established. However, it's important to note that without an online reconstruction capability, such as the ICE, the practical utility of the sequence may be limited. Unfortunately, we currently don’t have the manpower to implement the online reconstruction. Nevertheless, we are more than willing to share the offline reconstruction codes upon request.
- The repeatability of the results is questionable. The authors perform experiments about the robustness of the method (line 620). The corresponding results are not suggesting any robustness to me. In fact, the layer profiles in Fig. 4c vs. Fig 4d are completely opposite. The location of peaks turns into locations of dips and vice versa. The methods are not described in enough detail to reproduce these results. The authors mention that their image reconstruction is done "using in-house MATLAB code" (line 634). They do not post a link to github, nor do they say if they share this code.
It is not trivial to get good phase data for fMRI. The authors do not mention how they perform the respective coil-combination. No data are shared for reproduction of the analysis.
There may have been a misunderstanding regarding the presentation in Figure 4, which illustrates the impact of TEs and the VN gradient. To enhance clarity and avoid further confusion, we will redesign this figure for improved comprehension.
The authors are open to sharing the MATLAB codes associated with our study. However, we were limited by manpower for refining and enhancing the readability of these codes for broader use.
Regarding the coil combination, we utilized an adaptive coil combination approach as described in the paper by Walsh DO, Gmitro AF, and Marcellin MW, titled 'Adaptive reconstruction of phased array MR imagery' (Magnetic Resonance in Medicine 2000; 43:682-690). The MATLAB code for this method was implemented by Dr. Diego Hernando. We will include a link for downloading this code in the revised manuscript for the convenience of interested readers.
- The application of NODRIC is not validated. Previous applications of NORDIC at 3T layer-fMRI have resulted in mixed success. When not adjusted for the right SNR regime it can result in artifactual reductions of beta scores, depending on the SNR across layers. The authors could validate their application of NORDIC and confirm that the average layer-profiles are unaffected by the application of NORDIC. Also, the NORDIC version should be explicitly mentioned in the manuscript.
Akbari, A., Gati, J.S., Zeman, P., Liem, B., Menon, R.S., 2023. Layer Dependence of Monocular and Binocular Responses in Human Ocular Dominance Columns at 7T using VASO and BOLD (preprint). Neuroscience. https://doi.org/10.1101/2023.04.06.535924
Knudsen, L., Guo, F., Huang, J., Blicher, J.U., Lund, T.E., Zhou, Y., Zhang, P., Yang, Y., 2023. The laminar pattern of proprioceptive activation in human primary motor cortex. bioRxiv. https://doi.org/10.1101/2023.10.29.564658
During our internal testing, we observed that the NORDIC denoising process did not alter the activation patterns. These findings will be incorporated into the revised manuscript. The details of NORDIC will be provided as well.
Reviewer #2 (Public Review):
[...] The well-known double peak feature in M1 during finger tapping was used as a test-bed to evaluate the spatial specificity. They were indeed able to demonstrate two distinct peaks in group-level laminar profiles extracted from M1 during finger tapping, which was largely free from superficial bias. This is rather intriguing as, even at 7T, clear peaks are usually only seen with spatially specific non-BOLD sequences. This is in line with their simple simulations, which nicely illustrated that, in theory, intravascular macrovascular signals should be suppressible with only minimal suppression of microvasculature when small b-values of the VN gradients are employed. However, the authors do not state how ROIs were defined making the validity of this finding unclear; were they defined from independent criteria or were they selected based on the region mostly expressing the double peak, which would clearly be circular? In any case, results are based on a very small sub-region of M1 in a single slice - it would be useful to see the generalizability of superficial-bias-free BOLD responses across a larger portion of M1.
Given the individual variations in the location of the M1 region, we opted for manual selection of the ROI. In the revised manuscript, we plan to explore and implement an independent criterion for ROI selection to enhance the objectivity and reproducibility of our methodology.
As repeatedly mentioned by the authors, a laminar fMRI setup must demonstrate adequate functional sensitivity to detect (in this case) BOLD responses. The sensitivity evaluation is unfortunately quite weak. It is mainly based on the argument that significant activation was found in a challenging sub-cortical region (LGN). However, it was a single participant, the activation map was not very convincing, and the demonstration of significant activation after considerable voxel-averaging is inadequate evidence to claim sufficient BOLD sensitivity. How well sensitivity is retained in the presence of VN gradients, high acceleration factors, etc., is therefore unclear. The ability of the setup to obtain meaningful functional connectivity results is reassuring, yet, more elaborate comparison with e.g., the conventional BOLD setup (no VN gradients) is warranted, for example by comparison of tSNR, quantification and comparison of CNR, illustration of unmasked-full-slice activation maps to compare noise-levels, comparison of the across-trial variance in each subject, etc. Furthermore, as NORDIC appears to be a cornerstone to enable submillimeter resolution in this setup at 3T, it is critical to evaluate its impact on the data through comparison with non-denoised data, which is currently lacking.
We appreciate the reviewer’s comments. Those issues will be addressed carefully.
Reviewer #3 (Public Review):
[...] Weaknesses: - Although the VASO acquisition is discussed in the introduction section, the VN-sequence seems closer to diffusion-weighted functional MRI. The authors should make it more clear to the reader what the differences are, and how results are expected to differ. Generally, it is not so clear why the introduction is so focused on the VASO acquisition (which, curiously, lacks a reference to Lu et al 2013). There are many more alternatives to BOLD-weighted imaging for fMRI. CBF-weighted ASL and GRASE have been around for a while, ABC and double-SE have been proposed more recently.
The principal distinction between DW-fMRI and our methodology lies in the level of the b-value employed. DW-fMRI typically measures cellular swelling by utilizing a b-value greater than 1000 s/mm^2 (e.g. 1800). Conversely, our Velocity Nulling functional MRI (VN-fMRI) approach continues to assess hemodynamic responses, utilizing a smaller b-value specifically for the suppression of signals from draining veins. In addition, other layer-fMRI methods will be discussed.
- The comparison in Figure 2 for different b-values shows % signal changes. However, as the baseline signal changes dramatically with added diffusion weighting, this is rather uninformative. A plot of t-values against cortical depth would be much more insightful.
- Surprisingly, the %-signal change for a b-value of 0 is not significantly different from 0 in the gray matter. This raises some doubts about the task or ROI definition. A finger-tapping task should reliably engage the primary motor cortex, even at 3T, and even in a single participant.
- The BOLD weighted images in Figure 3 show a very clear double-peak pattern. This contradicts the results in Figure 2 and is unexpected given the existing literature on BOLD responses as a function of cortical depth.
In our study, the TE in Figure 2 is shorter than that in Figure 3 (33 ms versus 43 ms). It has been reported in the literature that BOLD fMRI with a shorter TE tends to include a greater intravascular contribution. Acknowledging this, we plan to repeat the experiments with a controlled TE to ensure consistency in our results.
- Given that data from Figures 2, 3, and 4 are derived from a single participant each, order and attention affects might have dramatically affected the observed patterns. Especially for Figure 4, neither BOLD nor VN profiles are really different from 0, and without statistical values or inter-subject averaging, these cannot be used to draw conclusions from.
The order of the experiments were randomized to ensure unbiased results.
It is important to note that the error bars presented in Figures 2, 3, and 4 do not represent the standard deviation of the residual fitting error. Instead, they illustrate the variation across voxels within a specific layer. This approach may lead to the error bars being influenced by the selection of the Region of Interest (ROI). In light of this, we intend to refine our statistical methodologies in the revised manuscript to address this issue.
- In Figure 5, a phase regression is added to the data presented in Figure 4. However, for a phase regression to work, there has to be a (macrovascular) response to start with. As none of the responses in Figure 4 are significant for the single participant dataset, phase regression should probably not have been undertaken. In this case, the functional 'responses' appear to increase with phase regression, which is contra-intuitive and deserves an explanation.
- Consistency of responses is indeed expected to increase by a removal of the more variable vascular component. However, the microvascular component is always expected to be smaller than the combination of microvascular + macrovascular responses. Note that the use of %signal changes may obscure this effect somewhat because of the modified baseline. Another expected feature of BOLD profiles containing both micro- and microvasculature is the draining towards the cortical surface. In the profiles shown in Figure 7, this is completely absent. In the group data, no significant responses to the task are shown anywhere in the cortical ribbon.
- Although I'd like to applaud the authors for their ambition with the connectivity analysis, I feel that acquisitions that are so SNR starved as to fail to show a significant response to a motor task should not be used for brain wide directed connectivity analysis.
We agree that exploring brain-wide directed functional connectivity may be overly ambitious at this stage, particularly before the VN-fMRI technique has been comprehensively evaluated and validated. In the revised manuscript, we will focus more on examining the characteristics of the layer-dependent BOLD signal rather than delving into layer-dependent functional connectivity.
-
-
www.biorxiv.org www.biorxiv.org
-
Joint Public Review:
The authors are trying to distinguish between four models of the role of glypicans (HSPGs) on the Dpp/BMP gradient in the Drosophila wing, schematized in Fig. 1: (1) "Restricted diffusion" (HSPGs transport Dpp via repetitive interaction of HS chains with Dpp); (2) "Hindered diffusion" (HSPGs hinder Dpp spreading via reversible interaction of HS chains with Dpp); (3) "Stabilization" (HSPGs stabilize Dpp on the cell surface via reversible interaction of HS chains with Dpp that antagonizes Tkv-mediated Dpp internalization); and (4) "Recycling" (HSPGs internalize and recycle Dpp).
To distinguish between these models, the authors generate new alleles for the glypicans Dally and Dally-like protein (Dlp) and for Dpp: a Dally knock-out allele, a Dally YFP-tagged allele, a Dally knock-out allele with 3HA-Dlp, a Dlp knock-out allele, a Dlp allele containing 3-HA tags, and a Dpp lacking the HS-interacting domain. Additionally, they use an OLLAS-tag Dpp (OLLAS being an epitope tag against which extremely high affinity antibodies exist). They examine OLLAS-Dpp or HA-Dpp distribution, phospho-Mad staining, adult wing size.
They find that over-expressed Dally - but not Dlp - expands Dpp distribution in the larval wing disc. They find that the Dally[KO] allele behaves like a Dally strong hypomorph Dally[MH32]. The Dally[KO] - but not the Dlp[KO] - caused reduced pMad in both anterior and posterior domains and reduced adult wing size (particularly in the Anterior-Posterior axis). These defects can be substantially corrected by supplying an endogenously tagged YFP-tagged Dally. By contrast, they were not rescued when a 3xHA Dlp was inserted in the Dally locus. These results support their conclusion that Dpp interacts with Dally but not Dlp.
They next wanted to determine the relative contributions of the Dally core or the HS chains to the Dpp distribution. To test this, they over-expressed UAS-Dally or UAS-Dally[deltaHS] (lacking the HS chains) in the dorsal wing. Dally[deltaHS] over-expression increased the distribution of OLLAS-Dpp but caused a reduction in pMad. They do a critical experiment, making the Dally[deltaHS] allele, they find that loss of the HS chains is nearly as severe as total loss of Dally (i.e., Dally[KO]). These results indicate that the HS are critical for Dally's role in Dpp distribution and signaling.
Prior work has shown that a stretch of 7 amino acids in the Dpp N-terminal domain is required to interact with heparin but not with Dpp receptors (Akiyama, 2008). The authors generated an HA-tagged Dpp allele lacking these residues (HA-dpp[deltaN]). It is an embryonic lethal allele, but they can get some animals to survive to larval stages if they also supply a transgene called "JAK" containing dpp regulatory sequences. In the JAK; HA-dpp[deltaN] mutant background, they find that the distribution and signaling of this Dpp molecule is largely normal. While over-expressed Dally can increase the distribution of HA-dpp[deltaN], over-expression of Dally[deltaHS] cannot. These latter results support the model that the HS chains in Dally are required for Dpp function but not because of a direct interaction with Dpp.
In the last part of the results, they attempt to determine if the Dpp receptor Thickveins (Tkv) is required for Dally-HS chains interaction. The 2008 (Akiyama) model posits that Tkv activates pMad downstream of Dpp and also internalizes and degrades Dpp. A 2022 (Romanova-Michaelides) model proposes that Dally (not Tkv) internalizes Dpp. To distinguish between these models, the authors deplete Tkv from the dorsal compartment of the wing disc and found that extracellular Dpp increased and expanded in that domain. These results support the model that Tkv is required to internalize Dpp. They then tested the model that Dally antagonizes Tkv-mediated Dpp internalization by determining whether the defective extracellular Dpp distribution in Dally[KO] mutants could be rescued by depleting Tkv. Extracellular Dpp did increase in the D vs V compartment, potentially providing some support for their model. The results are statistically significant but the statistics are buried in an excel file without a read-me page. The code for the statistics is available from Github. These p values should be made more readily accessible and/or intelligible to the reader.
Strengthens:<br /> 1. New genomically-engineered alleles<br /> A considerable strength of the study is the generation and characterization of new Dally, Dlp and Dpp alleles. These reagents will be of great use to the field.
2. Surveying multiple phenotypes<br /> The authors survey numerous parameters (Dpp distribution, Dpp signaling (pMad) and adult wing phenotypes) which provides many points of analysis.
Weaknesses (minor):<br /> 1. The results are statistically significant but the statistics are buried in a dense excel file without a read-me page. The code for the statistics is available from Github. These p values should be made more readily accessible to the reader.
An appraisal of whether the authors achieved their aims, and whether the results support their conclusions.<br /> The authors' model is that Dally (not Dlp) is required for Dpp distribution and signaling but that this is not due to a direct interaction with Dpp. Rather, they posit that Dally-HS antagonize Tkv-mediated Dpp internalization. Currently the results of the experiments could be considered consistent with their model. Finally, their results support the idea that one or more as-yet unidentified proteins interact with Dally-HS chains to control Dpp distribution and signaling in the wing disc.
There is much debate and controversy in the Dpp morphogen field. The generation of new, high quality alleles in this study will be useful to Drosophila community, and the results of this study support the concept that Tkv but not Dally regulate Dpp internalization. Thus the work could be impactful and fuel new debates among the morphogen researchers.
-
-
www.biorxiv.org www.biorxiv.org
-
Joint Public Review:
Here, the authors compare how different operationalizations of adverse childhood experience exposure related to patterns of skin conductance response during a fear conditioning task. They use a large dataset to definitively understand a phenomenon that, to date, has been addressed using a range of different definitions and methods, typically with insufficient statistical power. Specifically, the authors compared the following operationalizations: dichotomization of the sample into "exposed" and "non-exposed" categories, cumulative adversity exposure, specificity of adversity exposure, and dimensional (threat versus deprivation) adversity exposure. The paper is thoughtfully framed and provides clear descriptions and rationale for procedures, as well as package version information and code. The authors' overall aim of translating theoretical models of adversity into statistical models, and comparing the explanatory power of each model, respectively, is an important and helpful addition to the literature. However, the analysis would be strengthened by employing more sophisticated modelling techniques that account for between-subjects covariates and the presentation of the data needs to be streamlined to make it clearer for the broad audience for which it is intended.
Strengths<br /> Several outstanding strengths of this paper are the large sample size and its primary aim of statistically comparing leading theoretical models of adversity exposure in the context of skin conductance response. This paper also helpfully reports Cohen's d effect sizes, which aid in interpreting the magnitude of the findings. The methods and results are generally thorough.
Weaknesses<br /> The largest concern is that the paper primarily relies on ANOVAs and pairwise testing for its analyses and does not include between-subjects covariates. Employing mixed-effects models instead of ANOVAs would allow more sophisticated control over sources of random variance in the sample (especially important for samples from multi-site studies such as the present study), and further allow the inclusion of potentially relevant between-subjects covariates such as age (e.g. Eisenstein et al., 1990) and gender identity or sex assigned at birth (e.g. Kopacz II & Smith, 1971) (perhaps especially relevant due to possible to gender or sex-related differences in ACE exposure; e.g. Kendler et al., 2001). Also, proxies for socioeconomic status (e.g. income, education) can be linked with ACE exposure (e.g. Maholmes & King, 2012) and warrant consideration as covariates, especially if they differ across adversity-exposed and unexposed groups. On a related methodological note, the authors mention that scores representing threat and deprivation were not problematically collinear due to VIFs being <10; however, some sources indicate that VIFs should be <5 (e.g. Akinwande et al., 2015).
Additionally, the paper reports that higher trait anxiety and depression symptoms were observed in individuals exposed to ACEs, but it would be helpful to report whether patterns of SCR were in turn associated with these symptom measures and whether the different operationalizations of ACE exposure displayed differential associations with symptoms. Given the paper's framing of SCR as a potential mechanistic link between adversity and mental health problems, reporting these associations would be a helpful addition. These results could also have implications for the resilience interpretation in the discussion (lines 481-485), which is a particularly important and interesting interpretation.
Given that the manuscript criticizes the different operationalizations of childhood adversity, there should be greater justification of the rationale for choosing the model for the main analyses. Why not the 'cumulative risk' or 'specificity' model? Related to this, there should also be a stronger justification for selecting the 'moderate' approach for the main analysis. Why choose to cut off at moderate? Why not severe, or low? Related to this, why did they choose to cut off at all? Surely one could address this with the continuous variable, as they criticize cut-offs in Table 2.
In the Introduction, the authors predict less discrimination between signals of danger (CS+) and safety (CS-) in trauma-exposed individuals driven by reduced responses to the CS+. Given the potential impact of their findings for a larger audience, it is important to give greater theoretical context as to why CS discrimination is relevant here, and especially what a reduction in response specifically to danger cues would mean (e.g. in comparison to anxiety, where safety learning is impacted).
-
-
superfastpython.com superfastpython.com
-
Measure Execution Time With time.process_time()
The
time.process_time()reports the time that the current process has been executed.The time begins or is zero when the current process is first created.
Calculated as the sum of the system time and the user time:
process time = user time + system time
System time is time that the CPU is spent executing system calls for the kernel (e.g. the operating system)
User time is time spent by the CPU executing calls in the program (e.g. your code).
When a program loops through an array, it is accumulating user CPU time. Conversely, when a program executes a system call such as
execorfork, it is accumulating system CPU time.The reported time does not include sleep time.
This means if the process is blocked by a call to
time.sleep()or perhaps is suspended by the operating system, then this time is not included in the reported time. This is called a “process-wide” time.As such, it only reports the time that the current process was executed since it was created by the operating system.
-
It is critical to be systematic when benchmarking code.
The first step is to record how long an unmodified version of the program takes to run. This provides a baseline in performance to which all other versions of the program must be compared. If we are adding concurrency, then the unmodified version of the program will typically perform tasks sequentially, e.g. one-by-one.
The performance of the modified versions of the program must have better performance than the unmodified version of the program. If they do not, they are not improvements and should not be adopted.
-
Benchmarking Python code refers to comparing the performance of one program to variations of the program.
-
-
premiumliving.ph premiumliving.ph
-
09989838309 / 09178393585
if you are targeting international clients, I would add the country code +63 instead of just 0917... etc
-
-
www.biorxiv.org www.biorxiv.org
-
Reviewer #2 (Public Review):
This paper introduces a new model that aims to explain the generators of temporal decoding matrices (TGMs) in terms of underlying signal properties. This is important because TGMs are regularly used to investigate neural mechanisms underlying cognitive processes, but their interpretation in terms of underlying signals often remains unclear. Furthermore, neural signals are often variant over different instances of stimulation despite behaviour being relatively stable. The author aims to tackle these concerns by developing a generative model of electrophysiological data and then showing how different parameterizations can explain different features of TGMs. The developed technique is able to capture empirical observations in terms of fundamental signal properties. Specifically, the model shows that complexity is necessary in terms of spatial configuration, frequencies and latencies to obtain a TGM that is comparable to empirical data.
The major strength of the paper is that the novel technique has the potential to further our understanding of the generators of electrophysiological signals which are an important way to understand brain function. The paper clearly outlines how the method can be used to capture empirical data. Furthermore, the used techniques are state-of-the-art and the developed model is publicly shared in open source code.
On the other hand, there is no unambiguous mapping between neurobiological mechanisms and different signal generators, making it hard to draw firm conclusions about neural underpinnings based on this analysis.
-
-
superfastpython.com superfastpython.com
-
Error 3: Using the Low-Level Asyncio API
A big problem with beginners is that they use the wrong asyncio API.
This is common for a number of reasons.
- The API has changed a lot with recent versions of Python.
- The API docs page makes things confusing, showing both APIs.
- Examples elsewhere on the web mix up using the different APIs.
Using the wrong API makes things more verbose (e.g. more code), more difficult, and way less understandable.
Asyncio offers two APIs:
- High-level API for application developers (us)
- Low-level API for framework and library developers (not us)
The lower-level API provides the foundation for the high-level API and includes the internals of the event loop, transport protocols, policies, and more.
We should almost always stick to the high-level API. We absolutely must stick to the high-level API when getting started.
We may dip into the low-level API to achieve specific outcomes on occasion.
If you start getting a handle on the event loop or use a “loop” variable to do things, you are doing it wrong.
I am not saying don’t learn the low-level API. Go for it. It’s great. Just don’t start there.
Drive asyncio via the high-level API for a while. Develop some programs. Get comfortable with asynchronous programming and running coroutines at will. Then later, dip in and have a look around.
-
-
www.mary-kinuko.com www.mary-kinuko.com
-
most elements would be better served utilizing modals.
I really like how you're using your heading for each section to succinctly describe why you used each method and what it helped with but I think these snippets where you describe what decisions were actually made during each method should also have some prominence. I'm wondering if you could use your red text style here to code these takeaways?
-
-
www.biorxiv.org www.biorxiv.org
-
Reviewer #2 (Public Review):
In this interesting work on the neuropharmacological effects of ketamine, the authors conducted a pharmacological functional magnetic resonance imaging (fMRI) study in 40 healthy participants receiving bolus and constant infusion of ketamine during resting-state fMRI. Data were preprocessed with the human connectome-based standard pipeline previously successfully used by the lab (FS parcellation and application of an atlas published by the group, HCP pipeline, FSL, global brain connectivity with and without global-signal regression). Briefly, GBC and principle component maps of the positive and negative syndrome scale (PANSS) were related to somatostatin and parvalbumin cortical gene expression patterns. In addition, the authors compared the effective dimensionality, i.e. eigenvalues of covariance matrices of drug vs. placebo, and found higher complexity of responses in ketamine vs. LSD and psilocybin, which is very interesting. Also, there was substantial inter-individual variation in behavioral and neurobehavioral results, which was captured by PC and GBC maps. In supplementary results, the authors also showed that the principle component PS1 highly correlated with the fMRI global signal.
Although a complex set of analyses is presented, the paper is written very clearly and understandable. The authors did a good job of outlining the steps of their analyses in supplemental diagrams and the source code is provided. As a general remark, I consider the main strength of this work, to acknowledge the very diverse inter-individual variation of ketamine's effects and to use advanced methodological approaches to disentangle these.
Since the drug also exhibits strong variation in clinical antidepressant responses, the methodology applied here will very likely yield interesting results applied in clinical datasets of patients with major depressive disorder.
-
-
-
When should you use threading, and when should you use asyncio?
When you're writing new code, use asyncio. If you need to interface with older libraries or those that don't support asyncio, you might be better off with threading.
-
What does it mean when something is non-blocking?
"Non-blocking" means a program will allow other threads to continue running while it's waiting. This is opposed to "blocking" code, which stops execution of your program completely. Normal, synchronous I/O operations suffer from this limitation.
-
What is a thread?
A thread is a way of allowing your computer to break up a single process/program into many lightweight pieces that execute in parallel. Somewhat confusingly, Python's standard implementation of threading limits threads to only being able to execute one at a time due to something called the Global Interpreter Lock (GIL). The GIL is necessary because CPython's (Python's default implementation) memory management is not thread-safe. Because of this limitation, threading in Python is concurrent, but not parallel. To get around this, Python has a separate
multiprocessingmodule not limited by the GIL that spins up separate processes, enabling parallel execution of your code. Using themultiprocessingmodule is nearly identical to using thethreadingmodule.Asynchronous nature of threading: as one function waits, another one begins, and so on.
-
when we join threads with thread.join(), all we're doing is ensuring the thread has finished before continuing on with our code.
-
-
mp.weixin.qq.com mp.weixin.qq.com
-
文章主要讨论了LLM(大型语言模型)在集成开发环境(IDE)中的应用,以及这种应用如何改变软件开发的方式。文章的核心要点包括:
-
IDE是开发者的超级入口,LLM为IDE的商业化带来新机遇。LLM能够提供更具差异化的用户体验,使得非技术背景的用户也能够更好地进行程序编写。
-
IDE是探索LLM复杂推理能力的最好场景。LLM的能力边界逐步从代码补全渗透到代码重构、测试、Debug和分析等高价值环节。
-
软件开发将迎来“Excel时刻”,而IDE则是巨变的关键入口。LLM将使得各行业的非技术人群能为自己的工作编写小程序,调用LLM功能、Code Agents就像在Excel里使用公式一样简单。
-
轻量程序的开发流程再革新,对需求描述和测试的AI Agents市场将涌现,而IDE有望成为Agents的分发平台。
对于普通程序员来说,这些变化带来了许多启示和机会:
-
提升技能:理解并掌握LLM的使用,将有助于提升编程效率,也是未来编程的重要技能。
-
创新机会:LLM在IDE中的应用还处于初级阶段,有很多创新的可能性。程序员可以尝试开发新的LLM-based服务、Code Agents等,提供更个性化、更高效的编程工具。
-
数据安全和合规性:随着LLM的广泛应用,数据安全和合规性问题日益突出。程序员需要对此有深入理解,以便在开发过程中避免相关问题。
-
新的就业机会:随着LLM在IDE中的应用,将会出现新的就业机会,如LLM模型的训练、优化,以及基于LLM的软件开发等。
-
提高编程效率:LLM的应用可以大大提高编程效率,减少编程过程中的重复劳动,使程序员可以更多地关注创新和解决复杂问题。
-
-
-
www.mostlypython.com www.mostlypython.com
-
看主体代码,主流程,折叠没有用的代码,忽略注释
-
